

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SNS を使用した Elastic Beanstalk 環境の通知
<a name="using-features.managing.sns"></a>

Amazon Simple Notification Service (Amazon SNS) を使用して、アプリケーションに影響する重要なイベントを通知するように AWS Elastic Beanstalk 環境を設定できます。エラーが発生したり、環境の状態が変化したりする AWS たびに から E メールを受信するには、環境の作成時に E メールアドレスを指定します。

**注記**  
Elastic Beanstalk は、通知に Amazon SNS を使用します。Amazon SNS の料金については、[https://aws.amazon.com/sns/pricing/](https://aws.amazon.com/sns/pricing/) を参照してください。

環境に関する通知を設定すると、それに関連する Amazon SNS トピックが、Elastic Beanstalk により自動的に作成されます。Amazon SNS トピックにメッセージを送信するには、Elastic Beanstalk が必要なアクセス許可を持っている必要があります。詳細については、「[通知を送信するためのアクセス許可の設定](#configuration-notifications-permissions)」を参照してください。

重要な[イベント](using-features.events.md)が発生すると、Elastic Beanstalk はトピックにメッセージを送信します。そのメッセージは Amazon SNS に受信された後、トピックのサブスクライバーに中継されます。重要なイベントには、環境作成のエラーや[環境およびインスタンスのヘルスステータス](health-enhanced.md)のあらゆる変化が含まれます。Amazon EC2 Auto Scaling のオペレーションに関するイベント (環境内のインスタンスの追加や削除など) や、その他の情報関連のイベントでは通知はトリガーされません。

![\[Amazon SNS 通知 E メール\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/sns-notification-email.png)


ユーザーの E メールアドレスは、環境の作成時もしくはその後の任意の時点で、Elastic Beanstalk コンソールから入力することができます。これにより、Amazon SNS トピックが作成され、サブスクライブされるようになります。Elastic Beanstalk ではトピックのライフサイクルが管理されており、環境が終了した場合や、[環境マネジメントコンソール](environments-console.md)で E メールアドレスを削除した場合、トピックは削除されます。

`aws:elasticbeanstalk:sns:topics` 名前空間により、設定ファイルまたは CLI や SDK を使用して Amazon SNS トピックを設定するためのオプションが提供されます。これらの方法のいずれかを使用して、サブスクライバとエンドポイントのタイプを設定できます。サブスクライバーのタイプには、Amazon SQS キューまたは HTTP URL が選択可能です。

Amazon SNS 通知は、オン/オフの切り替えのみが可能です。トピックへの通知の送信頻度は、環境のサイズと構成に応じて高くなる場合があります。特定の状況に応じて通知を送信するように設定するための、他のオプションも用意されています。Amazon EventBridge で[イベント駆動型ルールを設定](AWSHowTo.eventbridge.md)しておくと、特定の基準を満たしたために Elastic Beanstalk がイベントを生成した場合の通知を受けられます。または、[カスタムメトリクスを公開するように環境を設定](health-enhanced-cloudwatch.md)し [Amazon CloudWatch アラームを設定](using-features.alarms.md)しておくと、メトリクスが異常なしきい値に達した場合に通知を出力させることも可能です。

## Elastic Beanstalk コンソールを使用した通知の設定
<a name="configuration-notifications-console"></a>

Elastic Beanstalk コンソールにメールアドレスを入力することで、環境のための Amazon SNS トピックを作成できます。

**Elastic Beanstalk コンソールで通知を設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. **[更新、モニタリング、ログ]** の設定カテゴリで、**[編集]** を選択します。

1. **[E メール通知]** セクションまで下にスクロールします。

1. メールアドレスを入力します。

1. ページの最下部で **[適用]** を選択し変更を保存します。

通知用の E メールアドレスを入力すると、Elastic Beanstalk は環境に関する Amazon SNS トピックを作成し、サブスクリプションを追加します。Amazon SNS は、サブスクライバ―のアドレスに E メールを送信し、サブスクリプションを確認します。サブスクリプションをアクティベーションして通知を受け取るには、確認メールに記載されたリンクをクリックする必要があります。

## 設定オプションを使用した通知の設定
<a name="configuration-notifications-namespace"></a>

環境に関する Amazon SNS 通知を設定するには、[`aws:elasticbeanstalk:sns:topics`名前空間](command-options-general.md#command-options-general-elasticbeanstalksnstopics)のオプションを使用します。これらのオプションは、[設定ファイル](ebextensions.md)、CLI、または SDK を使用して設定できます。
+ **通知エンドポイント** – 通知の送信先となる E メールアドレス、Amazon SQS キュー、または URL。このオプションを設定すると、指定されたエンドポイント用の SQS キューと指示書が作成されます。エンドポイントを E メールアドレスで指定しない場合は、`Notification Protocol` オプションも設定する必要があります。SNS は、`Notification Endpoint` の値に基づいて `Notification Protocol` の値を確認します。このオプションを複数回設定すると、トピックへの追加のサブスクリプションが作成されます。このオプションを削除した場合、トピックは削除されます。
+ **通知プロトコル** – `Notification Endpoint` に通知を送信するために使用されるプロトコル。このオプションのデフォルトは `email` です。このオプションを `email-json` に設定すると、JSON 形式の E メールを送信し、`http` または `https` に設定すると JSON 形式の通知を HTTP エンドポイントに投稿します。また、`sqs` に設定すると、SQS キューに通知を送信します。
**注記**  
AWS Lambda 通知はサポートされていません。
+ **通知トピックの ARN** – 環境に関する通知エンドポイントが設定された後、SNS トピックの ARN を取得するために読み取る情報。このオプションは、通知に関する既存の SNS トピックを使用するように設定することもできます。このオプションを使用して環境にアタッチしたトピックは、このオプションが変更されたり、環境が終了されても削除されません。

  Amazon SNS 通知を設定するには、適切ななアクセス許可が必要です。IAM ユーザーが Elastic Beanstalk の[管理ユーザーポリシー](AWSHowTo.iam.managed-policies.md) **AdministratorAccess-AWSElasticBeanstalk** を使用する場合には、その環境向けに Elastic Beanstalk によって作成されるデフォルトの Amazon SNS トピックを設定するためのアクセス許可が既に付与されています。ただし、Elastic Beanstalk で管理されない Amazon SNS トピックを設定する場合は、次のポリシーをご使用のユーザーロールに追加する必要があります。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "sns:SetTopicAttributes",
          "sns:GetTopicAttributes",
          "sns:Subscribe",
          "sns:Unsubscribe",
          "sns:Publish"
        ],
        "Resource": [
          "arn:aws:sns:us-east-2:123456789012:sns_topic_name"
        ]
      }
    ]
  }
  ```

------
+ **通知トピック名** – 環境の通知に使用される Amazon SNS トピックの名前を、カスタマイズする際に使用されるオプション。同じ名前のトピックが既に存在する場合、Elastic Beanstalk はそのトピックを環境にアタッチします。
**警告**  
`Notification Topic Name` を使用して既存の SNSトピックを環境にアタッチすると、以後に環境を終了したりこの設定を変更したタイミングで、Elastic Beanstalk は当該トピックを削除します。

  このオプションを変更すると `Notification Topic ARN` も変更されます。トピックが既に環境にアタッチされている場合、古いトピックは Elastic Beanstalk により削除され、新しいトピックとサブスクリプションが作成されます。

  外部で作成されたカスタムトピックを使用する場合は、そのカスタムトピックの名前に加えて ARN も指定する必要があります。管理ユーザーポリシーでは、カスタム名を持つトピックは自動的に検出されません。つまり、IAM ユーザーにはそのための Amazon SNS アクセス許可を付与する必要があります。使用するポリシーはカスタムトピック ARN にされるものと類似していますが、次の項目を追加します。
  + `Actions`リストにはさらに 2 つのアクション (具体的には `sns:CreateTopic` および `sns:DeleteTopic`) を含めます。
  + `Notification Topic Name` を別のカスタムトピック名に変更する場合は、それら両方のトピックの ARN を `Resource` リストに含める必要があります。または、両方をカバーする正規表現を含めることもできます。このように Elastic Beanstalk には、古いトピックを削除して新しいトピックを作成するための権限が付与されています。

EB CLI および Elastic Beanstalk コンソールでは、上記のオプションに推奨値が適用されます。設定ファイルを使用して同じファイルを設定する場合は、これらの設定を削除する必要があります。詳細については、「[推奨値](command-options.md#configuration-options-recommendedvalues)」を参照してください。

## 通知を送信するためのアクセス許可の設定
<a name="configuration-notifications-permissions"></a>

このセクションでは、Amazon SNS を使用する通知に関連するセキュリティ上の考慮事項について説明します。これには、次のように 2 つの異なるケースがあります。
+ Elastic Beanstalk により環境用に作成された、デフォルトの Amazon SNS トピックを使用する場合。
+ 設定オプションを使用して、外部から Amazon SNS トピックを導入する場合。

Amazon SNS トピックのデフォルトのアクセスポリシーでは、トピック所有者のみがトピックを公開またはサブスクライブできます。ただし、ポリシーを適切に設定することで、このセクションで説明されている 2 つのケースのいずれかにおいて、Elastic Beanstalk に対し Amazon SNS トピックへの公開を許可することが可能になります。この後のサブセクションで、その詳細について説明します。

### デフォルトトピックのアクセス許可
<a name="configuration-notifications-permissions-default"></a>

環境に関する通知を設定すると、Elastic Beanstalk は環境の Amazon SNS トピックを作成します。Amazon SNS トピックにメッセージを送信するには、Elastic Beanstalk が必要なアクセス許可を持っている必要があります。環境内で、Elastic Beanstalk コンソールまたは EB CLI によって生成された[サービスロール](iam-servicerole.md)を使用しているか、アカウントの[モニタリングサービスにリンクされたロール](using-service-linked-roles-monitoring.md)を使用している場合には、他に何もする必要はありません。これらの管理ロールには、Elastic Beanstalk が Amazon SNS トピックにメッセージを送信するために必要なアクセス許可が含まれています。

ただし、環境の作成時にカスタムサービスロールを設定した場合は、そのカスタムサービスロールに以下のポリシーが含まれていている必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sns:Publish"
      ],
      "Resource": [
        "arn:aws:sns:us-east-2:123456789012:ElasticBeanstalkNotifications*"
      ]
    }
  ]
}
```

