Amazon EventBridge で Elastic Beanstalk を使用する - AWS Elastic Beanstalk

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

Amazon EventBridge で Elastic Beanstalk を使用する

Amazon EventBridge を使用すると、Elastic Beanstalk リソースをモニタリングし、他の AWS のサービスを使用するターゲットアクションを起動するための、イベント駆動型のルールを設定できます。たとえば、実稼働環境のヘルスステータスが Warning に変わるたびに、それを Amazon SNS トピックに伝達することで、E メール通知を送信させるルールを設定できます。または、環境のヘルスステータスが Degraded または Severe 状態に変わった場合に通知を Slack に渡すように、Lambda 関数を設定することができます。

Amazon EventBridge でルールを作成して、次の Elastic Beanstalk イベントのいずれかに反応させることが可能です。

  • 環境操作 (作成、更新、終了の各操作を含む) での状態の変化。このイベントは、状態の変更が開始された、成功した、あるいは失敗したことを示します。

  • 他のリソースの状態の変更。モニタリングされる他のリソースには、環境に加えて、ロードバランサー、Auto Scaling グループ、インスタンスなどがあります。

  • 環境のヘルスの移行。このイベントは、環境のヘルスステータスが特定の状態から別の状態に移行したことを示します。

  • マネージド更新の状態の変更。このイベントは、状態の変更が開始された、成功した、あるいは失敗したことを示します。

関心のある特定の Elastic Beanstalk イベントをキャプチャするには、そのイベント固有のパターンを定義し、イベントを検出する EventBridge がそれを照合できるようにます。イベントパターンは、一致するイベントと同じ構造をしています。イベントのパターンでは、照合する対象のフィールドを引用符で囲み、検出したい値を指定します。イベントは、ベストエフォートベースで出力されます。通常の運用状況下では、Elastic Beanstalk から EventBridge にほぼリアルタイムで配信されます。ただし、イベントの配信を遅らせたり妨げたりする状況が発生する場合もあります。

Elastic Beanstalk イベントに含まれるフィールドと、そこで使用される可能性のある文字列値のリストについては、「Elastic Beanstalk イベントフィールドマッピング」を参照してください。EventBridge ルールがイベントパターンでどのように機能するかについては、「EventBridge のイベントとイベントパターン」を参照してください。

EventBridge を使用した Elastic Beanstalk リソースの監視

EventBridge を使用してルールを作成すると、Elastic Beanstalk がリソースに対してイベントを発生したときに実行されるアクションを定義できます。たとえば、環境のステータスが変化するたびに E メールメッセージを送信するルールを作成できます。

EventBridge コンソールには、Elastic Beanstalk イベントパターンを作成するために、事前定義済みのパターンがオプションとして用意されています。ルールの作成時に EventBridge コンソールでこのオプションを選択すると、Elastic Beanstalk イベントパターンをすばやく作成することが可能です。ユーザーが必要なのは、イベントフィールドと値の選択のみです。選択を行うと、コンソールによってイベントパターンが作成され、表示されます。また、作成されたイベントパターンを手動で編集し、カスタムパターンとして保存することもできます。コンソールには、詳細なサンプルイベントも表示されるので、これをコピーして、作成中のイベントパターンに貼り付けることもできます。

EventBridge コンソールにイベントパターンを入力またはコピーする場合は、コンソールの [カスタムパターン] オプションを選択します。これにより、前述したフィールドと値を選択する手順を実行する必要がなくなります。このトピックでは、イベントマッチングパターンElastic Beanstalk イベントの両方の例をご紹介します。

