使用代码段创建状态来发送 Amazon SNS 消息 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用代码段创建状态来发送 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 状态语言中的,请参阅:

先决条件

第 1 步:生成代码段

要生成代码段,您必须先编辑状态机定义。

  1. 登录到Amazon Web Services Management Console打开Step Functions ct.

  2. 选择用代码编写你的工作流程.

  3. 适用于类型,保留默认选项标准.

    默认HelloWorld状态机显示在定义.

    
                        HelloWorld 定义
  4. 生成代码段下拉列表中,选择Amazon SNS:发布消息.

    此时将显示 Generate SNS Publish task state (生成 SNS 发布任务状态) 窗口。

  5. UNDER目的地,选择Phone number(电话号码)然后输入您的电话号码。

  6. 选择输入电话号码在出现的下拉列表中,然后在下面的框中输入您的电话号码。

    采用格式 [+][country code][subscriber number including area code]。例如:+12065550123

  7. Message (消息) 下,选择 Enter message (输入消息),然后输入一些要作为 SMS 消息发送的文本。

    注意

    您还可以选择 Specify message at runtime with state input (在运行时使用状态输入指定消息)。此选项可让您使用参考路径从状态机执行的输入中选择消息。有关更多信息,请参阅:

当您在上配置选项时生成 SNS Publish statepage,预览部分更新了 Amazon States 语言代码Task陈述必要的选项。

例如,选择以下选项。


                SNS 状态选项

选择这些选项后,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 (任务状态选项) 部分下,您还可以配置 RetryCatchTimeoutSeconds 选项。请参阅 Step Functions 中的错误处理

第 2 步:更新状态机定义

现在您已配置 Amazon SNS 选项,请将生成的代码段粘贴到状态机定义中并更新现有Amazon SNS 语言代码。

  1. 在查看 Preview (预览) 部分中的代码后,选择 Copy to clipboard (复制到剪贴板)

  2. 将光标置于状态机定义中的 HelloWorld 状态的右括号的后面。

    
                        将光标置于HelloWorldstate。

    输入逗号,按Enter开始新行,然后将代码段粘贴到状态机定义中。

  3. Amazon SNS: Publish a message 状态的最后一行从 "Next": "NEXT_STATE" 更改为 "End": true

  4. HelloWorld 状态的最后一行从 "End": true 更改为 "Next": "Amazon SNS: Publish a message"

  5. 选择 
       refresh
    中的可视工作流窗格。检查可视工作流以确保包含新状态。

    
                        查看可视工作流。
  6. (可选)缩进 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 } } }
  7. 选择 Next(下一步)。

  8. 输入状态机的名称。例如,using-code-snippets

  9. 适用于Permissions (权限),保留默认选项创建新角色.

  10. 选择 Create state machine (创建状态机)

第 3 步:开始执行

在创建您的 状态机后,可以开始执行。

  1. 请查看您的状态机的详细信息,包括 Amazon 资源名称 (ARN)、相关 IAM ARN 和状态机定义。

  2. 在存储库的using-code-snippets页面,选择开始执行.

    这些区域有:开始执行对话框随即显示。

  3. (可选) 为了识别您的执行,您可以在名称。默认情况下,Step Functions 会自动生成唯一的执行名称。

    注意

    Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊 CloudWatch. 为了确保你可以跟踪 CloudWatch 指标,请选择一个仅使用 ASCII 字符的名称。

    注意

    如果我们选择了使用状态输入在运行时指定消息在创建 Amazon SNS 代码片段时,我们会在输入-可选. 此时,您可以使用默认状态输入。

  4. 选择 Start Execution (开始执行)

    此时将启动新的状态机执行,并显示一个说明正在运行的执行的新页面。

如果您在代码段中指定了经过验证的电话号码,则应已收到来自Amazon SNS 的文本消息,该消息是由状态机执行直接触发的。