Amazon EventBridge を使用して AMI イベントをモニタリングする - Amazon Elastic Compute Cloud

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

はい

あり

イベントの詳細

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

"source": "aws.ec2"

イベントが Amazon EC2 からのものであるかを特定します。

"detail-type": "EC2 AMI State Change"

イベント名を特定します。

"detail": { "ImageId": "ami-0123456789example", "State": "available", }

AMI ID と AMI の状態 (availablefailedderegistered、または disabled) を指定します。

詳細については、「Amazon EventBridge ユーザーガイド」で以下のトピックを参照してください。

Lambda 関数を作成する方法と、その Lambda 関数を実行する EventBridge ルールのチュートリアルについては、「AWS Lambda デベロッパーガイド」の「チュートリアル: EventBridge を使用して Amazon EC2 インスタンスの状態をログに記録する」を参照してください。

available のイベント

以下に、CreateImageCopyImageRegisterImageCreateRestoreImageTask、または 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 のイベント

以下に、CreateImageCopyImageRegisterImage、または 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": "" } }