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

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

开始执行状态机以响应 Amazon S3 事件

您可以执行Amazon Step Functions状态机以响应 Amazon EventBridge 或按计划执行。

本教程向您展示如何将状态机配置为 Amazon EventBridge 规则的目标。此规则将在文件添加到 Amazon Simple Storage Service (Amazon S3) 存储桶时开始执行状态机。

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

在本教程中,您可以通过将文件上传到 Amazon S3 存储桶。Helloworld然后,您查看该执行的示例输入,以确定传送到的 Amazon S3 事件通知的输入中包含的信息 EventBridge。

先决条件:创建状态机

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

  • 要创建基本状态机,请使用使用 Lambda 函数的创建状态机教程。

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

步骤 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

现在您有一台Helloworld状态机,您需要创建一个 Amazon S3 存储桶来存储您的文件。在本教程的第 3 步中,您设置了一条规则,以便在将文件上传到此存储段时, EventBridge 触发状态机的执行。

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

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

    注意

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

  3. 保留页面上的所有默认选择,然后选择 C reate bucket

第 2 步:使用以下命令启用 Amazon S3 事件通知 EventBridge

创建 Amazon S3 存储桶后,请将其配置为在 S3 存储桶中发生某些事件 EventBridge 时向 1 存储桶发送事件。

  1. 导航到 Amazon S3 控制台

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

  3. 选择 Properties (属性)

  4. 向下滚动页面查看 “事件通知” 部分,然后在 “亚马逊” EventBridge 子部分中选择 “编辑”

  5. 在 S end notifice ( EventBridge 为此存储桶中的所有事件向 Amazon) 下方,请选择 O n(

  6. 选择 Save changes(保存更改)。

    注意

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

第 3 步 3 步 3 步 3 步 1 步 1 步 EventBridge 1 1

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

注意

您必须在与 Sim EventBridge ple Storage (Amazon S3) 存储桶位于同一Amazon区域。

创建 规则

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

  2. 输入规则的名称(例如S3StepFunctions),也可以输入规则的描述

  3. 保留页面上的所有默认选择,然后选择 “下一步”。

  4. 在 “生成事件模式” 页面上,向下滚动到 “事件模式” 部分,然后执行以下操作:

    1. 对于事件源,保留默认选择。

    2. 对于Amazon服务 1,请选择 SiSim ple Storage Service (S3)

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

    4. 选择 “特定操作”,然后选择 “对象已创建”。

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

    6. 选择 Next(下一步)

创建目标

  1. 目标 1 中,确保选择了Amazon服务

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

  3. 状态机列表中,选择您在步骤 1Helloworld)中创建的状态机。

  4. 保留页面上的所有默认选择,然后选择 “下一步”。

  5. 再次选择 “下一步”,然后在 “查看和创建” 页面上查看规则的详细信息。

  6. 请选择 Create rule (创建规则)

    规则已创建并显示 “规则” 页面,其中列出了您的所有亚马逊 EventBridge 规则。

步骤 4:测试 规则

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

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

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

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

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

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

    导航到 Step Functions 控制台并选择您的亚马逊 EventBridge 规则中使用的状态机(Helloworld

  4. 选择该状态机的最新执行次数,然后展开 “执行输入” 部分。

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

执行输入的示例

以下示例示例1:状态机执行时的典型输入。

{ "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-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" } }