本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动状态机执行以响应 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 会触发状态机执行。
-
导航到Amazon S3 控制台
选择,然后选择创建存储桶创建要在其中存储文件的存储桶并触发 Amazon S3 事件规则。 -
输入存储桶名称,如
。username
-sfn-tutorial注意 存储桶名称在所有现有存储桶名称之间必须唯一。AmazonAmazon S3 中的区域。使用您自己的
用户名
以使此名称唯一。您必须在相同的 Amazon 区域中创建所有资源。 -
选择创建存储桶。
第 2 步:使用 EventBridge 启用 Amazon S3 事件通知
在您创建 Amazon S3 存储桶后,将其配置为在 S3 存储桶中发生某些事件时向 EventBridge 发送事件,例如文件上传。在步骤 3 中,您可以创建 EventBridge 规则以将事件路由到目标,例如 Step Functions 状态机。
-
导航到Amazon S3 控制台
. -
在 Buckets (存储桶) 列表中,选择要为其启用事件的存储桶的名称。
-
选择 Properties (属性)。
-
导航到 Event Notifications(事件通知)章节,然后找到 Amazon EventBridge 小节。然后选择 Edit。
-
UNDER为此存储桶中的所有事件向 Amazon EventBridge 发送通知,选择在 上.
注意 在启用 EventBridge 后,所做的更改需要大约五分钟才能生效。
第 3 步:创建 Amazon EventBridge 规则
在您拥有状态机并且创建 Amazon S3 存储桶并将其配置为向 EventBridge 发送事件通知后,创建 EventBridge 规则。
你必须同样配置 EventBridge 规则Amazon区域作为 Amazon S3 存储桶。
创建 规则
-
导航到Amazon EventBridge 控制台
,选择创建规则. -
输入名称对于你的规则(例如,
S3StepFunctions
) 然后可以选择输入说明对于规则。 -
In定义模式,选择事件模式.
-
In事件匹配模式,选择按服务预定义的模式.
-
In服务提供商,选择Amazon.
-
InService name (服务名称),选择Simple Storage Service (S3).
-
适用于Event type,选择Amazon S3 事件通知.
-
选择具体操作选择,然后选择已创建对象.
-
选择按名称的特定存储桶输入您在步骤 1 中创建的存储桶名称 (
) 来存储文件。username
-sfn-tutorial -
保留中的默认选择选择事件总线.
创建目标
-
选择Step Functions 状态机中的目标下拉列表,然后在状态机列表中,从步骤 1 中选择状态机 (
Helloworld
)。 -
Amazon EventBridge 可以创建您的事件运行时所需的 IAM 角色:
-
若要自动创建 IAM 角色,请选择为此特定资源创建新角色。
-
要使用您之前创建的 IAM 角色,请选择使用现有角色。
-
-
选择创建。
此时将创建规则并且Rule此时将显示页面,其中列出您的所有 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": "2022-02-19T01:36:58Z", "region": "us-east-1", "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": "203.0.113.34", "reason": "PutObject" } }
username
-sfn-tutorial