リソースイベントのルールを作成するには
  1. EventBridge と Elastic Beanstalk を使用するアクセス許可を持つアカウントを使用して AWS にログインします。

  2. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  3. ナビゲーションペインで [Rules] (ルール) を選択します。

  4. [‬Create rule]‭ (ルールの作成) を選択します。

  5. ルールの [Name (名前)] を入力し、必要に応じて説明を入力します。

  6. [Event bus] (イベントバス) として、[default] (デフォルト) を選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

  7. [Rule type] (ルールタイプ) では、[Rule with an event pattern] (イベントパターンを持つルール) を選択します。

  8. [Next] を選択します。

  9. [Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。

  10. (オプション)イベント例で、AWS イベントを選択します。検索フィールドに Elastic Beanstalk と入力します。これにより、表示するサンプルの Elastic Beanstalk イベントのリストが表示されます。この手順では、参照可能なサンプルイベントが表示されるだけです。ルール作成の結果には影響しません。Elastic Beanstalk イベントの例 セクションでは、このトピックで後述する、同じタイプのイベントの例について説明します。

  11. [Event pattern] (イベントパターン) セクションで [Event pattern form] (イベントパターンフォーム) を選択します。

    注記

    すでにイベントパターンを定義するテキストがあり、EventBridge コンソールを使用してイベントパターンを作成する必要がない場合は、[カスタマーパターン (JSON エディタ)] を選択できます。その後、[イベントパターン] ボックスに対し、テキストを手動で入力するかコピーして貼り付けることができます。[] を選択し、ターゲットの入力に関するステップに進みます。

  12. [Event source] (イベントソース) では、AWS[services] (サービス) を選択します。

  13. [AWS サービス] で [Elastic Beanstalk] を選択します。

  14. [イベントタイプ ] で [ステータスの変更] を選択します。

  15. このステップでは、Elastic Beanstalk のイベントフィールドにある詳細タイプステータス重大度の処理方法について説明します。これらのフィールドと、そこで照合する値を選択することで、コンソールによってイベントパターンが作成され表示されます。

    • [特定の詳細タイプ] で値を 1 つだけ選択した場合は、階層内の次のフィールドで 1 つ以上の値を選択できます。

    • [特定の詳細タイプ] で値を複数選択した場合は、階層内の次のフィールドで特定の値を選択しないでください。イベントパターン内のフィールド間でマッチングロジックがあいまいになることを防ぐことができます。

    [環境] イベントフィールドはこの階層の影響を受けないため、次の手順で説明するように表示されます。

  16. [環境] で、[任意の環境] または [特定の環境] を選択します。

    • [特定の環境] を選択した場合は、ドロップダウンリストから 1 つまたは複数の環境を選択できます。EventBridge は、イベントパターンの [詳細] セクション の EnvironmentName[ ] リスト内で選択された、すべての環境を追加します。その後で、すべてのイベントがルールによりフィルタリングされ、選択された特定の環境のみが含められます。

    • [任意の環境] を選択した場合、環境はイベントパターンに追加されません。このため、ルールは Elastic Beanstalk イベントを、環境に基づいてフィルタリングしません。

  17. [Next] を選択します。

  18. [Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。

  19. [Select targets (ターゲットの選択)] で、Elastic Beanstalk からリソース状態変更イベントを受け取ったときに実行するターゲットアクションを選択します。

    たとえば、Amazon Simple Notification Service (SNS) トピックを使用して、イベントが発生したときに E メールまたはテキストメッセージを送信できます。これを行うには、Amazon SNS コンソールを使用して Amazon SNS トピックを作成する必要があります。詳細については、「ユーザー通知に Amazon SNS を使用する」を参照してください。

    重要

    一部のターゲットアクションでは、Amazon SNS や Lambda サービスなど他のサービスの使用が必要となり、追加料金が発生する可能性があります。AWS 料金の詳細については、「https://aws.amazon.com/pricing/」を参照してください。一部のサービスは、AWS 無料利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合があります。詳細については、「https://aws.amazon.com/free/」を参照してください。

  20. (オプション) [他のターゲットを追加] を選択し、イベントルールに対し追加のターゲットアクションを指定します。

  21. [Next] を選択します。

  22. (オプション) ルールに 1 つ以上のタグを入力します。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge のタグ」を参照してください。

  23. [Next] を選択します。

  24. ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。

Elastic Beanstalk イベントパターンの例

イベントパターンは、一致するイベントと同じ構造をしています。イベントのパターンでは、照合する対象のフィールドを引用符で囲み、検出したい値を指定します。

  • すべての環境のヘルスステータスの変更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ] }
  • 次の環境でのヘルスステータスの変更: myEnvironment1 および myEnvironment2 このイベントパターンは、これら 2 つの特定の環境にフィルタリングしますが、前出のフィルター処理をしていないヘルスステータス変更の例では、すべての環境のイベントを送信しています。

    {"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ], "detail": { "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
  • すべての環境での Elastic Beanstalk リソースステータスの変更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ] }
  • Elastic Beanstalk リソースのステータスが、次の環境で Status 環境の更新に失敗し、Severity エラーで変更されました: myEnvironment1 および myEnvironment2

    {"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ], "detail": { "Status": [ "Environment update failed" ], "Severity": [ "ERROR" ], "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
  • ロードバランサー、Auto Scaling グループ、インスタンスによる、その他のリソースステータスの変更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Other resource status change" ] }
  • すべての環境での、マネージド更新ステータスの変更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Managed update status change" ] }
  • Elastic Beanstalk からすべてのイベントをキャプチャするには (detail-type セクションを除く)

    { "source": [ "aws.elasticbeanstalk" ] }

Elastic Beanstalk イベントの例

リソースステータスの変更に対する Elastic Beanstalk イベントの例を次に示します。

{ "version":"0", "id":"1234a678-1b23-c123-12fd3f456e78", "detail-type":"Elastic Beanstalk resource status change", "source":"aws.elasticbeanstalk", "account":"111122223333", "time":"2020-11-03T00:31:54Z", "region":"us-east-1", "resources":[ "arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment" ], "detail":{ "Status":"Environment creation started", "EventDate":1604363513951, "ApplicationName":"myApplication", "Message":"createEnvironment is starting.", "EnvironmentName":"myEnvironment", "Severity":"INFO" } }

ヘルスステータスの変更に対する Elastic Beanstalk イベントの例を次に示します。

{ "version":"0", "id":"1234a678-1b23-c123-12fd3f456e78", "detail-type":"Health status change", "source":"aws.elasticbeanstalk", "account":"111122223333", "time":"2020-11-03T00:34:48Z", "region":"us-east-1", "resources":[ "arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment" ], "detail":{ "Status":"Environment health changed", "EventDate":1604363687870, "ApplicationName":"myApplication", "Message":"Environment health has transitioned from Pending to Ok. Initialization completed 1 second ago and took 2 minutes.", "EnvironmentName":"myEnvironment", "Severity":"INFO" } }

Elastic Beanstalk イベントフィールドマッピング

次の表は、Elastic Beanstalk イベントフィールドおよびそれに使用可能な文字列値と EventBridge detail-type フィールドのマッピングを示しています。EventBridge が、サービスのイベントパターンをどのように使用するかの詳細については、「EventBridge のイベントとイベントパターン」を参照してください。

EventBridge フィールドの detail-type Elastic Beanstalk フィールドのステータス Elastic Beanstalk フィールドの重大度 Elastic Beanstalk フィールドのメッセージ

Elastic Beanstalk リソースステータスの変更

環境の作成を開始しました

INFO

createEnvironment を開始しています。

環境の作成に成功しました

INFO

createEnvironment が正常に完了しました。

環境の作成に成功しました

INFO

環境: <環境名> を起動しました。ただし、起動中に問題が発生しました。詳細は、イベントログを参照してください。

環境の作成に失敗しました

ERROR

環境に起動に失敗しました。

環境の更新を開始しました

INFO

環境の更新を開始しています。

環境の更新に成功しました

INFO

環境の更新が正常に完了しました。

環境の更新に失敗しました

ERROR

設定のデプロイに失敗しました。

環境の終了を開始しました

INFO

terminateEnvironment を開始しています。

環境が正常に終了しました

INFO

terminateEnvironment が正常に完了しました。

環境の終了に失敗しました

INFO

少なくとも 1 つの環境終了ワークフローが失敗したため、環境終了ステップが失敗しました。

その他のリソースステータスの変更

Auto Scaling グループが作成されました

INFO

createEnvironment を開始しています。

Auto Scaling グループが削除されました

INFO

createEnvironment を開始しています。

インスタンスが追加されました

INFO

ご使用の環境にインスタンス [i-123456789a12b1234] を追加しました。

インスタンスが削除されました

INFO

ご使用の環境からインスタンス [i-123456789a12b1234] を削除しました。

ロードバランサーが作成されました

INFO

作成されたロードバランサーの名前: <LB 名>

ロードバランサーが削除されました

INFO

削除されたロードバランサーの名前: <LB 名>

ヘルスステータスの変更

環境ヘルスが変更されました

INFO/WARN

環境ヘルスが <healthStatus> に移行しました。

環境ヘルスが変更されました

INFO/WARN

環境ヘルスが <healthStatus> から <healthStatus> に移行しました。

マネージド更新ステータスの変更

マネージド更新が開始されました

INFO

マネージドプラットフォーム更新が進行中です。

マネージド更新に失敗しました

INFO

マネージド更新に失敗しました。%s 分後に再試行します。