Amazon CloudWatch 事件
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

教程:使用 CloudWatch Events 记录 S3 对象级别操作

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

步骤 1:配置您的 CloudTrail 跟踪

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

创建跟踪

  1. https://console.amazonaws.cn/cloudtrail/ 打开 CloudTrail 控制台。

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

  3. 选择 Add new trail

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

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

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

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

  6. 对于每个资源,指定您是否希望记录 Read-onlyWrite-onlyAll 事件。

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

  8. 选择 Create

有关更多信息,请参阅 AWS CloudTrail User Guide 中的数据事件

步骤 2:创建 Lambda 函数

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

创建 Lambda 函数

  1. 通过以下网址打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/

  2. 如果您是首次使用 Lambda,则会看到一个欢迎页面;请选择 Get Started Now;否则,请选择 Create a Lambda function

  3. Select blueprint 页面上,为筛选条件键入 hello,然后选择 hello-world 蓝图。

  4. Configure triggers 页面上,选择 Next

  5. Configure function 页面上,执行以下操作:

    1. 键入 Lambda 函数的名称和说明。(例如,将函数命名为“LogS3DataEvents”。)

    2. 编辑 Lambda 函数的代码。例如:

      Copy
      'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
    3. 对于 Role,选择 Choose an existing role,然后从 Existing role 中选择您的基本执行角色。否则,创建新的基本执行角色。

    4. 选择 Next

  6. Review 页面上,选择 Create function

步骤 3:创建规则

创建一个规则以便运行您的 Lambda 函数来响应 S3 数据事件。

创建规则

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

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

  3. 选择 Create rule

  4. 对于 Event source,执行以下操作:

    1. 选择 Event Pattern

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

    3. 选择 Simple Storage Service (S3),然后选择 Object Level Operations

    4. 选择 Specific operation(s),然后选择 PutObject

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

     事件选择器窗格
  5. 对于 Targets,选择 Add target,然后选择 Lambda function

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

  7. 选择 Configure details

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

  9. 选择 Create rule

步骤 4:测试规则

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

查看 Lambda 函数的日志

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

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

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

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

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