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

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

配合使用 Amazon Lambda和 Amazon CloudTrail

Amazon CloudTrail是一项提供用户、角色或服务所执行操作记录的Amazon服务。 CloudTrail 将 API 调用捕获为事件。要持续记录 Amazon 账户中的事件,您可以创建跟踪。跟踪允许 CloudTrail将事件的日志文件传输到 Amazon S3 存储桶。

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

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

例 CloudTrail 日志
{ "Records":[ { "eventVersion":"1.02", "userIdentity":{ "type":"Root", "principalId":"123456789012", "arn":"arn:aws:iam::123456789012:root", "accountId":"123456789012", "accessKeyId":"access-key-id", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-01-24T22:41:54Z" } } }, "eventTime":"2015-01-24T23:26:50Z", "eventSource":"sns.amazonaws.com", "eventName":"CreateTopic", "awsRegion":"us-east-2", "sourceIPAddress":"205.251.233.176", "userAgent":"console.amazonaws.com", "requestParameters":{ "name":"dropmeplease" }, "responseElements":{ "topicArn":"arn:aws:sns:us-east-2:123456789012:exampletopic" }, "requestID":"3fdb7834-9079-557e-8ef2-350abc03536b", "eventID":"17b46459-dada-4278-b8e2-5a4ca9ff1a9c", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }, { "eventVersion":"1.02", "userIdentity":{ "type":"Root", "principalId":"123456789012", "arn":"arn:aws:iam::123456789012:root", "accountId":"123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-01-24T22:41:54Z" } } }, "eventTime":"2015-01-24T23:27:02Z", "eventSource":"sns.amazonaws.com", "eventName":"GetTopicAttributes", "awsRegion":"us-east-2", "sourceIPAddress":"205.251.233.176", "userAgent":"console.amazonaws.com", "requestParameters":{ "topicArn":"arn:aws:sns:us-east-2:123456789012:exampletopic" }, "responseElements":null, "requestID":"4a0388f7-a0af-5df9-9587-c5c98c29cbec", "eventID":"ec5bb073-8fa1-4d45-b03c-f07b9fc9ea18", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" } ] }

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