Я пытаюсь перебрать список идентификаторов пользователей для извлечения записей из таблицы DynamoDB с помощью интерфейса командной строки AWS.
// 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
, чтобы передать каждый идентификатор как переменную в опцию --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
Я попытался отформатировать необработанный список, чтобы идентификаторы пользователей были заключены в одинарные кавычки и получили ту же ошибку.
- Как передать переменную в карту?
Я также хотел бы расширить поиск, чтобы возвращать записи только для пользовательских идентификаторов, которые содержат данные.
Как мне расширить поиск
get-item
, чтобы проверить, что данные не равны
{}
?
Я пытаюсь сделать это в командной строке, чтобы узнать их.
Я также собираюсь сделать это в node.js.