本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动状态机以响应 Step Functions 中的事件
你可以执行一个 AWS 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 步:在 Amazon S3 中创建一个存储桶
现在您已有 Helloworld
状态机,则需要创建一个用于存储文件的 Amazon S3 存储桶。在本教程的步骤 3 中,您设置了一条规则,以便在文件上传到此存储桶时, EventBridge 触发状态机的执行。
-
导航到 Amazon S3 控制台
,然后选择创建存储桶,创建要在其中存储文件的存储桶并触发 Amazon S3 事件规则。 -
输入存储桶名称,如
。username
-sfn-tutorial注意
存储桶名称在所有现有存储桶名称中必须是唯一的 AWS 亚马逊 S3 中的区域。用你自己的
username
使这个名字独一无二。你需要在同一个资源中创建所有资源 AWS 区域。 -
保留此页面上的所有默认选项,然后选择创建存储桶。
第 2 步:使用以下方式启用 Amazon S3 事件通知 EventBridge
创建 Amazon S3 存储桶后,将其配置为在您的 S3 存储桶中发生某些事件(例如文件上传) EventBridge 时向其发送事件。
-
导航到 Amazon S3 控制台
。 -
在存储桶列表中,请选择要为其启用事件的存储桶的名称。
-
选择 Properties (属性)。
-
向下滚动页面以查看 “活动通知” 部分,然后在 “Amazon” EventBridge 子部分中选择 “编辑”。
-
在 “向亚马逊 EventBridge 发送有关此存储桶中所有事件的通知” 下,选择 “开”。
-
选择 Save changes(保存更改)。
注意
启用后 EventBridge,更改大约需要五分钟才能生效。
第 3 步:创建 Amazon EventBridge 规则
在您拥有状态机并创建 Amazon S3 存储桶并将其配置为向其发送事件通知后 EventBridge,创建 EventBridge 规则。
注意
你必须用同样的方式配置 EventBridge 规则 AWS 区域作为 Amazon S3 存储桶。
创建规则
-
导航至 Amazon EventBridge 控制台
,选择创建规则。 提示
或者,在 EventBridge 控制台的导航窗格中,选择 “总线” 下的 “规则”,然后选择 “创建规则”。
-
输入规则的名称(例如
),然后根据需要输入规则的描述。S3Step Functions
-
对于事件总线和规则类型,请保留默认选择。
-
选择下一步。这将打开构建事件模式页面。
-
向下滚动到事件模式部分,然后执行以下操作:
-
对于事件源,保留默认选择 AWS 活动或 EventBridge 合作伙伴活动。
-
对于 AWS 服务,请选择简单存储服务 (S3) Simple S ervice。
-
对于事件类型,选择 Amazon S3 事件通知。
-
选择特定事件,然后选择已创建对象。
-
选择按名称的特定存储桶,然后输入您在第 1 步中创建的存储桶名称 (
)。username
-sfn-tutorial -
选择下一步。这将打开选择目标页面。
-
创建目标
-
在 Target 1 中,保留默认选择 AWS 服务。
-
在选择目标下拉列表中,选择 Step Functions 状态机。
-
在状态机列表中,选择您之前创建的状态机(例如
Helloworld
)。 -
保留页面上的所有默认选项,然后选择下一步。这将打开配置标签页面。
-
再次选择下一步。这将打开查看并创建页面。
-
查看规则详细信息并选择创建规则。
规则已创建并显示 “规则” 页面,其中列出了您的所有 Amazon EventBridge 规则。
第 4 步:测试规则
现在一切就绪,试验将文件添加到 Amazon S3 存储桶,然后查看生成的状态机执行的输入。
-
将一个文件添加到 Amazon S3 存储桶中。
导航到 Amazon S3 控制台
,选择您创建的存储文件的存储桶 (
),然后选择上传。username
-sfn-tutorial -
添加文件,例如
,然后选择上传。test.png
这将启动状态机的执行,传递来自的信息 AWS CloudTrail 作为输入。
-
检查您的状态机的执行情况。
导航到 Step Functions 控制台,然后选择您的亚马逊 EventBridge 规则中使用的状态机 (
Helloworld
)。 -
选择最近的状态机执行并展开执行输入部分。
此输入包含诸如存储桶名称和对象名称之类的信息。在真实使用案例中,状态机可以使用此输入对该对象执行操作。
执行输入的示例
下面的示例展示了状态机执行的一个典型输入。
{ "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:::
" ], "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" } }
username
-sfn-tutorial