教程:使用 EventBridge 记录 Amazon S3 对象级别操作 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用 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 用户指南》中的数据事件

创建跟踪
  1. 访问 https://console.aws.amazon.com/cloudtrail/,打开 CloudTrail 控制台。

  2. 依次选择 Trails (跟踪)Create trail (创建跟踪)

  3. 对于 Trail name,键入跟踪的名称。

  4. 存储位置中,选择创建新的 S3 桶

  5. Amazon KMS 别名中,为 KMS 密钥键入别名。

  6. 选择 Next(下一步)。

  7. 对于事件类型,选择数据事件

  8. 对于数据事件,执行以下操作之一:

    • 要记录存储桶中所有 Amazon S3 对象的数据事件,请指定一个 S3 存储桶和一个空前缀。当事件在该存储桶中的对象上发生时,跟踪将处理和记录事件。

    • 要记录桶中特定 Amazon S3 对象的数据事件,请指定 S3 桶和对象前缀。当事件在该 存储桶中的对象上发生且对象以指定前缀开头时,跟踪将处理和记录事件。

  9. 对于每个资源,选择是要记录读取事件、写入事件,还是同时记录这两类事件。

  10. 选择 Next(下一步)。

  11. 选择 Create trail (创建跟踪)

步骤 2:创建 Amazon Lambda 函数

创建一个 Lambda 函数,以记录 S3 存储桶的数据事件。

创建 Lambda 函数
  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 选择创建函数

  3. 选择 Author from scratch (从头开始创作)

  4. 输入 Lambda 函数的名称和说明。例如,将函数命名为 LogS3DataEvents

  5. 将其余选项保留为默认值,然后选择创建函数

  6. 在函数页面的代码选项卡上,双击 index.js

  7. 使用以下代码替换现有代码。

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
  8. 选择 Deploy(部署)。

步骤 3:创建 规则

创建规则,运行您在步骤 2 中创建的 Lambda 函数。此规则运行是为了响应 Amazon S3 数据事件。

创建 规则
  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

  2. 在导航窗格中,选择 Rules (规则)

  3. 选择 Create rule (创建规则)

  4. 为规则输入名称和描述。例如,将规则命名为 TestRule

  5. 对于 Event bus(事件总线),请选择要与此规则关联的事件总线。如果您希望此规则匹配来自您账户的事件,请选择默认。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  6. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

  7. 选择 Next(下一步)。

  8. 对于 Event source(事件源),选择 Amazon services(服务)。

  9. 对于 Event pattern(事件模式),执行以下操作:

    1. 对于事件源,从下拉列表中选择 Simple Storage Service (S3)

    2. 对于事件类型,从下拉列表中选择通过 CloudTrail 进行的对象级 API 调用

    3. 选择 Specific operation(s) (特定操作),然后选择 PutObject

    4. 默认情况下,该规则与区域中所有存储桶的数据事件匹配。要匹配特定存储桶的数据事件,请选择 Specify bucket(s) by name (按名称匹配特定存储桶),然后指定一个或多个存储桶。

  10. 选择 Next(下一步)。

  11. 对于 Target types(目标类型),选择 Amazon service(服务)。

  12. 对于选择目标,从下拉列表中选择 Lambda 函数

  13. 对于函数,选择您在步骤 1 中创建的 Lambda 函数。

  14. 选择 Next(下一步)。

  15. 选择 Next(下一步)。

  16. 查看规则详细信息并选择 Create rule(创建规则)。

步骤 4:测试 规则

为了测试规则,将一个对象置于 S3 存储桶中。您可以验证您的 Lambda 函数是否已调用。

要查看您的 Lambda 函数的日志
  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,选择日志

  3. 选择您的 Lambda 函数 (/aws/lambda/function-name) 的日志组的名称。

  4. 选择日志流的名称,以查看您启动的实例的函数提供的数据。

您还可以在 S3 桶中检查您为跟踪指定的 CloudTrail 日志。有关更多信息,请参阅 Amazon CloudTrail 用户指南中的获取和查看 CloudTrail 日志文件

步骤 5:确认成功

如果您在 CloudWatch 日志中看到 Lambda 事件,说明您已成功完成本教程。如果您的 CloudWatch 日志中没有该事件,请开始故障排除,首先验证规则是否成功创建,如果规则看起来正确,再验证 Lambda 函数的代码是否正确。

步骤 6:清除资源

除非您想要保留为本教程创建的资源,否则可立即将其删除。请删除您不再使用的 Amazon 资源,这样可防止您的 Amazon 账户产生不必要的费用。

删除 EventBridge 规则
  1. 在 EventBridge 控制台中打开规则页面

  2. 选择您创建的规则。

  3. 选择 Delete

  4. 选择 Delete

删除 Lambda 函数
  1. 打开 Lamba 控制台的函数页面

  2. 选择您创建的函数。

  3. 依次选择 ActionsDelete

  4. 选择 Delete (删除)

删除 CloudTrail 跟踪
  1. 打开 CloudTrail 控制台的 Trails(跟踪记录)页面。

  2. 选择您创建的跟踪。

  3. 选择 Delete

  4. 选择 Delete