问题描述
我已经在AWS StepFunctions中编写了一个状态,以将一个项目插入DynamoDB表,如下所示。 Lambda状态的输出转到DynamoDB状态以下的输入。
"States":{
"Update the order table":{
"Type":"Task","Resource":"arn:aws:states:::dynamodb:putItem","Parameters":{
"TableName":"OrderTable","Item":{
"OrderId":{
"S":"$.OrderId"
},"ItemName":{
"S":"$.ItemName"
},"Price":{
"S":"$.Price"
},"CC":{
"S":"$.CC"
}
}
},"End":true
}
}
文字字符串“ $ .OrderId”,“ $。ItemName”等将被插入DynamoDB表中,而不是Lambda函数中的值。
因此,我删除了“ $ .OrderId”周围的双引号,并得到以下错误。
DynamoDB状态的输入是正确的,但仍然无法将Lambda的输出插入DynamoDB表中。
任何帮助将不胜感激。
解决方法
这是您的任务定义的外观。请注意,每个项目属性的数据类型后面都带有$
符号。
"States":{
"Update the order table":{
"Type":"Task","Resource":"arn:aws:states:::dynamodb:putItem","Parameters":{
"TableName":"OrderTable","Item":{
"OrderId":{
"S.$":"$.OrderId"
},"ItemName":{
"S.$":"$.ItemName"
},"Price":{
"S.$":"$.Price"
},"CC":{
"S.$":"$.CC"
}
}
},"End":true
}
}