本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用代码段创建状态来发送 Amazon SNS 消息
Amazon Step Functions与某些Amazon Web Services,例如Amazon NotifSimple Notification Service (Amazon SNS)。在本教程中,您将生成一个使用 Amazon SNS 向支持 SMS 的设备发送文本消息的代码段。您从状态机定义将参数直接传递给 Amazon SNS。
有关 Step Functions 如何与其他Amazon Web Services直接从Amazon 状态语言中的,请参阅:
先决条件
-
请确保您已添加并验证您想要向其发送SMS 消息的目标电话号码。有关此操作的信息,请参阅。在 SMS 沙盒中添加和验证电话号码中的Amazon Simple Notifice.
第 1 步:生成代码段
要生成代码段,您必须先编辑状态机定义。
-
登录到Amazon Web Services Management Console打开Step Functions ct
. -
选择用代码编写你的工作流程.
-
适用于类型,保留默认选项标准.
默认
HelloWorld
状态机显示在定义. -
从生成代码段下拉列表中,选择Amazon SNS:发布消息.
此时将显示 Generate SNS Publish task state (生成 SNS 发布任务状态) 窗口。
-
UNDER目的地,选择Phone number(电话号码)然后输入您的电话号码。
-
选择输入电话号码在出现的下拉列表中,然后在下面的框中输入您的电话号码。
采用格式
[+][country code][subscriber number including area code]
。例如:
。+12065550123
-
在 Message (消息) 下,选择 Enter message (输入消息),然后输入一些要作为 SMS 消息发送的文本。
注意 您还可以选择 Specify message at runtime with state input (在运行时使用状态输入指定消息)。此选项可让您使用参考路径从状态机执行的输入中选择消息。有关更多信息,请参阅:
当您在上配置选项时生成 SNS Publish statepage,预览部分更新了 Amazon States 语言代码Task
陈述必要的选项。
例如,选择以下选项。

选择这些选项后,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 SNS 语言代码。
-
在查看 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 } } } -
选择 Next(下一步)。
-
输入状态机的名称。例如,
。using-code-snippets
-
适用于Permissions (权限),保留默认选项创建新角色.
-
选择 Create state machine (创建状态机)。
第 3 步:开始执行
在创建您的 状态机后,可以开始执行。
-
请查看您的状态机的详细信息,包括 Amazon 资源名称 (ARN)、相关 IAM ARN 和状态机定义。
-
在存储库的using-code-snippets页面,选择开始执行.
这些区域有:开始执行对话框随即显示。
-
(可选) 为了识别您的执行,您可以在名称。默认情况下,Step Functions 会自动生成唯一的执行名称。
注意 Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊 CloudWatch. 为了确保你可以跟踪 CloudWatch 指标,请选择一个仅使用 ASCII 字符的名称。
注意 如果我们选择了使用状态输入在运行时指定消息在创建 Amazon SNS 代码片段时,我们会在输入-可选. 此时,您可以使用默认状态输入。
-
选择 Start Execution (开始执行)。
此时将启动新的状态机执行,并显示一个说明正在运行的执行的新页面。
如果您在代码段中指定了经过验证的电话号码,则应已收到来自Amazon SNS 的文本消息,该消息是由状态机执行直接触发的。