先创建一张Dynamodb Table,表名:TransactionHistoryTable
,只有一个Partition Key:TransactionId
进入Step Functions服务,创建新的State machine
:
workflow的JSON更新成如下:
{
"Comment": "Transaction Processor State Machine",
"StartAt": "ProcessTransaction",
"States": {
"ProcessTransaction": {
"Type": "Pass",
"Next": "StoreHistory"
},
"StoreHistory": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"TableName": "TransactionHistoryTable",
"Item": {
"TransactionId": {
"S.$": "$.TransactionId"
}
}
},
"Retry": [
{
"ErrorEquals": ["States.ALL"],
"IntervalSeconds": 1,
"MaxAttempts": 3
}
],
"End": true,
"ResultPath": "$.DynamoDB"
}
}
}
渲染效果如下:
进入下一步,将state machine命名为sns-test
,其他选项保持默认:
下拉到底部,在role里自动会添加Step Functions访问DynamoDB的权限:
点击创建。
创建完成后,新建一个Execution:
测试的Input如下:
{
"TransactionId": "abcd123ds-aws-niubi"
}
执行完成后,查看每个阶段的输入和输出。在StoreHistory
阶段,成功将消息发送到DynamoDB,DynamoDB并将结果返回:
执行完成后,到DynamDB 表里,发现成功插入一条记录。