みなさん、こんにちは。サニービュー事業部の小寺です。
今までAMIのイベント通知をやってみたいと思った方はいらっしゃいますか。

今回のアップデートで、Amazon EC2でAmazon マシンイメージ (以下、AMI) の作成、登録、登録解除などのイベントをCloudWatch Events(EventBridge)に送信できるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/05/amazon-ec2-cloudwatch-events-support-amazon-machine-images/

アップデートでうれしいこと

CloudWatch Events(EventBridge)を使って、AMI インベントリの更新、AMI の共有、コピーの作成、AMI を使用したインスタンスの起動など、AMI アクションの後に実行。イベントは、AWS Lambda 関数、Amazon SNS トピック、Amazon SQS キュー、Amazon Kinesis ストリーム、その他のサービスと連携ができます。

AMIのイベント通知について

Amazon EventBridgeで以下のAmazon EC2のAMIステータスを検知することができます。
・available
・failed
・deregisterd

以下のいずれかのAMIの操作が実行されると、availableまたはfailedイベントが送信されます。
・CreateImage(AMIの作成)
・CopyImage(AMIのコピー)
・RegisterImage(AMIの登録)
・CreateRestoreImageTask(AMIのリストアタスク作成)

以下のAMIの操作が実行されると、deregisterdイベントが操作されます。
・DeregisterImage(AMIの登録を解除)

以下が各ステータスのサンプルです。
・available
AMIのイメージ作成、イメージのコピー、イメージの登録の操作が成功して、ステータスが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
AMIのイメージ作成、イメージのコピー、イメージの登録の操作が失敗して、ステータスがfailedになったとき
エラーメッセージには、失敗理由が出力されます。

{
“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”
}
}

・deregisterd
AMIイメージの登録解除のオペレーションが実行されたとき

{
“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”: “”
}
}

どのようにイベントを送信すれば良い?

まずは、Amazon EventBridgeでルールを作成します。
(1)ルールの名前とオプションで説明を入力します。
イベントバスは「default」を選びます。ルールタイプでは「イベントパターンを持つルール」を選びます。

(2)イベントソースでは、「AWSイベントまたはEventBridgeパートナーイベント」を選びます。

(3)イベントパターンでは、この記事では例として、EC2 AMIの状態が変化したときにイベント通知をするようにします。

・イベントソース:AWSのサービス
・AWSのサービス:EC2
・イベントタイプ: EC2 AMI State Change

ここで、イベントタイプに「EC2 AMI State Change」を見つけることができずに、カスタムパターンで以下の記述をしました。

{
“source”: [“aws.ec2”],
“detail-type”: [“EC2 AMI State Change”],
“detail”: {“State”: [“available”]}
}

(4)次にイベントの通知先を設定します。
ターゲットタイプでは、AWSサービスを選びます。
ターゲットの選択では、例として「SNSトピック」を選びました。既に設定されているトピックを選びました。

(5)次にオプションとしてタグの設定が表示されます。
特に指定がなければ「次へ」をクリックします。

(6)レビューと作成画面で今までの設定を確認し、「ルールの作成」をクリックします。

これで、イベント通知まで完了です。

対応リージョン

本アップデートについては、すべてのAWS リージョンで利用可能です。

AWSをご利用いただくには、直接契約するより断然お得。
手数料不要で、AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!