json - 使用 AWS CLI 将使用 Json 文件的项目放入 AWS DynamoDB 中

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

使用 AWS CLI 和以下命令将以下 JSON 放入 dynamo 数据库中时:

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

我收到参数验证失败异常。我已经严格浏览了 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": ""
          }
        }
      }
    ]
  }
}

最佳答案

您似乎错误地定义了复杂类型。根据AWS documentation你应该定义一个像这样的列表:

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

map 应该这样定义:

"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 定义 here in the Options section .

更新

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

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

虽然应该是:

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

关于json - 使用 AWS CLI 将使用 Json 文件的项目放入 AWS DynamoDB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45481673/

相关文章:

json - AWS CloudFormation - 在 !Sub 内使用 !Ref

python - 无法使用 json.loads 将字符串加载到对象中

c# - 为什么我无法在 .Net 中使用 AWS SES 接收电子邮件

amazon-dynamodb - Dynamodb - 使用哈希键获取所有行

c# - 是否有使用 basicHttpBinding 扩展 WCF 服务以允许 REST 服务与 JSON 通信的好方法?

java - 通过 JSON 数据检索号码

amazon-web-services - 如何使用Cloudformation创建KMS非对称签名 key 资源?

java - 为 Android 的 Amazon AWS SES 发送带有附件的电子邮件?

amazon-s3 - Terraform 共享状态

java - 是否可以一次性将一组对象插入 DynamoDB - Java