基本上,我有以下输入内容:
{
"name": "abc",
"choice": "choice1"
}
我的dynamoDB表具有以下结构:
具有以下选项的复杂json:
{
"choices":
{
"choice1": ......,
"choice2": ......
}
}
我想直接从dynamodb阅读,并在相关选择下获得一个子项目:
{
"StartAt": "Read Next Message from DynamoDB",
"States": {
"Read Next Message from DynamoDB": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:getItem",
"Parameters": {
"TableName": "my_table",
"Key": {
"customerName": {"S.$": "$.name"}
}
},
"OutputPath": "$.Item.choices.M.choice1.M.myvalue.S",
"Next": "World"
},
"World": {
"Type": "Pass",
"End": true
}
}
}
基本上,我想做类似“ $。Item.choices.M。{$。choice} .M.myvalue.S” 的操作,并从输入中获取输出的键之一。这可能吗?
答案 0 :(得分:0)
我认为您正在寻找的是JsonPath插值,但是根据thread在AWS论坛上不支持。
据我所知,步进函数仅允许通过$
,.
和[]
运算符(Reference Path)进行路径引用。
我不知道您对DynamoDB表的数据有多少控制权,但我认为如果您的选择类型采用以下方式建模,则可以轻松解决您的问题
{
"choices": [{
"choiceType": "choice1",
........
},
{
"choiceType": "choice2",
........
}]
}
choices
数组。请注意,不要忘记将期望的choiceType
传递给每个迭代。choiceType
并移至适当的下一个状态。因此,基本上,您的其余工作流将在步骤1中建模为地图状态的迭代器。现在,如果您无法控制DynamoDB表,则可以在AWS Lambda中处理查询结果。