使用 Lambda 函数处理 Amazon EC2 生命周期事件 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Lambda 函数处理 Amazon EC2 生命周期事件

您可以使用 Amazon Lambda 处理来自 Amazon Elastic Compute Cloud 的生命周期事件并管理 Amazon EC2 资源。Amazon EC2 向 Amazon EventBridge(CloudWatch Events)发送生命周期事件,例如,当实例更改状态时、当 Amazon Elastic Block Store 卷快照完成时或当计划终止竞价型实例时。您可以配置 EventBridge (CloudWatch Events) 以将这些事件转发到 Lambda 函数来进行处理。

EventBridge (CloudWatch Events) 通过来自 Amazon EC2 的事件文档异步调用 Lambda 函数。

例 实例生命周期事件
{ "version": "0", "id": "b6ba298a-7732-2226-xmpl-976312c1a050", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2019-10-02T17:59:30Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:111122223333:instance/i-0c314xmplcd5b8173" ], "detail": { "instance-id": "i-0c314xmplcd5b8173", "state": "running" } }

有关配置事件的详细信息,请参阅 按计划调用 Lambda 函数。有关处理 Amazon EBS 快照通知的示例函数,请参阅 EventBridge Scheduler for Amazon EBS

您还可以使用 Amazon 开发工具包,通过 Amazon EC2 API 管理实例和其他资源。

向 EventBridge(CloudWatch Events)授予权限

要处理来自 Amazon EC2 的生命周期事件,EventBridge(CloudWatch Events)需要权限以调用函数。此权限来自函数的基于资源的策略。如果您使用 EventBridge (CloudWatch Events) 控制台配置事件触发器,则该控制台将代表您更新基于资源的策略。否则,请添加如下所示的语句:

例 基于资源的策略语句,用于 Amazon EC2 生命周期通知
{ "Sid": "ec2-events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com.cn" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:cn-north-1:12456789012:function:my-function", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:events:cn-north-1:12456789012:rule/*" } } }

要添加语句,请使用 add-permission Amazon CLI 命令。

aws lambda add-permission --action lambda:InvokeFunction --statement-id ec2-events \ --principal events.amazonaws.com.cn --function-name my-function --source-arn 'arn:aws:events:cn-north-1:12456789012:rule/*'

如果函数使用 Amazon 开发工具包来管理 Amazon EC2 资源,请向函数的执行角色添加 Amazon EC2 权限。