无法从AWS StepFunctions中正确插入DynamoDB项

问题描述

我已经在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函数中的值。

enter image description here

因此,我删除了“ $ .OrderId”周围的双引号,并得到以下错误

enter image description here

enter image description here

DynamoDB状态的输入是正确的,但仍然无法将Lambda的输出插入DynamoDB表中。

enter image description here

任何帮助将不胜感激。

解决方法

这是您的任务定义的外观。请注意,每个项目属性的数据类型后面都带有$符号。

"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
   }
}