使用AWS CLI在AWS DynamoDB中使用Json文件放置项目

时间:2017-08-03 10:32:29

标签: json amazon-web-services amazon-dynamodb aws-lambda aws-cli

使用AWS CLI使用以下命令将以下JSON置于dynamo DB中:

aws dynamodb put-item --table-name ScreenList --item file://tableName.json

我得到参数验证失败Exception.I已经严格通过AWS文档,但未能找到插入复杂json的示例。欢迎提供小帮助。

更新的Json:

{
  "itemName": {
    "S": "SCREEN_LIST"
  },
  "productName": {
    "S": "P2P_MOBITEL"
  },
  "screenList": {
    "L": [
      {
        "menu": {
          "L": [
            {
              "M": {
                "menuId": {
                  "N": "1"
                },
                "menuText": {
                  "S": "ENG_HEADING"
                },
                "menuType": {
                  "S": "Dynamic"
                }
              }
            }
          ]
        },
        "M": {
          "screenFooter": {
            "S": "F_LANGUAGE_CHANGE"
          },
          "screenHeader": {
            "S": "H_LANGUAGE_CHANGE"
          },
          "screenId": {
            "S": "LANGUAGE_CHANGE"
          },
          "screenType": {
            "S": ""
          }
        }
      }
    ]
  }
}

1 个答案:

答案 0 :(得分:0)

您似乎错误地定义了复杂类型。根据{{​​3}},你应该定义一个这样的列表:

"L": ["Cookies", "Coffee", 3.14159]

并且地图应该像这样定义:

"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}

这意味着应该像这样定义menu地图:

"menu": { 
  "L": [
    {
      "M": {
        "menuId": {"N" :"1"},
        "menuText": {"S" :"PACKS_SCREEN"},
        "menuType": {"S" :"Dynamic"}
      }
    }
  ]
}

注意" M"和" L"属性。

您应该以类似的方式更改JSON的其余部分。

您可以找到完整的JSON定义AWS documentation

<强>更新

现在您的列表定义不正确。你有:

   "screenList":{  
      "L":[  
         {  
            "menu":{ ... },
            "M":{ ... }
         }
      ]
   }

虽然它应该是:

   "screenList":{  
      "L":[  
         {  
            "M":{ ... }   
         },
         {  
            "M":{ ... }   
         },
      ]
   }