DynamoDB テーブルから何らかの形式でデータをエクスポートすることは可能ですか?
具体的な使用例としては、本番環境の Dynamodb データベースからデータをエクスポートし、そのデータをローカルの Dynamodb インスタンスにインポートして、アプリケーションが本番環境のデータではなくローカルのデータのコピーで動作できるようにすることです。
私は標準を使用しますDynamoDB ローカルDynamoDB のローカルインスタンスとして。
ベストアンサー1
これにより、すべてのアイテムがJSONドキュメントとしてエクスポートされます。
aws dynamodb scan --table-name TABLE_NAME > export.json
このスクリプトは、リモートの Dynamodb テーブルから読み取り、完全なテーブルをローカルにインポートします。
TABLE=YOURTABLE
maxItems=25
index=0
DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems)
((index+=1))
echo $DATA | jq ".Items | {\"$TABLE\": [{\"PutRequest\": { \"Item\": .[]}}]}" > inserts.jsons
aws dynamodb batch-write-item --request-items file://inserts.jsons --endpoint-url http://localhost:8000
nextToken=$(echo $DATA | jq '.NextToken')
while [[ "${nextToken}" != "" ]]
do
DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems --starting-token $nextToken)
((index+=1))
echo $DATA | jq ".Items | {\"$TABLE\": [{\"PutRequest\": { \"Item\": .[]}}]}" > inserts.jsons
aws dynamodb batch-write-item --request-items file://inserts.jsons --endpoint-url http://localhost:8000
nextToken=$(echo $DATA | jq '.NextToken')
done
以下は、ファイルを使用してエクスポートされたデータをディスク上に保存するスクリプトのバージョンです。
TABLE=YOURTABLE
maxItems=25
index=0
DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems)
((index+=1))
echo $DATA | cat > "$TABLE-$index.json"
nextToken=$(echo $DATA | jq '.NextToken')
while [[ "${nextToken}" != "" ]]
do
DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems --starting-token $nextToken)
((index+=1))
echo $DATA | cat > "$TABLE-$index.json"
nextToken=$(echo $DATA | jq '.NextToken')
done
for x in `ls *$TABLE*.json`; do
cat $x | jq ".Items | {\"$TABLE\": [{\"PutRequest\": { \"Item\": .[]}}]}" > inserts.jsons
aws dynamodb batch-write-item --request-items file://inserts.jsons --endpoint-url http://localhost:8000
done