教程:使用 CloudWatch Events 记录 Amazon S3 对象级别操作
Amazon EventBridge 是管理事件的首选方式。CloudWatch Events 和 EventBridge 是相同的底层服务和 API,但 EventBridge 提供了更多功能。您在 CloudWatch 或 EventBridge 中所作的更改将显示在每个控制台中。有关更多信息,请参阅 Amazon EventBridge。 |
您可以在 S3 存储桶上记录对象级别 API 操作。必须使用 Amazon CloudTrail 设置跟踪并配置为接收这些事件,Amazon CloudWatch Events 才能匹配这些事件。
步骤 1:配置您的 Amazon CloudTrail 跟踪
要将 S3 存储桶的数据事件记录到 Amazon CloudTrail 和 CloudWatch Events,需创建一个跟踪。跟踪会捕获您账户中的 API 调用和相关事件,并将日志文件传输到您指定的 S3 存储桶。您可以更新现有跟踪或创建一个新跟踪。
创建跟踪
访问 https://console.aws.amazon.com/cloudtrail/
,打开 CloudTrail 控制台。 -
在导航窗格中,依次选择 Trails (跟踪) 和 Create trail (创建跟踪)。
-
对于 Trail name,键入跟踪的名称。
-
对于 Data events,键入存储桶的名称和前缀 (可选)。对于每个跟踪,您可以添加最多 250 个 Amazon S3 对象。
-
要记录存储桶中所有 Amazon S3 对象的数据事件,请指定一个 S3 存储桶和一个空前缀。当事件在该存储桶中的对象上发生时,跟踪将处理和记录事件。
-
要记录特定 Amazon S3 对象的数据事件,请选择添加 S3 存储桶,然后指定 S3 存储桶,并可选指定对象前缀。当事件在该 存储桶中的对象上发生且对象以指定前缀开头时,跟踪将处理和记录事件。
-
-
对于每个资源,指定是要记录 Read (读取) 事件、Write (写入) 事件,还是同时记录这两类事件。
-
对于 Storage location,创建或选择要用于日志文件存储的现有 S3 存储桶。
-
选择创建。
有关更多信息,请参阅 Amazon CloudTrail 用户指南中的数据事件。
步骤 2:创建 Amazon Lambda 函数
创建一个 Lambda 函数,以记录 S3 存储桶的数据事件。在创建规则时,您可以指定此函数。
创建 Lambda 函数
打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/
。 -
如果您是首次接触 Lambda,您将看到欢迎页面。选择 Create a function。否则,选择创建函数。
选择 Author from scratch。
-
在从 scratch 开始创作下,执行以下操作:
-
为 Lambda 函数键入名称。例如,将函数命名为“LogS3DataEvents”。
对于 Role,请选择 Create a custom role。
此时会打开一个新窗口。根据需要更改角色名称,然后选择允许。
-
回到 Lambda 控制台中,选择创建函数。
-
将 Lambda 函数的代码编辑为以下内容,然后选择保存。
'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
步骤 3:创建规则
创建一个规则以便运行您的 Lambda 函数来响应 Amazon S3 数据事件。
创建规则
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,依次选择规则、创建规则。
-
对于 Event source (事件源),执行以下操作:
-
选择 Event Pattern (事件模式)。
-
选择 Build event pattern to match events by service。
-
依次选择 Simple Storage Service (S3) 和 Object Level Operations。
-
依次选择特定操作和 PutObject (放置对象)。
-
默认情况下,该规则与区域中所有存储桶的数据事件匹配。若要匹配特定存储桶的数据事件,请选择 Specify bucket(s) by name,然后指定一个或多个存储桶。
-
-
对于目标,依次选择添加目标和 Lambda 函数。
-
对于函数,选择您创建的 Lambda 函数。
-
选择 Configure details。
-
对于 Rule definition,键入规则的名称和描述。
-
选择 Create rule (创建规则)。
步骤 4:测试规则
为了测试规则,将一个对象置于 S3 存储桶中。您可以验证您的 Lambda 函数是否已调用。
要查看您的 Lambda 函数的日志
-
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,选择 Logs。
-
选择您的 Lambda 函数 (/aws/lambda/function-name) 的日志组的名称。
-
选择日志流的名称,以查看您启动的实例的函数提供的数据。
您还可以在 S3 存储桶中检查您为跟踪指定的 CloudTrail 日志的内容。有关更多信息,请参阅 Amazon CloudTrail 用户指南中的获取和查看 CloudTrail 日志文件。