

# Amazon EventBridge を使用して AMI イベントをモニタリングする
<a name="monitor-ami-events"></a>

Amazon マシンイメージ (AMI) の状態に変更があった場合、Amazon EC2 はイベントを生成し、それを Amazon EventBridge (旧 Amazon CloudWatch Events) に送信します。イベントは、EventBridge のデフォルトのイベントバスに、JSON 形式で送信されます。Amazon EventBridge を使用することで、これらのイベントの検出と対応が行えるようになります。EventBridge では、イベントに応答してアクションをトリガーするためのルールを作成します。例えば、AMI 作成プロセスが完了したことを検出し、Amazon SNS トピックを呼び出して E メール通知をユーザーに送信する、EventBridge ルールを作成できます。

AMI が以下のいずれかの状態に遷移すると、Amazon EC2 は `EC2 AMI State Change` イベントを生成します。
+ `available`
+ `failed`
+ `deregistered`
+ `disabled`

イベントは、ベストエフォートベースで生成されます。

次のテーブルは、AMI の操作と AMI が入力できる状態を示しています。テーブルの **[はい]** は、対応する操作が実行されたときに AMI が入力できる状態を示しています。


| AMI オペレーション | available | failed | deregistered | disabled | 
| --- | --- | --- | --- | --- | 
| CopyImage | 可能 | はい |  |  | 
|  CreateImage  |  はい  |  はい  |  |  | 
|  CreateRestoreImageTask  | はい | はい |  |  | 
| DeregisterImage |  |  |  はい  |  | 
|  DisableImage  |  |  |  |  はい  | 
|  EnableImage  |  はい  |  |  |  | 
| RegisterImage | はい | あり |  |  | 

**EC2 AMI State Change のイベント**
+ [イベントの詳細](#ami-events)
+ [available のイベント](#ami-event-available)
+ [failed のイベント](#ami-event-failed)
+ [deregistered のイベント](#ami-event-deregistered)
+ [disabled のイベント](#ami-event-disabled)

## イベントの詳細
<a name="ami-events"></a>

イベント内の以下のフィールドを使用すると、アクションをトリガーするルールを作成できます。

`"source": "aws.ec2"`  
イベントが Amazon EC2 からのものであるかを特定します。

`"detail-type": "EC2 AMI State Change"`  
イベント名を特定します。

`"detail": { "ImageId": "ami-0abcdef1234567890", "State": "available", }`  
AMI ID と AMI の状態 (`available`、`failed`、`deregistered`、または `disabled`) を指定します。

詳細については、「Amazon EventBridge ユーザーガイド」で以下のトピックを参照してください。
+ [Amazon EventBridge イベント](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)
+ [Amazon EventBridge のイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Amazon EventBridge ルール](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)

Lambda 関数を作成する方法と、その Lambda 関数を実行する EventBridge ルールのチュートリアルについては、「*AWS Lambda デベロッパーガイド*」の「[チュートリアル: EventBridge を使用して Amazon EC2 インスタンスの状態をログに記録する](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-log-ec2-instance-state.html)」を参照してください。

## available のイベント
<a name="ami-event-available"></a>

以下に、`CreateImage`、`CopyImage`、`RegisterImage`、`CreateRestoreImageTask`、または `EnableImage` が正常に処理された後、AMI が `available` 状態に遷移する際に Amazon EC2 が生成するイベントの例を示します。

`"State": "available"` は、 のオペレーションが正常に処理されたことを示します。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "available",
        "ErrorMessage": ""
    }
}
```

## failed のイベント
<a name="ami-event-failed"></a>

以下に、`CreateImage`、`CopyImage`、`RegisterImage`、または `CreateRestoreImageTask` が正常に処理された後、AMI が `failed` 状態に遷移する際に Amazon EC2 が生成するイベントの例を示します。

以下のフィールドにより、関連する情報が提供されます。
+ `"State": "failed"` – オペレーションが失敗したことを示します。
+ `"ErrorMessage": ""` – オペレーション失敗の理由を示します。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "failed",
        "ErrorMessage": "Description of failure"
    }
}
```

## deregistered のイベント
<a name="ami-event-deregistered"></a>

以下に、`DeregisterImage` が正常に処理された後、AMI が `deregistered` 状態に遷移する際に Amazon EC2 が生成するイベントの例を示します。オペレーションが失敗した場合、イベントの生成は行われません。`DeregisterImage` は同期オペレーションであるため、処理が失敗した場合は直ちに認識されます。

`"State": "deregistered"` は、`DeregisterImage` のオペレーションが正常に処理されたことを示します。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "deregistered",
        "ErrorMessage": ""
    }
}
```

## disabled のイベント
<a name="ami-event-disabled"></a>

以下に、`DisableImage` が正常に処理された後、AMI が `disabled` 状態に遷移する際に Amazon EC2 が生成するイベントの例を示します。オペレーションが失敗した場合、イベントの生成は行われません。`DisableImage` は同期オペレーションであるため、処理が失敗した場合は直ちに認識されます。

`"State": "disabled"` は、`DisableImage` のオペレーションが正常に処理されたことを示します。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "disabled",
        "ErrorMessage": ""
    }
}
```