У нас есть таблица DynamoDB с ~ 8 000 записей в ней, и нам нужно обновить каждую запись.Каждая запись структурирована примерно так: id: 1492357, appIds: [123232], info: "{stringified json}"
и что мы хотим сделать, это взять массив «appIds» и вставить его в строковое значение json «info», так что если мы анализируем json, атрибут appIds теперь является атрибутомв JSON.
У нас есть API, который сделает это за нас, вызвав myApi/:id/update
, и у нас есть сценарий оболочки, который будет извлекать идентификатор для каждой записи в таблице из динамо.Мы могли бы просто зациклить массив идентификаторов и свернуть API с каждым идентификатором, но это кажется неэффективным.
Есть ли в «Динамо» родной способ сделать что-то подобное (в обход API)?Я также не очень знаком со сценариями или curl, если нет собственного способа сделать это, есть ли более эффективный способ зацикливать наш массив идентификаторов и вызывать API для каждого?Мы не заботимся об ответе API вообще, кроме того, имеет ли он ответ 200 или нет.
Текущий сценарий:
#!/bin/bash
records=`aws dynamodb scan --table-name myTable --attributes-to-get '["id"]' | jq '.'`
count=$(jq '.Count' <<< "${records}")
ids=$(jq -r '.Items | .[] | {id: .id.S} | @base64' <<< "${records}")
echo ========== fetched $count records =========
for id in $ids; do
_jq() {
echo ${id} | base64 --decode | jq -r ${1}
}
userId=$(_jq '.id')
url=$(curl myApi/${userId}/update)
echo $userId :
done