Amazon SNS を使用した Elastic Beanstalk 環境の通知
AWS Elastic Beanstalk 環境は、Amazon Simple Notification Service (Amazon SNS) を使用して、アプリケーションに影響を与える重要なイベントを通知するように設定できます。環境の作成時または作成後に E メールアドレスを指定しておくことで、エラーが発生した場合や環境のヘルスステータスが変化した場合に AWS からのメールを受信できます。
Elastic Beanstalk は、通知に Amazon SNS を使用します。Amazon SNS の料金については、https://aws.amazon.com/sns/pricing/
環境に関する通知を設定すると、Elastic Beanstalk は環境の Amazon SNS トピックを作成します。Amazon SNS トピックにメッセージを送信するには、Elastic Beanstalk が必要なアクセス許可を持っている必要があります。詳細については、「通知を送信するためのアクセス許可の設定」を参照してください。
重要なイベントが発生すると、Elastic Beanstalk はトピックにメッセージを送信します。Amazon SNS は、受信したメッセージをトピックのサブスクライバ―に中継します。重要なイベントには、環境作成のエラーや環境およびインスタンスのヘルスステータスのあらゆる変化が含まれます。Amazon EC2 Auto Scaling オペレーションに関するイベント (環境内のインスタンスの追加/削除) やその他の情報関連のイベントでは、通知が発生しません。

