本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动状态机以响应 Step Functions 中的事件
您可以执行一个 Amazon Step Functions 状态机以响应 Amazon EventBridge 规则。
本教程演示如何将状态机配置作为 Amazon EventBridge 规则的目标。将文件添加至 Amazon Simple Storage Service (Amazon S3) 存储桶时,该规则将启动状态机执行。
对于实际应用程序,您可以启动状态机,该状态机会对添加到存储桶的文件执行操作,例如创建缩略图或者对图像和视频文件运行 Amazon Rekognition 分析。
在本教程中,您通过将文件上传至 Amazon S3 存储桶来启动一个 Helloworld
状态机执行。然后,您将查看该执行的示例输入,确定发送到 EventBridge 的 Amazon S3 事件通知的输入中包含的信息。
先决条件:创建状态机
在您将状态机配置为 Amazon EventBridge 目标前,必须创建状态机。
-
要创建基本状态机,请参阅创建使用 Lambda 函数的状态机教程。
-
如果您已有
Helloworld
状态机,请继续到下一个步骤。
第 1 步:在 Amazon S3 中创建一个存储桶
现在您已有 Helloworld
状态机,则需要创建一个用于存储文件的 Amazon S3 存储桶。在本教程中的第 3 步中,您将设置一个规则,这样当有文件上传到此存储桶时,EventBridge 会触发状态机执行。
-
导航到 Amazon S3 控制台
,然后选择创建存储桶,创建要在其中存储文件的存储桶并触发 Amazon S3 事件规则。 -
输入存储桶名称,如
。username
-sfn-tutorial注意
存储桶名称在 Amazon S3 的所有 Amazon 区域中的所有现有存储桶名称之间必须唯一。使用您自己的
用户名
以使此名称唯一。您必须在相同的 Amazon 区域中创建所有资源。 -
保留此页面上的所有默认选项,然后选择创建存储桶。
第 2 步:使用 EventBridge 启用 Amazon S3 事件通知
创建 Amazon S3 存储桶后,将其配置为在 S3 存储桶中发生某些事件(例如文件上传)时向 EventBridge 发送事件。
-
导航到 Amazon S3 控制台
。 -
在存储桶列表中,请选择要为其启用事件的存储桶的名称。
-
选择属性。
-
向下滚动页面,查看活动通知部分,然后在Amazon EventBridge 子部分中选择编辑。
-
在为此存储桶中的所有事件向 Amazon EventBridge 发送通知下方,请选择打开。
-
选择保存更改。
注意
在启用 EventBridge 后,所做的更改需要大约五分钟才能生效。
第 3 步:创建 Amazon EventBridge 规则
在您拥有状态机,创建 Amazon S3 存储桶并将其配置为向 EventBridge 发送事件通知后,创建一个 EventBridge 规则。
注意
您必须在 Amazon S3 存储桶所在 Amazon 区域中配置 EventBridge 规则。
创建规则
-
导航至 Amazon EventBridge 控制台
,选择创建规则。 提示
或者,在 EventBridge 控制台的导航窗格中,选择总线下的规则,然后选择创建规则。
-
输入规则的名称(例如
),然后根据需要输入规则的描述。S3Step Functions
-
对于事件总线和规则类型,请保留默认选择。
-
选择下一步。这将打开构建事件模式页面。
-
向下滚动到事件模式部分,然后执行以下操作:
-
对于事件源,保留默认选择:Amazon 事件或 EventBridge 合作伙伴事件。
-
对于 Amazon 服务,选择 Simple Storage Service (S3)。
-
对于事件类型,选择 Amazon S3 事件通知。
-
选择特定事件,然后选择已创建对象。
-
选择按名称的特定存储桶,然后输入您在第 1 步中创建的存储桶名称 (
)。username
-sfn-tutorial -
选择下一步。这将打开选择目标页面。
-
创建目标
-
在目标 1 中,保留 Amazon 服务的默认选择。
-
在选择目标下拉列表中,选择 Step Functions 状态机。
-
在状态机列表中,选择您之前创建的状态机(例如
Helloworld
)。 -
保留页面上的所有默认选项,然后选择下一步。这将打开配置标签页面。
-
再次选择下一步。这将打开查看并创建页面。
-
查看规则详细信息并选择创建规则。
此时将创建规则并显示规则页面,其中列出您的所有 Amazon EventBridge 规则。
第 4 步:测试规则
现在一切就绪,试验将文件添加到 Amazon S3 存储桶,然后查看生成的状态机执行的输入。
-
将一个文件添加到 Amazon S3 存储桶中。
导航到 Amazon S3 控制台
,选择您创建的存储文件的存储桶 (
),然后选择上传。username
-sfn-tutorial -
添加文件,例如
,然后选择上传。test.png
这将启动一个状态机执行,并以输入的形式传递来自 Amazon CloudTrail 的信息。
-
检查您的状态机的执行情况。
导航到 Step Functions 控制台,然后选择在您的 Amazon 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