我们有一个DynamoDB表,其中包含约8,000条记录,我们需要对每个记录进行更新。每条记录的结构类似:id: 1492357, appIds: [123232], info: "{stringified json}"
,而我们想要做的就是获取“ appIds”数组并将其插入到“ info”的字符串化json值中,这样,如果我们解析json,则appIds属性现在为json中的属性。
我们有一个API,可以通过调用myApi/:id/update
为我们执行此操作,并具有一个Shell脚本,该脚本将从dynamo中获取表中每个记录的ID。我们可以循环id数组并使用每个id卷曲api,但这似乎效率很低。
Dynamo中是否有本机方式来执行类似的操作(绕过api)?我对脚本或curl也不太熟悉,如果没有本地方法,是否有更有效的方法来循环我们的ID数组并为每个ID调用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