进行SNS页面,点击Create topic
:
选择Standard
类型,命名为topic-for-step-function
并点击创建:
topic创建完成后,添加订阅:
类型选择Email
,并添加个人邮箱作为Endpoint
:
邮箱里会收到确认邮件,点击其中的链接进行确认。
回到topic页面,复制topic ARN用于下一步使用:
进入Step Functions服务,创建新的State machine
:
workflow的JSON更新成如下,注意把TopicArn
替换为上一步获取到的ARN:
{
"Comment": "Transaction Process State Mahcine using SNS",
"StartAt": "ProcessTransaction",
"States": {
"ProcessTransaction": {
"Type": "Pass",
"Next": "BroadcastToSNS"
},
"BroadcastToSNS": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:us-east-1:145197526627:topic-for-step-function",
"Message": {
"TransactionId.$": "$.TransactionId",
"Type.$": "$.Type",
"Source": "Step Function!"
}
},
"End": true
}
}
}
渲染效果如下:
进入下一步,将state machine命名为sns-test
,其他选项保持默认:
下拉到底部,在role里自动会添加Step Functions访问SNS的权限:
点击创建。
创建完成后,新建一个Execution:
测试的Input如下:
{
"TransactionId":"abc",
"Type": "Purchase"
}
执行完成后,查看每个阶段的输入和输出。在BroadcastToSns
阶段,成功将消息发送到SNS,SNS并将结果返回:
在邮箱中也接收到新的邮件: