我们有一个包含约 8,000 条记录的 DynamoDB 表,我们需要对每条记录进行更新。每条记录的结构类似于: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 也不是很熟悉,如果没有本地方法可以做到这一点,是否有更有效的方法来循环我们的 ids 数组并为每个人调用 api?除了是否有 200 响应之外,我们根本不关心 api 响应。
当前脚本:
#!/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