Amazon EventBridge を使用して AMI イベントをモニタリングする
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 のイベント
イベントの詳細
イベント内の以下のフィールドを使用すると、アクションをトリガーするルールを作成できます。
"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 ユーザーガイド」で以下のトピックを参照してください。
Lambda 関数を作成する方法と、その Lambda 関数を実行する EventBridge ルールのチュートリアルについては、「AWS Lambda デベロッパーガイド」の「チュートリアル: EventBridge を使用して Amazon EC2 インスタンスの状態をログに記録する」を参照してください。
available のイベント
以下に、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 のイベント
以下に、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 のイベント
以下に、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 のイベント
以下に、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": "" } }