首页 > 解决方案 > AWS CLI:解析参数“--item”时出错:JSON 无效:

问题描述

我正在尝试运行以下命令

aws dynamodb put-item \
--table-name TABLENAME \
--item file://accounts.json \
--profile ACCOUNTID \
--region us-east-1

TABLENAME 和 ACCOUNTID 不是变量。只是擦洗他们的真实姓名。

json 文件看起来像这样

[
{
    "accountid": {"N": "ACCOUNTID"},
    "accountname": {"S": "ACCOUNTNAME"}
},
{
    "accountid": {"N": "ACCOUNTID"},
    "accountname": {"S": "ACCOUNTNAME"}
}
]

此示例还清除了帐户信息

我不断得到

Error parsing parameter '--item': Invalid JSON:

我检查了各种验证器上的 JSON,它显示它是正确的。

我也使用了以下 json 文件

{
    "accountid": {"N": "090697449863"},
    "accountname": {"S": "awc-n-sf-devops"}
}

把一个项目放在桌子上,它工作正常。

我在放置 2 个项目的 json 文件中缺少什么导致错误?

提前致谢。

标签: jsonamazon-web-servicesamazon-dynamodbcommand-line-interface

解决方案


好像现在put-item不支持插入多个项目。您必须使用批量写入项

下面的示例可以帮助您了解如何batch-write-item在您的情况下使用。

accounts.json 文件的内容

{
  "test-table": [
    {
      "PutRequest": {
        "Item": {
          "accountid": {
            "S": "100"
          },
          "accountname": {
            "S": "ACCOUNTNAME1"
          }
        }
      }
    },
    {
      "PutRequest": {
        "Item": {
          "accountid": {
            "S": "101"
          },
          "accountname": {
            "S": "ACCOUNTNAME2"
          }
        }
      }
    }
  ]
}

命令行命令

aws dynamodb batch-write-item --region us-east-1 --profile ACCOUNTID --request-items file://accounts.json

它将插入accounts.json文件中提到的所有项目。

下面是运行上述命令后插入项目的附加图像: 在此处输入图像描述

也有一种方法可以put-item插入多个项目,但是您需要逐个遍历所有项目并将其插入表中(您可以使用任何 SDK)。我相信这不是最佳解决方案,因为您会多次调用put-itemAPI。


推荐阅读