You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用batch-write-item向DynamoDB写入Map/List类型JSON并解决报错?

DynamoDB batch-write-item JSON格式错误排查

核心原因:两个报错均是未遵循DynamoDB原生JSON格式规范导致的,所有属性值必须显式声明数据类型标记,复杂类型(Map/List)也需要先标注类型再嵌套内容。

1. Map类型JSON错误说明

  • 错误点:ToolOne、ToolTwo作为Map类型属性,没有先声明"M"类型标记,直接把Map内的键写在了属性层级,DynamoDB将item、qty、desc识别为未知的类型标记,触发校验报错。
  • 正确格式要求:Map类型属性的结构为"属性名": {"M": {Map内部的键值对}}

2. List类型JSON错误说明

  • 错误点:ToolOne、ToolTwo作为List类型属性,没有先声明"L"类型标记,直接把数组写在了属性值位置,DynamoDB期望属性值是包含类型标记的字典对象,收到列表后触发类型不匹配报错。
  • 正确格式要求:List类型属性的结构为"属性名": {"L": [列表内部的元素]}

修正后的完整JSON示例

修正后的Map版本JSON

{
  "TestDB":[
    {
      "PutRequest":{
        "Item":{
          "Name":{"S": "UserName"},
          "ToolOne":{
            "M": {
              "item":{"S": "excel"},
              "qty":{"N": "2"},
              "desc":{"S": "eeee"}
            }
          },
          "ToolTwo":{
            "M": {
              "item":{"S": "Word"},
              "qty":{"N": "1"},
              "desc":{"S": "www"}
            }
          }
        }
      }
    }
  ]
}

修正后的List版本JSON

{
  "TestDB":[
    {
      "PutRequest":{
        "Item":{
          "Name":{"S": "userName"},
          "ToolOne":{
            "L": [
              {"S": "excel"},
              {"N": "2"},
              {"S": "eeee"}
            ]
          },
          "ToolTwo":{
            "L": [
              {"S": "Word"},
              {"N": "1"},
              {"S": "www"}
            ]
          }
        }
      }
    }
  ]
}

修改完成后直接执行原命令即可正常写入:

aws dynamodb batch-write-item --request-items file://Json_file_name.json

内容的提问来源于stack exchange,提问作者Jun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:09:03