------

### 外部トピックのアクセス許可
<a name="configuration-notifications-permissions-external"></a>

「[設定オプションを使用した通知の設定](#configuration-notifications-namespace)」では、Elastic Beanstalk により提供された Amazon SNS トピックを、別の Amazon SNS トピックに置き換える方法について説明しています。SNS トピックを置き換えた場合、そのトピックに対する公開がユーザーに許可されているかが、Elastic Beanstalk により確認されます。このアクセス許可は、そのトピックを環境に関連付けるために必要となります。ユーザーには `sns:Publish` が必要です。サービスロールでも同じアクセス許可を使用します。この状態となっているか確認するため、Elastic Beanstalk は環境を作成または更新するアクションの中で、テスト通知を SNS に送信します。このテストが失敗すると、当該の環境の作成または更新も失敗します。Elastic Beanstalk からは、この失敗の原因を報告するメッセージが表示されます。

環境にカスタムサービスロールを導入する場合は、そのカスタムサービスロールに次のポリシーが含まれていることを確認してください。これにより、Elastic Beanstalk が Amazon SNS トピックにメッセージを送信できるようになります。次に示すコードでは、*`sns_topic_name`* を、設定オプションで指定した Amazon SNS トピックの名前に置き換えています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sns:Publish"
      ],
      "Resource": [
        "arn:aws:sns:us-east-2:123456789012:sns_topic_name"
      ]
    }
  ]
}
```

------

 Amazon SNS アクセスコントロールの詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「[Amazon SNS アクセスコントロールのケース例](https://docs.aws.amazon.com/sns/latest/dg/sns-access-policy-use-cases.html)」を参照してください。