1

我们有一个包含约 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
4

0 回答 0