本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用 EventBridge 记录 Amazon S3 对象级别操作
您可以在 Amazon S3 桶中记录对象级别 API 操作。必须使用 Amazon CloudTrail 设置跟踪并配置为接收这些事件,Amazon EventBridge 才能匹配这些事件。
在本教程中,您将创建 CloudTrail 跟踪、创建 Amazon Lambda 函数,然后在 EventBridge 控制台中创建规则,用于调用该函数以响应 S3 数据事件。
步骤 1:配置您的 Amazon CloudTrail 跟踪
要在 Amazon CloudTrail 和 EventBridge 的 S3 桶中记录数据事件,首先要创建一个跟踪。跟踪 会捕获您账户中的 API 调用和相关事件,并将日志文件传输到您指定的 S3 桶。您可以更新现有跟踪或创建一个新跟踪。
有关更多信息,请参阅《Amazon CloudTrail 用户指南》中的数据事件。
创建跟踪
访问 https://console.aws.amazon.com/cloudtrail/
,打开 CloudTrail 控制台。 -
依次选择 Trails (跟踪)、Create trail (创建跟踪)。
-
对于 Trail name,键入跟踪的名称。
-
在存储位置中,选择创建新的 S3 桶。
-
在 Amazon KMS 别名中,为 KMS 密钥键入别名。
-
选择 Next(下一步)。
-
对于事件类型,选择数据事件。
-
对于数据事件,执行以下操作之一:
-
要记录存储桶中所有 Amazon S3 对象的数据事件,请指定一个 S3 存储桶和一个空前缀。当事件在该存储桶中的对象上发生时,跟踪将处理和记录事件。
-
要记录桶中特定 Amazon S3 对象的数据事件,请指定 S3 桶和对象前缀。当事件在该 存储桶中的对象上发生且对象以指定前缀开头时,跟踪将处理和记录事件。
-
-
对于每个资源,选择是要记录读取事件、写入事件,还是同时记录这两类事件。
-
选择 Next(下一步)。
-
选择 Create trail (创建跟踪)。
步骤 2:创建 Amazon Lambda 函数
创建一个 Lambda 函数,以记录 S3 存储桶的数据事件。
创建 Lambda 函数
打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/
。 -
选择创建函数。
-
选择 Author from scratch (从头开始创作)。
-
输入 Lambda 函数的名称和说明。例如,将函数命名为
LogS3DataEvents
。 -
将其余选项保留为默认值,然后选择创建函数。
-
在函数页面的代码选项卡上,双击 index.js。
-
使用以下代码替换现有代码。
'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
-
选择 Deploy(部署)。
步骤 3:创建 规则
创建规则,运行您在步骤 2 中创建的 Lambda 函数。此规则运行是为了响应 Amazon S3 数据事件。
创建 规则
打开位于 https://console.aws.amazon.com/events/
的 Amazon EventBridge 控制台。 -
在导航窗格中,选择 Rules (规则)。
-
选择 Create rule (创建规则)。
-
为规则输入名称和描述。例如,将规则命名为
TestRule
-
对于 Event bus(事件总线),请选择要与此规则关联的事件总线。如果您希望此规则匹配来自您账户的事件,请选择默认。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。
-
对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。
-
选择 Next(下一步)。
-
对于 Event source(事件源),选择 Amazon services(服务)。
-
对于 Event pattern(事件模式),执行以下操作:
-
对于事件源,从下拉列表中选择 Simple Storage Service (S3)。
-
对于事件类型,从下拉列表中选择通过 CloudTrail 进行的对象级 API 调用。
-
选择 Specific operation(s) (特定操作),然后选择 PutObject。
-
默认情况下,该规则与区域中所有存储桶的数据事件匹配。要匹配特定存储桶的数据事件,请选择 Specify bucket(s) by name (按名称匹配特定存储桶),然后指定一个或多个存储桶。
-
-
选择 Next(下一步)。
-
对于 Target types(目标类型),选择 Amazon service(服务)。
-
对于选择目标,从下拉列表中选择 Lambda 函数。
-
对于函数,选择您在步骤 1 中创建的 Lambda 函数。
-
选择 Next(下一步)。
-
选择 Next(下一步)。
-
查看规则详细信息并选择 Create rule(创建规则)。
步骤 4:测试 规则
为了测试规则,将一个对象置于 S3 存储桶中。您可以验证您的 Lambda 函数是否已调用。
要查看您的 Lambda 函数的日志
-
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,选择日志。
-
选择您的 Lambda 函数 (
/aws/lambda/
) 的日志组的名称。function-name
-
选择日志流的名称,以查看您启动的实例的函数提供的数据。
您还可以在 S3 桶中检查您为跟踪指定的 CloudTrail 日志。有关更多信息,请参阅 Amazon CloudTrail 用户指南中的获取和查看 CloudTrail 日志文件。
步骤 5:确认成功
如果您在 CloudWatch 日志中看到 Lambda 事件,说明您已成功完成本教程。如果您的 CloudWatch 日志中没有该事件,请开始故障排除,首先验证规则是否成功创建,如果规则看起来正确,再验证 Lambda 函数的代码是否正确。
步骤 6:清除资源
除非您想要保留为本教程创建的资源,否则可立即将其删除。请删除您不再使用的 Amazon 资源,这样可防止您的 Amazon 账户产生不必要的费用。
删除 EventBridge 规则
-
在 EventBridge 控制台中打开规则页面
。 -
选择您创建的规则。
-
选择 Delete。
-
选择 Delete。
删除 Lambda 函数
-
打开 Lamba 控制台的函数页面
。 -
选择您创建的函数。
-
依次选择 Actions 和 Delete。
-
选择 Delete (删除)。
删除 CloudTrail 跟踪
-
打开 CloudTrail 控制台的 Trails
(跟踪记录)页面。 -
选择您创建的跟踪。
-
选择 Delete。
-
选择 Delete。