AWS CLI:解析参数'--item'时出错:预期:'=',收到:'"'用于输入:

问题描述 投票:0回答:3

我正在尝试使用 json 作为输入文件简单地插入一个项目。我在 Windows Cmd 提示符下运行命令:

aws2 dynamodb put-item --table-name testCLI --item file://C:\Temp\DynamoDB\item.json

table testCLI 有 2 个属性 - ID 和 Value

文件 item.json:

"{\"ID\": {\"N\":\"2\"}, \"Value\": {\"S\": \"From json file with escape characters\"}}"

我收到错误:

错误解析参数'--item':预期:'=',收到:'"'用于输入: "{\"ID\": {\"N\":\"2\"}, \"Value\": {\"S\": \"来自带有转义字符的 json 文件\"}}"

aws2 --version

aws-cli/2.0.0dev3 Python/3.7.5 Windows/10 botocore/2.0.0dev2
amazon-web-services amazon-dynamodb command-line-interface
3个回答
6
投票

如果您使用的是 Windows,您可以使用以下命令中的转义序列在 AWS CLI 中成功运行,如下所示:

aws textract detect-document-text --document "{\"S3Object\":{\"Bucket\":\"NameOfBucket\",\"Name\":\"NameOfImage\"}}"

4
投票

正在从 Windows CMD 提示符中尝试 AWS DynamoDB 示例... 我花了更多的时间来弄清楚命令、转义字符、引号……,而不是花在学习 DynamoDB 本身上的时间。呸!

如果它可能对任何人有帮助,请添加以下内容,如果我最终再次使用谷歌搜索/欺骗我的话!

Linux Shell 命令

aws dynamodb put-item \
--table-name device_data \
--item \
'{"device_id": {"S": "12345678"}, "datacount": {"N": "1"} , "timestamp": {"N": "1514876999940"}, "temperature1": {"N": "32.78"}, "temperature2": {"N": "21.76"}, "temperature3": {"N": "15.12"}, "temperature4": {"N": "20.22"}, "temperature5": {"N": "14.43"} }'

在 Windows 命令提示符中对我有用的命令:

aws dynamodb put-item ^
--table-name device_data ^
--item ^
"{\"device_id\": {\"S\": \"12345678\"}, \"datacount\": {\"N\": \"1\"} , \"timestamp\": {\"N\": \"1514876999940\"}, \"temperature1\": {\"N\": \"32.78\"}, \"temperature2\": {\"N\": \"21.76\"}, \"temperature3\": {\"N\": \"15.12\"}, \"temperature4\": {\"N\": \"20.22\"}, \"temperature5\": {\"N\": \"14.43\"} }"
  1. 将反斜杠 \ 替换为插入符号 ^ --> 这仅用于打破 命令到下一行。插入符号后没有空格 ^
  2. 用双引号替换单引号“ 围绕整个 JSON
  3. 在 双引号 " 在 JSON

3
投票

该错误是由 JSON 文件开头和结尾的引号引起的。

但是,由于反斜杠,删除它们似乎也会引起问题。

当我使用这个文件时,它对我有用(在 Mac 上,而不是 Windows 上):

{"ID": {"N":"2"}, "Value": {"S": "From json file with escape characters"}}
© www.soinside.com 2019 - 2024. All rights reserved.