启动状态机执行以响应 Amazon S3 事件 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

启动状态机执行以响应 Amazon S3 事件

您可以执行一个 Amazon Step Functions 状态机以响应 Amazon EventBridge 规则。

本教程演示如何将状态机配置作为 Amazon EventBridge 规则的目标。将文件添加至 Amazon Simple Storage Service (Amazon S3) 存储桶时,该规则将启动状态机执行。

对于实际应用程序,您可以启动状态机,该状态机会对添加到存储桶的文件执行操作,例如创建缩略图或者对图像和视频文件运行 Amazon Rekognition 分析。

在本教程中,您通过将文件上传至 Amazon S3 存储桶来启动一个 Helloworld 状态机执行。然后,您将查看该执行的示例输入,确定发送到 EventBridge 的 Amazon S3 事件通知的输入中包含的信息。

先决条件:创建状态机

在您将状态机配置为 Amazon EventBridge 目标前,必须创建状态机。

第 1 步:在 Amazon S3 中创建一个存储桶

现在您已有 Helloworld 状态机,则需要创建一个用于存储文件的 Amazon S3 存储桶。在本教程中的第 3 步中,您将设置一个规则,这样当有文件上传到此存储桶时,EventBridge 会触发状态机执行。

  1. 导航到 Amazon S3 控制台,然后选择创建存储桶,创建要在其中存储文件的存储桶并触发 Amazon S3 事件规则。

  2. 输入存储桶名称,如 username-sfn-tutorial

    注意

    存储桶名称在 Amazon S3 的所有 Amazon 区域中的所有现有存储桶名称之间必须唯一。使用您自己的用户名以使此名称唯一。您必须在相同的 Amazon 区域中创建所有资源。

  3. 保留此页面上的所有默认选项,然后选择创建存储桶

第 2 步:使用 EventBridge 启用 Amazon S3 事件通知

创建 Amazon S3 存储桶后,将其配置为在 S3 存储桶中发生某些事件(例如文件上传)时向 EventBridge 发送事件。

  1. 导航到 Amazon S3 控制台

  2. 存储桶列表中,请选择要为其启用事件的存储桶的名称。

  3. 选择属性

  4. 向下滚动页面,查看活动通知部分,然后在Amazon EventBridge 子部分中选择编辑

  5. 为此存储桶中的所有事件向 Amazon EventBridge 发送通知下方,请选择打开

  6. 选择保存更改

    注意

    在启用 EventBridge 后,所做的更改需要大约五分钟才能生效。

第 3 步:创建 Amazon EventBridge 规则

在您拥有状态机,创建 Amazon S3 存储桶并将其配置为向 EventBridge 发送事件通知后,创建一个 EventBridge 规则。

注意

您必须在 Amazon S3 存储桶所在 Amazon 区域中配置 EventBridge 规则。

创建规则

  1. 导航至 Amazon EventBridge 控制台,选择创建规则

    提示

    或者,在 EventBridge 控制台的导航窗格中,选择总线下的规则,然后选择创建规则

  2. 输入规则的名称(例如 S3Step Functions),然后根据需要输入规则的描述

  3. 对于事件总线规则类型,请保留默认选择。

  4. 选择下一步。这将打开构建事件模式页面。

  5. 向下滚动到事件模式部分,然后执行以下操作:

    1. 对于事件源,保留默认选择:Amazon 事件或 EventBridge 合作伙伴事件

    2. 对于 Amazon 服务,选择 Simple Storage Service (S3)

    3. 对于事件类型,选择 Amazon S3 事件通知

    4. 选择特定事件,然后选择已创建对象

    5. 选择按名称的特定存储桶,然后输入您在第 1 步中创建的存储桶名称 (username-sfn-tutorial)。

    6. 选择下一步。这将打开选择目标页面。

创建目标

  1. 目标 1 中,保留 Amazon 服务的默认选择。

  2. 选择目标下拉列表中,选择 Step Functions 状态机

  3. 状态机列表中,选择您之前创建的状态机(例如 Helloworld)。

  4. 保留页面上的所有默认选项,然后选择下一步。这将打开配置标签页面。

  5. 再次选择下一步。这将打开查看并创建页面。

  6. 查看规则详细信息并选择创建规则

    此时将创建规则并显示规则页面,其中列出您的所有 Amazon EventBridge 规则。

第 4 步:测试规则

现在一切就绪,试验将文件添加到 Amazon S3 存储桶,然后查看生成的状态机执行的输入。

  1. 将一个文件添加到 Amazon S3 存储桶中。

    导航到 Amazon S3 控制台,选择您创建的存储文件的存储桶 (username-sfn-tutorial),然后选择上传

  2. 添加文件,例如 test.png,然后选择上传

    这将启动一个状态机执行,并以输入的形式传递来自 Amazon CloudTrail 的信息。

  3. 检查您的状态机的执行情况。

    导航到 Step Functions 控制台,然后选择在您的 Amazon EventBridge 规则中使用的状态机 (Helloworld)

  4. 选择最近的状态机执行并展开执行输入部分。

    此输入包含诸如存储桶名称和对象名称之类的信息。在真实使用案例中,状态机可以使用此输入对该对象执行操作。

执行输入的示例

下面的示例展示了状态机执行的一个典型输入。

{ "version": "0", "id": "6c540ad4-0671-9974-6511-756fbd7771c3", "detail-type": "Object Created", "source": "aws.s3", "account": "123456789012", "time": "2023-06-23T23:45:48Z", "region": "us-east-2", "resources": [ "arn:aws:s3:::username-sfn-tutorial" ], "detail": { "version": "0", "bucket": { "name": "username-sfn-tutorial" }, "object": { "key": "test.png", "size": 800704, "etag": "f31d8546bb67845b4d3048cde533b937", "sequencer": "00621049BA9A8C712B" }, "request-id": "79104EXAMPLEB723", "requester": "123456789012", "source-ip-address": "200.0.100.11", "reason": "PutObject" } }