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-0123456789example", "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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "disabled", "ErrorMessage": "" } }