【发布时间】:2019-02-21 18:36:19
【问题描述】:
我正在尝试遍历用户 ID 列表,以使用 AWS CLI 从 dynamoDB 表中检索记录。
// list.txt
abcdefghijklmnop1234567890123456
bbcdefghijklmnop1234567890123456
cbcdefghijklmnop1234567890123456
dbcdefghijklmnop1234567890123456
ebcdefghijklmnop1234567890123456
我运行了get-item aws 命令来检索单个记录:
$ aws dynamodb get-item --table-name "fake-table" --key '{"userId": {"S": "abcdefghijklmnop1234567890123456"}}'
它给了我想要的东西:
{
"Item": {
...
"userId": {
"S": "abcdefghijklmnop1234567890123456"
},
"data": { ... }
}
}
我现在正在尝试循环遍历 list.txt 以将每个 id 作为变量传递给 --key 选项,我理解它是一个映射并以 json 的形式。
https://docs.aws.amazon.com/cli/latest/reference/dynamodb/get-item.html
我的脚本如下所示:
while read LINE
do
echo "$LINE"
(aws dynamodb get-item --table-name "fake-table" --key '{"userId": {"S": $LINE}}') >> output.txt
done < list.txt
它抛出了这个错误:
Error parsing parameter '--key': Invalid JSON: Expecting value: line 1 column 22 (char 21)
JSON received: {"userId": {"S": $$LINE}}
abcdefghijklmnop1234567890123456
我尝试格式化原始列表,以便将用户 ID 用单引号括起来并收到相同的错误。
- 如何将变量传递到地图中?
我还想扩展搜索以仅返回具有数据的 userId 的记录。
- 如何扩展我的
get-item搜索以检查数据是否不等于{}?
我正在尝试在命令行中执行此操作来学习它。
我也打算在 node.js 中这样做。
【问题讨论】:
标签: amazon-dynamodb command-line-interface aws-cli