跳至内容

如何使用 Amazon EventBridge 规则在 S3 上传时触发 AWS Step Function 状态机?

2 分钟阅读
0

我想在将文件添加到 Amazon Simple Storage Service (Amazon S3) 存储桶时激活 AWS Step Function 状态机。

简短描述

在将对象上传到 Amazon S3 存储桶时,您可以使用 Amazon EventBridge 规则激活 Step Function 状态机。您必须拥有以下资源才能开始操作:

  • 用于上传对象的 S3 存储桶
  • 要运行的状态机
  • 用于在对象上传到 S3 存储桶时调用状态机的 EventBridge 规则
  • 用于完成所需任务的 Step Function

解决方法

在 Amazon S3 中创建存储桶

完成以下步骤:

  1. 打开 Amazon S3 控制台,然后选择 Create bucket(创建存储桶)。
  2. 对于 Bucket name(存储桶名称),输入一个名称。
  3. 选择 Create bucket(创建存储桶)。

使用 EventBridge 激活 Amazon S3 事件通知

完成以下步骤:

  1. 打开 Amazon S3 控制台,然后选择 Buckets(存储桶)。
  2. 选择要激活事件的存储桶,然后选择 Properties(属性)。
  3. Amazon EventBridge 部分中,选择 Edit(编辑)。
  4. Send notifications to Amazon EventBridge for all events in this bucket(为此存储桶中的所有事件向 Amazon EventBridge 发送通知)部分中,选择 On(打开)。
  5. 选择 Save changes(保存更改)。

配置状态机

打开 Steps Function 控制台,然后按照步骤创建状态机

创建 EventBridge 规则

完成以下步骤:

  1. 打开 EventBridge 控制台,然后选择 Create rule(创建规则)。
  2. Name(名称)中,输入规则的名称。
  3. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则),然后选择 Next(下一步)。
  4. Build event pattern(构建事件模式)页面的 Event pattern(事件模式)部分中,完成以下选择:
    对于 Event source(事件源),选择 AWS 服务。
    对于 AWS service(AWS 服务),选择 Simple Storage Service (S3)
    对于 Event type(事件类型),选择 Amazon S3 Event Notification(Amazon S3 事件通知)。
    对于 Event type Specification 1(事件类型规范 1),选择 Specific event(s)(特定事件)。
    选择 Specific event(s)(特定事件)下拉列表,然后选择 Object created(创建的对象)。
    Event type Specification 2(事件类型规范 2)中,选择 Specific bucket(s) by name(特定存储桶(按名称))。
    Specific bucket(s) by name(特定存储桶(按名称))中,输入您之前创建的存储桶的名称,然后选择 Next(下一步)。
  5. Select target(s)(选择目标)页面上,完成以下选择:
    对于 Target 1(目标 1),选择 AWS service(AWS 服务)。
    选择 Select a target(选择目标)下拉列表,然后选择 Step Functions state machine(Step Functions 状态机)。
    选择 State machine(状态机)下拉列表,然后选择您之前创建的状态机。
    选择 Next(下一步)。
  6. Configure tags - optional(配置标签(可选))页面上,选择 Next(下一步)。
  7. Review and create(查看并创建)页面上,选择 Create rule(创建规则)。

(可选)监控 S3 存储桶子文件夹中的事件

要在特定 S3 存储桶子文件夹上发生事件通知时触发 EventBridge 规则,请修改事件模式以使用前缀匹配

在名为 example-folder 的子文件夹中创建 S3 对象时,以下示例事件模式会触发 EventBridge 规则:

{
  "source": [
    "aws.s3"
  ],
  "detail-type": [
    "Object Created"
  ],
  "detail": {
    "bucket": {
      "name": [
        "bucket-name"
      ]
    },
    "object": {
      "key": [
        {
          "prefix": "example-folder"
        }
      ]
    }
  }
}

注意:

  • 用于在 EventBridge 中激活 S3 事件通知所进行的更改大约需要五分钟才能完成。这意味着在激活规则后,当发生 S3 事件时不会立即触发该规则。
  • 如果规则未触发,请确保 S3 存储桶和事件规则位于同一 AWS 区域
AWS 官方已更新 1 年前