web-dev-qa-db-ja.com

DynamoDBからデータをエクスポートする

DynamoDBテーブルから何らかの形式でデータをエクスポートすることは可能ですか?

具体的なユースケースは、本番dynamodbデータベースからデータをエクスポートし、そのデータをローカルdynamodbインスタンスにインポートして、アプリケーションが本番データの代わりにデータのローカルコピーを使用できるようにすることです。

link をDynamoDBのローカルインスタンスとして使用します。

20
Kristian Ačkar

DynamoDBtoCSV という名前のツールがあります

すべてのデータをCSVファイルにエクスポートするために使用できます。ただし、他の方法では、独自のツールを作成する必要があります。私の提案は、この機能をツールに追加し、Gitリポジトリに貢献することです。


別の方法は、このタスクにAWS Data Pipelineを使用することです(AWSインフラストラクチャの外部からデータを読み取るためのすべてのコストを節約できます)。アプローチは似ています:

  1. 出力用のパイプラインを構築する
  2. ファイルをダウンロードします。
  3. カスタムリーダーで解析します。
17
Dani C.

DynamoDBインターフェイスからS3にエクスポートします。

次に、sedを使用してJsonに変換します。

sed -e 's/$/}/' -e $'s/\x02/,"/g' -e $'s/\x03/":/g' -e 's/^/{"/' <exported_table> > <exported_table>.json

ソース

9
nostromo

/ a​​ws cli および jq を使用して、テーブルからsomeデータ(多くの場合、ローカルでprodデータのサンプルを取得したいだけです)をエクスポートする方法を示します。当然のことながらmy-prod-tableというprodテーブルとmy-local-tableというローカルテーブルがあるとします。

データをエクスポートするには、次を実行します。

aws dynamodb scan --table-name my-prod-table \
| jq '{"my-local-table": [.Items[] | {PutRequest: {Item: .}}]}' > data.json

基本的に、prodテーブルをスキャンし、スキャンの出力を batchWriteItem の形式に整形して、結果をファイルにダンプします。

ローカルテーブルにデータをインポートするには、次を実行します。

aws dynamodb batch-write-item \
--request-items file://data.json \
--endpoint-url http://localhost:8000

batch-write-item要求にはいくつかの制限があります-BatchWriteItem操作には、最大25個の個別のPutItemおよびDeleteItem要求を含めることができ、最大16 MBのデータを書き込むことができます。 (個々のアイテムの最大サイズは400 KBです。).

4
Valy Dia

これにより、すべてのアイテムがJSONドキュメントとしてエクスポートされます

aws dynamodb scan --table-name TABLE_NAME > export.json
4
Ivailo Bardarov

私の簡単なnode.jsスクリプトを試してください dynamo-archive 。 JSON形式でエクスポートおよびインポートします。

2
yegor256

シンプルなインポート/エクスポート(DynamoDB Localを介したラウンドトリップを含む)に最適な最新ツールは、次のとおりですPythonスクリプト:

https://github.com/bchew/dynamodump

このスクリプトは、スキーマのエクスポート/インポートおよびデータのインポート/エクスポートをサポートします。また、効率的な操作のためにバッチAPIを使用します。

開発目的でDynamoDBテーブルからDynamoDBローカルにデータを取得するためにこれを正常に使用しましたが、私のニーズにはかなりうまくいきました。

1
Jimmy S

開発者のエクスポートを支援するユーティリティクラスを作成しました。これは、AWSのデータパイプライン機能を使用したくない場合に使用できます。 git hub repoへのリンクは- here です

1
SarveshKaushal

Javaを使用してこれを行う場合は、 DynamodbToCSV4j があります。

JSONObject config = new JSONObject();
config.put("accessKeyId","REPLACE");
config.put("secretAccessKey","REPLACE");
config.put("region","eu-west-1");
config.put("tableName","testtable");
d2csv d = new d2csv(config);
1
quodlibet