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

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

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

您可以使用 Amazon EventBridge 执行Amazon Step Functions状态机以响应事件,或按计划执行。

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

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

在本教程中,您将启动一个简单的执行。Helloworld通过将文件添加到 Amazon S3 存储桶来实现状态机。然后,您将检查该执行的示例输入,以显示来自发送到 EventBridge 的 Amazon S3 事件通知的输入中包含哪些信息。

先决条件:创建状态机

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

  • 要创建基本状态机,请使用入门教程。

  • 如果您已有 Helloworld 状态机,请继续到下一个步骤。

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

现在你有了Helloworld状态机,您需要首先创建一个存储文件的 Amazon S3 存储桶。在本教程中的步骤 3 中,您将设置一个规则,这样当有文件添加到此存储桶时,EventBridge 会触发状态机执行。

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

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

    注意

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

  3. 选择创建存储桶

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

在您创建 Amazon S3 存储桶后,将其配置为在 S3 存储桶中发生某些事件时向 EventBridge 发送事件,例如文件上传。在步骤 3 中,您可以创建 EventBridge 规则以将事件路由到目标,例如 Step Functions 状态机。

  1. 导航到Amazon S3 控制台.

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

  3. 选择 Properties (属性)

  4. 导航到 Event Notifications(事件通知)章节,然后找到 Amazon EventBridge 小节。然后选择 Edit

  5. UNDER为此存储桶中的所有事件向 Amazon EventBridge 发送通知,选择在 上.

    注意

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

第 3 步:创建 Amazon EventBridge 规则

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

注意

你必须同样配置 EventBridge 规则Amazon区域作为 Amazon S3 存储桶。

创建 规则

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

  2. 输入名称对于你的规则(例如,S3StepFunctions) 然后可以选择输入说明对于规则。

  3. In定义模式,选择事件模式.

  4. In事件匹配模式,选择按服务预定义的模式.

  5. In服务提供商,选择Amazon.

  6. InService name (服务名称),选择Simple Storage Service (S3).

  7. 适用于Event type,选择Amazon S3 事件通知.

  8. 选择具体操作选择,然后选择已创建对象.

  9. 选择按名称的特定存储桶输入您在步骤 1 中创建的存储桶名称 (username-sfn-tutorial) 来存储文件。

  10. 保留中的默认选择选择事件总线.

创建目标

  1. 选择Step Functions 状态机中的目标下拉列表,然后在状态机列表中,从步骤 1 中选择状态机 (Helloworld)。

  2. Amazon EventBridge 可以创建您的事件运行时所需的 IAM 角色:

    • 若要自动创建 IAM 角色,请选择为此特定资源创建新角色

    • 要使用您之前创建的 IAM 角色,请选择使用现有角色

  3. 选择创建

    此时将创建规则并且Rule此时将显示页面,其中列出您的所有 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": "2022-02-19T01:36:58Z", "region": "us-east-1", "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": "203.0.113.34", "reason": "PutObject" } }