

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

# Amazon EventBridge で Elastic Beanstalk を使用する
<a name="AWSHowTo.eventbridge"></a>

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 イベントフィールドマッピング](#eb-eventbridge-mapping)」を参照してください。EventBridge ルールがイベントパターンでどのように機能するかについては、「[EventBridge のイベントとイベントパターン](https://docs.aws.amazon.com//eventbridge/latest/userguide/eventbridge-and-event-patterns.html)」を参照してください。

## EventBridge を使用した Elastic Beanstalk リソースの監視
<a name="eb-eventbridge-tasks"></a>

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

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

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

**リソースイベントのルールを作成するには**

1. EventBridge と Elastic Beanstalk を使用するアクセス許可を持つアカウント AWS を使用して にログインします。

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

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

1. [**Create rule**] を選択します。

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

1. **[イベントバス]** として、**[デフォルト]** を選択してください。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに送られます。

1. **[ルールタイプ]** で、**[イベントパターンを持つルール]** を選択してください。

1. [**次へ**] を選択します。

1. **[イベントソース]** で、**[AWS イベントまたは EventBridge パートナーイベント]** を選択してください。

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

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

1. **[イベントソース]** で、**[AWS のサービス]** を選択してください。

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

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

1. このステップでは、Elastic Beanstalk のイベントフィールドにある**詳細タイプ**、**ステータス**、**重大度**の処理方法について説明します。これらのフィールドと、そこで照合する値を選択することで、コンソールによってイベントパターンが作成され表示されます。
   + **[特定の詳細タイプ]** で値を 1 つだけ選択した場合は、階層内の次のフィールドで 1 つまたは複数の値を選択できます。
   + **[特定の詳細タイプ]** で値を複数選択した場合は、階層内の次のフィールドで特定の値を選択できません。イベントパターン内のフィールド間でマッチングロジックがあいまいになることを防ぐことができます。

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

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

1. [**次へ**] を選択します。

1. **[ターゲットタイプ]** では、**[AWS サービス]** を選択します。

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

   たとえば、Amazon Simple Notification Service (SNS) トピックを使用して、イベントが発生したときに E メールまたはテキストメッセージを送信できます。これを行うには、Amazon SNS コンソールを使用して Amazon SNS トピックを作成する必要があります。詳細については、「[ユーザー通知に Amazon SNS を使用する](https://docs.aws.amazon.com//sns/latest/dg/sns-user-notifications.html)」を参照してください。
**重要**  
一部のターゲットアクションでは、Amazon SNS や Lambda サービスなど他のサービスの使用が必要となり、追加料金が発生する可能性があります。 AWS 料金の詳細については、「」を参照してください[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/)。一部のサービスは、 AWS 無料利用枠の一部です。新規のお客様は、無料でこれらのサービスをテストできる場合があります。詳細については「[https://aws.amazon.com/free/](https://aws.amazon.com/free/)」を参照してください。

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

1. [**次へ**] を選択します。

1. (オプション) ルールに 1 つ以上のタグを入力します。詳細については、*Amazon EventBridge ユーザーガイド*の[Amazon EventBridge のタグ](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)を参照してください。

1. **次へ**をクリックします。

1. ルールの詳細を確認し、**ルールの作成** を選択します。

## Elastic Beanstalk イベントパターンの例
<a name="eb-eventbridge-patterns"></a>

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

  ```
  {
     "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 イベントの例
<a name="eb-eventbridge-examples"></a>

*リソースステータスの変更*に対する 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 イベントフィールドマッピング
<a name="eb-eventbridge-mapping"></a>

次の表は、Elastic Beanstalk イベントフィールドおよびそれに使用可能な文字列値と EventBridge `detail-type` フィールドのマッピングを示しています。EventBridge が、サービスのイベントパターンをどのように使用するかの詳細については、「[EventBridge のイベントとイベントパターン](https://docs.aws.amazon.com//eventbridge/latest/userguide/eventbridge-and-event-patterns.html)」を参照してください。



- ** Elastic Beanstalk リソースステータスの変更 **
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の作成を開始しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** createEnvironment を開始しています。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の作成に成功しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** createEnvironment が正常に完了しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の作成に成功しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** 環境: <環境名> を起動しました。ただし、起動中に問題が発生しました。詳細は、イベントログを参照してください。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の作成に失敗しました / ****Elastic Beanstalk フィールドの*重大度***:** エラー / ****Elastic Beanstalk フィールドの*メッセージ***:** 環境に起動に失敗しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の更新を開始しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** 環境の更新を開始しています。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の更新に成功しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** 環境の更新が正常に完了しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の更新に失敗しました / ****Elastic Beanstalk フィールドの*重大度***:** エラー / ****Elastic Beanstalk フィールドの*メッセージ***:** 設定のデプロイに失敗しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の終了を開始しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** terminateEnvironment を開始しています。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境が正常に終了しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** terminateEnvironment が正常に完了しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境の終了に失敗しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** 少なくとも 1 つの環境終了ワークフローが失敗したため、環境終了ステップが失敗しました。

- ** その他のリソースステータスの変更 **
  - ****Elastic Beanstalk フィールドの*ステータス***:** Auto Scaling グループが作成されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** createEnvironment を開始しています。
  - ****Elastic Beanstalk フィールドの*ステータス***:** Auto Scaling グループが削除されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** createEnvironment を開始しています。
  - ****Elastic Beanstalk フィールドの*ステータス***:** インスタンスが追加されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** ご使用の環境にインスタンス [i-123456789a12b1234] を追加しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** インスタンスが削除されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** ご使用の環境からインスタンス [i-123456789a12b1234] を削除しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** ロードバランサーが作成されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** 作成されたロードバランサーの名前: <LB 名>
  - ****Elastic Beanstalk フィールドの*ステータス***:** ロードバランサーが削除されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** 削除されたロードバランサーの名前: <LB 名>

- ** ヘルスステータスの変更 **
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境ヘルスが変更されました / ****Elastic Beanstalk フィールドの*重大度***:** INFO/WARN / ****Elastic Beanstalk フィールドの*メッセージ***:** 環境ヘルスが <healthStatus> に移行しました。
  - ****Elastic Beanstalk フィールドの*ステータス***:** 環境ヘルスが変更されました / ****Elastic Beanstalk フィールドの*重大度***:** INFO/WARN / ****Elastic Beanstalk フィールドの*メッセージ***:** 環境ヘルスが <healthStatus> から <healthStatus> に移行しました。

- ** マネージド更新ステータスの変更 **
  - ****Elastic Beanstalk フィールドの*ステータス***:** マネージド更新が開始されました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** マネージドプラットフォーム更新が進行中です。
  - ****Elastic Beanstalk フィールドの*ステータス***:** マネージド更新に失敗しました / ****Elastic Beanstalk フィールドの*重大度***:** 情報 / ****Elastic Beanstalk フィールドの*メッセージ***:** マネージド更新に失敗しました。%s 分後に再試行します。

