AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配合使用 AWS Lambda 和 AWS CloudTrail

AWS CloudTrail 是一项服务,提供由用户、角色或 AWS 服务执行的操作的记录。CloudTrail 会将 API 调用作为事件捕获。要持续记录 AWS 账户中的事件,您可以创建跟踪。通过跟踪,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 函数。

例 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 配置为事件源的详细信息,请参阅配合使用 AWS Lambda 和 Amazon S3