我们有一个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来 curl 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
1条答案
按热度按时间xhv8bpkk1#
我有一个类似于你的bash脚本。我可以使用bash从dynamoDB读取记录。然后我有另一个python脚本,它可以上传dynamoDB数据库中的项目。你可以做的是在for循环中调用python脚本,并向它发送相关参数。
猛击:
Python:
如果这有帮助,让我知道!!