将 Amazon Lambda 与 Amazon EC2 结合使用 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amazon Lambda 与 Amazon EC2 结合使用

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

EventBridge (CloudWatch 事件)使用来自 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" } }

有关在 EventBridge (事件)中配置CloudWatch 事件的详细信息,请参阅在 Amazon Lambda Amazon 上使用 EventBridge (CloudWatch 活动)。有关处理亚马逊 EBS 快照通知的示例函数,请参阅《亚马逊 EC2 Linux 实例用户指南》中的 Amazon EventBridge (CloudWatch 事件)for Amazon EBS

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

权限

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

例 基于资源的策略语句,用于 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 权限。