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

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

教程:使用 CloudWatch 事件记录 Amazon S3 对象级别的操作

注意

Amazon EventBridge 是管理事件的首选方式。CloudWatch Events 和 EventBridge 是相同的底层服务和 API,但 EventBridge 提供了更多功能。您在 CloudWatch 或 EventBridge 中所作的更改将显示在每个控制台中。有关更多信息,请参阅 。Amazon EventBridge

您可以在 S3 存储桶上记录对象级别 API 操作。在 Amazon CloudWatch Events 与这些事件匹配之前,您必须使用Amazon CloudTrail设置配置为接收这些事件的跟踪。

第 1 步:配置Amazon CloudTrail跟踪

为了将 S3 存储桶的数据事件记录到Amazon CloudTrail和 CloudWatch 事件中,创建一个跟踪。跟踪会捕获您账户中的 API 调用和相关事件,并将日志文件传输到您指定的 S3 存储桶。您可以更新现有跟踪或创建一个新跟踪。

创建跟踪

  1. 从打开 CloudTrail 控制台https://console.aws.amazon.com/cloudtrail/

  2. 在导航窗格中,依次选择 Trails (跟踪)Create trail (创建跟踪)

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

  4. 对于 Data events,键入存储桶的名称和前缀 (可选)。对于每个跟踪,您可以添加最多 250 个 Amazon S3 对象。

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

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

  5. 对于每个资源,指定是要记录 Read (读取) 事件、Write (写入) 事件,还是同时记录这两类事件。

  6. 对于 Storage location,创建或选择要用于日志文件存储的现有 S3 存储桶。

  7. 选择 Create (创建)

有关更多信息,请参阅 。数据事件中的Amazon CloudTrail用户指南。

第 2 步:创建Amazon Lambda函数

创建 Lambda 函数,以记录 S3 存储桶的数据事件。在创建规则时,您可以指定此函数。

创建 Lambda 函数

  1. 打开Amazon Lambda控制台https://console.aws.amazon.com/lambda/

  2. 如果您是首次使用 Lambda,您将看到欢迎页面。选择 Create a function。否则,选择创建函数

  3. 选择 Author from scratch

  4. 从头开始创作下,执行以下操作:

    1. 为 Lambda 函数键入名称。例如,将函数命名为“LogS3DataEvents”。

    2. 对于 Role,请选择 Create a custom role

      此时会打开一个新窗口。根据需要更改角色名称,然后选择允许

    3. 返回到 Lambda 控制台,选择创建函数

  5. 将 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 数据事件。

创建 规则

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,依次选择规则创建规则

  3. 对于 Event source (事件源),执行以下操作:

    1. 选择 Event Pattern (事件模式)

    2. 选择 Build event pattern to match events by service

    3. 依次选择 Simple Storage Service (S3)Object Level Operations

    4. 依次选择特定操作PutObject (放置对象)

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

  4. 适用于目标中,选择添加目标Lambda 函数

  5. 对于函数,选择您创建的 Lambda 函数。

  6. 选择 Configure details

  7. 对于 Rule definition,键入规则的名称和描述。

  8. 选择 Create rule

第 4 步:测试 规则

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

查看 Lambda 函数的日志

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,选择 Logs

  3. 选择您的 Lambda 函数 (/aws/lambda/函数名)。

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

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