基于属性更新每个Dynamodb项目的有效方法

时间:2019-02-01 18:57:35

标签: bash shell curl amazon-dynamodb dynamodb-queries

我们有一个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

0 个答案:

没有答案