Elastic Beanstalk コンソールでは、Amazon SNS トピックを作成してサブスクライブできるように、環境の作成時または作成後に E メールアドレスの入力が求められます。Elastic Beanstalk ではトピックのライフサイクルが管理されており、環境が終了した場合や、環境マネジメントコンソールで E メールアドレスを削除した場合、トピックは削除されます。
aws:elasticbeanstalk:sns:topics
名前空間は、設定ファイルまたは CLI や SDK を使用して Amazon SNS トピックを設定する際のオプションを提供します。これらの方法を使用すると、サブスクライバーのタイプやエンドポイントを設定できるため、サブスクライバーとして
Amazon SQS キューや HTTP URL を指定することができます。
Amazon SNS 通知は、オン/オフの切り替えのみが可能です。環境のサイズや構成に応じて、トピックに送信される通知の頻度は高くなります。特定の状況下でのみ送信される通知については、カスタムメトリクスを発行するように環境を設定し、Amazon CloudWatch アラームを設定しておくことで、これらのメトリクスが異常なしきい値に達したときに通知を受信できます。
Elastic Beanstalk コンソールを使用した通知の設定
Elastic Beanstalk コンソールでは、環境に関する Amazon SNS トピックを作成するための E メールアドレスを入力できます。
Elastic Beanstalk コンソールで通知を設定するには
-
Elastic Beanstalk コンソール
を開き、[リージョン] リストで AWS リージョンを選択します。 -
ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。
注記 環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。
-
ナビゲーションペインで、[設定] を選択します。
-
[通知] 設定カテゴリで、[編集] を選択します。
-
メールアドレスを入力します。
-
[Apply] を選択します。
通知用の E メールアドレスを入力すると、Elastic Beanstalk は環境に関する Amazon SNS トピックを作成し、サブスクリプションを追加します。Amazon SNS は、サブスクライバ―のアドレスに E メールを送信し、サブスクリプションを確認します。サブスクリプションをアクティブ化して通知を受け取るには、確認用メールに記載されたリンクをクリックする必要があります。
設定オプションを使用した通知の設定
環境に関する Amazon SNS 通知を設定するには、aws:elasticbeanstalk:sns:topics名前空間のオプションを使用します。これらのオプションは、設定ファイル、CLI、または SDK を使用して設定できます。
Notification Endpoint
– 通知の送信先の E メールアドレス、Amazon SQS キュー、または URL。このオプションを設定すると、指定したエンドポイントの SQS キューやサブスクリプションが作成されます。エンドポイントが
E メールアドレスでない場合は、Notification Protocol
オプションも設定する必要があります。SNS は、Notification Endpoint
の値に基づいて Notification Protocol
の値を確認します。このオプションを複数回設定すると、トピックへの追加のサブスクリプションが作成されます。このオプションを削除すると、トピックは削除されます。
Notification Protocol
– Notification Endpoint
に通知を送信するために使用されるプロトコル。このオプションのデフォルトは email
です。このオプションを email-json
に設定すると、JSON 形式の E メールを送信し、http
または https
に設定すると JSON 形式の通知を HTTP エンドポイントに投稿します。また、sqs
に設定すると、SQS キューに通知を送信します。
AWS Lambda 通知はサポートされていません。
Notification Topic ARN
– 環境に関する通知のエンドポイントが設定された後、SNS トピックの ARN を取得するためにこの設定が読み取られます。このオプションは、通知に関する既存の SNS
トピックを使用するように設定することもできます。このオプションを使用して環境にアタッチしたトピックは、このオプションが変更されたり、環境が終了されても削除されません。
Notification Topic Name
– このオプションを設定して、環境の通知に使用される Amazon SNS トピックの名前をカスタマイズします。同じ名前のトピックが既に存在する場合、Elastic
Beanstalk はそのトピックを環境にアタッチします。
Notification Topic Name
で既存の SNSトピックが環境にアタッチされると、環境が終了した場合またはこの設定が変更された場合に Elastic Beanstalk はトピックを削除します。
このオプションを変更すると、Notification Topic ARN
も変更されます。トピックが既に環境にアタッチされている場合、Elastic Beanstalk は古いトピックを削除し、新しいトピックとサブスクリプションを作成します。
EB CLI および Elastic Beanstalk コンソールでは、上記のオプションに推奨値が適用されます。設定ファイルを使用して同じファイルを設定する場合は、これらの設定を削除する必要があります。詳細については、「推奨値」を参照してください。
通知を送信するためのアクセス許可の設定
このセクションでは、Amazon SNS を使用した通知に関連するセキュリティ上の考慮事項について説明します。2 種類のケースとして、環境用に Elastic Beanstalk によって作成されるデフォルトの Amazon SNS トピックの使用と、設定オプションを通じた外部 Amazon SNS トピックの提供があります。
デフォルトトピックのアクセス許可
環境に関する通知を設定すると、Elastic Beanstalk は環境の Amazon SNS トピックを作成します。Amazon SNS トピックにメッセージを送信するには、Elastic Beanstalk が必要なアクセス許可を持っている必要があります。Elastic Beanstalk コンソールまたは EB CLI によって生成されたサービスロール、またはアカウントのモニタリングサービスにリンクされたロールを環境で使用する場合は、他に何もする必要はありません。これらのマネージド型ロールには、必要なアクセス許可が含まれています。
ただし、環境の作成時にカスタムサービスロールを提供した場合は、そのカスタムサービスロールに以下のポリシーが含まれていることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-2
:123456789012
:ElasticBeanstalkNotifications*"
]
}
]
}
外部トピックのアクセス許可
「設定オプションを使用した通知の設定」では、Elastic Beanstalk が提供する Amazon SNS トピックを、別の Amazon SNS トピックに置き換える方法について説明しています。これを行った場合、SNS
トピックを環境に関連付けるには、この SNS トピックに発行するためのアクセス許可が求められ、Elastic Beanstalk はこれを確認する必要があります。サービスロールが持っているのと同じアクセス権限である、sns:Publish
が必要です。これを確認するため、Elastic Beanstalk は環境を作成または更新するアクションの一環として、テスト通知を SNS に送信します。このテストに失敗した場合、環境を作成または更新しようとすると失敗し、Elastic
Beanstalk は失敗について説明するメッセージを表示します。
環境用のカスタムサービスロールを提供する場合は、そのカスタムサービスロールに以下のポリシーが含まれていることを確認します。
は、設定オプションで指定した Amazon SNS トピックの名前に置き換えてください。
sns_topic_name
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-2
:123456789012
:sns_topic_name
"
]
}
]
}