AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

配合使用 AWS Lambda 和 AWS CloudTrail

您可以在 AWS 账户中启用 CloudTrail 以获取您账户中的 API 调用日志和相关事件历史记录。CloudTrail 将所有 API 访问事件记录为您在启用 CloudTrail 时指定的 Amazon S3 存储桶中的对象。

您可以利用 Amazon S3 的存储桶通知功能并指示 Amazon S3 将对象创建事件发布到 AWS Lambda。当 CloudTrail 将日志写入 S3 存储桶时,Amazon S3 随后可通过将 Amazon S3 对象创建事件作为参数传递来调用 Lambda 函数。S3 事件提供了信息,包括存储桶名称和 CloudTrail 创建的日志对象的键名称。Lambda 函数代码可读取日志对象并处理由 CloudTrail 记录的访问记录。例如,如果您的账户中发生了特定 API 调用,您可以写入 Lambda 函数代码来通知您。

在这种情况下,您可启用 CloudTrail 以便让它将访问日志写入 S3 存储桶。对于 AWS Lambda,Amazon S3 是事件源,因此 Amazon S3 会将事件发布到 AWS Lambda 并调用 Lambda 函数。

注意

Amazon S3 只能支持一个事件目标。

有关如何将 Amazon S3 配置为事件源的详细信息,请参阅配合使用 AWS Lambda 和 Amazon S3

下图概述了该流程:

  1. AWS CloudTrail 将日志保存到 S3 存储桶(对象创建事件)。

  2. Amazon S3 检测到对象创建事件。

  3. 按照存储桶通知配置的规定,Amazon S3 通过调用 Lambda 函数将 s3:ObjectCreated:* 事件发布到 AWS Lambda。由于 Lambda 函数的访问权限策略包括 Amazon S3 调用该函数的权限,因此 Amazon S3 可调用该函数。

  4. AWS Lambda 通过代入您在创建 Lambda 函数时指定的执行角色来执行 Lambda 函数。

  5. Lambda 函数读取其作为参数接收的 Amazon S3 事件、确定 CloudTrail 对象的位置、读取 CloudTrail 对象,然后处理 CloudTrail 对象中的日志记录。

  6. 如果日志包含带有特定 eventTypeeventSource 值的记录,即将该事件发布到您的 Amazon SNS 主题。在教程:将 AWS Lambda 与 AWS CloudTrail 结合使用中,您使用电子邮件协议订阅该 SNS 主题,因此您会收到电子邮件通知。

有关引导您完成示例方案的教程,请参阅教程:将 AWS Lambda 与 AWS CloudTrail 结合使用