使用 Amazon EventBridge 监控 AMI 事件 - Amazon Elastic Compute Cloud

使用 Amazon EventBridge 监控 AMI 事件

当亚马逊机器映像(AMI)状态发生变化时,Amazon EC2 将生成发送到 Amazon EventBridge(以前称为 Amazon CloudWatch Events)的事件。事件以 JSON 格式发送到默认的 EventBridge 事件总线。您可以使用 Amazon EventBridge 检测并响应这些事件。要做到这一点,您可以在 EventBridge 中创建触发操作以响应事件的规则。例如,您可以创建 EventBridge 规则,以检测 AMI 创建过程何时完成,然后调用 Amazon SNS 主题以向您发送电子邮件通知。

当 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 的状态(availablefailedderegistereddisabled)。

有关更多信息,请参阅《Amazon EventBridge User Guide》中的以下内容:

有关如何创建 Lambda 函数和运行 Lambda 函数的 EventBridge 规则的教程,请参阅《AWS Lambda Developer Guide》中的 Tutorial: Log the state of an Amazon EC2 instance using EventBridge

available 事件

以下是 Amazon EC2 在 AMI 于 CreateImageCopyImageRegisterImageCreateRestoreImageTaskEnableImage 操作成功后进入 available 状态时所生成的事件的示例。

"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 事件

以下是 Amazon EC2 在 AMI 于 CreateImageCopyImageRegisterImageCreateRestoreImageTask 操作失败后进入 failed 状态时所生成的事件的示例。

以下字段提供相关信息:

  • "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 事件

以下是 Amazon EC2 在 AMI 于 DeregisterImage 操作成功后进入 deregistered 状态时所生成的事件的示例。如果操作失败,则不会生成任何事件。由于 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 事件

以下是 Amazon EC2 在 AMI 于 DisableImage 操作成功后进入 disabled 状态时所生成的事件的示例。如果操作失败,则不会生成任何事件。由于 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": "" } }