amazon-dynamodb - AWS CLI dynamoDB 如何将变量传递给 get-item --key map
问题描述
我正在尝试遍历 userIds 列表以使用 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
我理解为 map 和 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
我尝试格式化原始列表,以便 userIds 用单引号括起来并收到相同的错误。
- 如何将变量传递到地图中?
我还想扩展搜索以仅返回具有数据的 userId 的记录。
- 我将如何扩展
get-item
搜索以检查数据是否不等于{}
?
我正在尝试在命令行中执行此操作来学习它。
我也打算在 node.js 中这样做。
解决方案
单引号阻止您的外壳(我假设是 bash 或类似的)扩展$LINE
变量。相反,他们将其保留为文字值。请参阅bash 手册中的引用部分。
尝试将整个内容用双引号括起来,斜线转义那些需要格式化 JSON 值的内容:
aws dynamodb get-item --table-name "fake-table" --key "{\"userId\": {\"S\": $LINE}}" >> output.txt
推荐阅读
- android - 使用 Firebase 数据加载 RecyclerView 时出现问题(无设置器/字段)
- haskell - 如何生成随机数的特定数字?
- c++ - 为什么我的公式不计算 WHILE 循环中的值?
- python - 如何在python中自动检测圆圈
- java - 从单词的单个字母创建字符串的更有效方法
- amazon-web-services - 在 AWS SAM 中使用 !Ref 设置环境变量?
- java - Android Studio Proguard Base 位置
- python - 使用 python 中的特定规则集生成电话号码
- python - Python - 如何从脚本中的变量内部提取数据?
- r - ggplot dotplot:geom_dotplot 的正确用途是什么?