首页 > 解决方案 > 无法从 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 函数的值。

在此处输入图像描述

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

在此处输入图像描述

在此处输入图像描述

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

在此处输入图像描述

任何帮助,将不胜感激。

标签: amazon-web-servicesamazon-dynamodbaws-step-functions

解决方案


这就是您的任务定义的样子。注意$每个项目属性的数据类型后面的符号。

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

推荐阅读