本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用代码段创建状态来发送 Amazon SNS 消息
Amazon Step Functions与某些集成Amazon服务,例如 Amazon Simple Notification Service (Amazon SNS)。在本教程中,您将生成一个使用 Amazon SNS 发送文本消息的代码段。您从状态机定义将参数直接传递给 Amazon SNS。
有关 Step Functions 如何与其他集成的更多信息Amazon直接来自亚马逊州语言的服务,请参阅:
(可选) 先决条件
如果您在中使用现有角色Amazon Identity and Access Management(IAM),您需要附加SNS:Publish
权限。您可以使用AmazonSNSFullAccess
向角色附加权限
-
打开角色页
. -
选择一个角色。
-
选择附加策略。
-
类型
AmazonSNSFullAccess
中的筛选策略文本字段。 -
选择AmazonSNSFullAccess角色。
-
选择 Attach policy(附加策略)。
第 1 步:生成代码段
要生成代码段,您必须先编辑状态机定义。
-
登录到Amazon Web Services Management Console然后打开 Step Functions 控制台https://console.aws.amazon.com/states/home?#/statemachines/create
. -
选择 Author with code snippets (使用代码段创作)。对于 Type (类型),选择 Standard (标准),然后为状态机输入一个名称。
默认
HelloWorld
状态机将显示在 State machine definition (状态机定义) 中。 -
适用于生成代码段,选择Amazon SNS: 发布消息.
此时将显示 Generate SNS Publish task state (生成 SNS 发布任务状态) 窗口。
-
在 Generate SNS Publish task state (生成 SNS 发布任务状态) 页面的 Destination (定义) 下,选择 Enter phone number (输入电话号码),然后输入您的手机号码。
采用格式
[+][country code][subscriber number including area code]
。例如:+12065550123
。 -
在 Message (消息) 下,选择 Enter message (输入消息),然后输入一些要作为 SMS 消息发送的文本。
注意 您还可以选择 Specify message at runtime with state input (在运行时使用状态输入指定消息)。此选项可让您使用参考路径从状态机执行的输入中选择消息。有关更多信息,请参阅:
在上配置选项时生成 SNS 发布任务状态页面,预览部分将针对带必要选项的任务状态的 Amazon State (Amazon State) 语言代码进行更新。
例如,选择以下选项。

选择这些选项后,Preview (预览) 区域中显示的生成的代码段为:
"Amazon SNS: Publish a message": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"Message": "Hello from Step Functions!",
"PhoneNumber": "+12065550123"
},
"Next": "NEXT_STATE"
}
在 Task state options (任务状态选项) 部分下,您还可以配置 Retry
、Catch
和 TimeoutSeconds
选项。请参阅Step Functions 中的错误处理。
第 2 步:更新状态机定义
现在您已配置 Amazon SNS 选项,请将生成的代码段粘贴到状态机定义中并更新现有 Amazon State Language (Amazon State) 语言代码。
-
在查看 Preview (预览) 部分中的代码后,选择 Copy to clipboard (复制到剪贴板)。
-
将光标置于状态机定义中的
HelloWorld
状态的右括号的后面。输入逗号,按 Enter 开始新行,然后将代码段粘贴到状态机定义中。
-
将
Amazon SNS: Publish a message
状态的最后一行从
更改为"Next": "NEXT_STATE"
。"End": true
-
将
HelloWorld
状态的最后一行从
更改为"End": true
。"Next": "Amazon SNS: Publish a message"
-
选择
中的可视工作流窗格。检查可视工作流以确保包含新状态。
-
(可选)缩进 JSON 以使代码更易于阅读。您的状态机定义应如下所示。
{ "StartAt":"HelloWorld", "States":{ "HelloWorld":{ "Type":"Pass", "Result":"Hello World!", "Next":"Amazon SNS: Publish a message" }, "Amazon SNS: Publish a message":{ "Type":"Task", "Resource":"arn:aws:states:::sns:publish", "Parameters":{ "Message":"Hello from Step Functions!", "PhoneNumber":"+12065550123" }, "End":true } } }
-
选择下一步。
-
创建或输入 IAM 角色:
-
要为 Step Functions 创建 IAM 角色,请选择为我创建 IAM 角色,然后输入名称为您的角色。
-
如果您此前创建了 IAM 角色选择您的状态机的正确权限选择现有 IAM 角色. 从列表中选择一个角色,或者为该角色提供 ARN。
注意 如果您删除了 Step Functions 创建的 IAM 角色,Step Functions 在以后无法重新创建它。同样,如果您修改角色 (例如,通过在 IAM 策略中从委托人删除 Step Functions),Step Functions 在以后无法还原其原始设置。
-
-
选择 Create state machine (创建状态机)。
第 3 步:开始执行
创建新的状态机后,将显示其中的页面。
-
请查看您的状态机的详细信息,包括 Amazon Resource Name (ARN)、相关 IAM ARN 和状态机定义。
-
在 Executions (执行) 选项卡上,选择 Start execution (开始执行)。
-
(可选)输入执行的名称。
注意 如果我们选择了使用状态输入在运行时指定消息创建我们的 Amazon SNS 代码片段时,我们将在输入-可选. 现在,您可以使用默认状态输入。
选择 Start execution (开始执行)。
如果您在代码段中配置了有效的手机号码,则应已收到来自 Amazon SNS 的文本消息,该消息是由状态机执行直接触发的。