はじめに
こんばんは。
今回はタイトルの通り DynamoDBのテーブルを別テーブルにコピーする方法を備忘録で残しておきます。
wbewのデータはDynamoDBに保存しています。
現在wbewのスクリプトを GolangからJSに切り替える作業を 行っています。
ほぼほぼ @kdnaktさんにやってもらっている感じで、自分はほんとちょこちょこやってるくらいです...w
スクリプトの修正後、現在使用中のテーブルに影響を与えず別テーブルで実際にデータが反映されるかをチェックするために、テーブル自体をコピーすればいいかなと思い、調べてやってみました。
本題
調べてわかったのですが、DynamoDBは csvのエクスポートや バックアップなど 今あるテーブル
に対してのアプローチはかなり豊富なんですが、 csv importや、今回やりたいコピーなどは、ちょっと工夫が必要そうでした。
pythonスクリプトを自作で書いて対応したり、S3にアップした際に、 Data Pipelineを使用して importするようにしたりなど、こんなめんどくさいのかーと思って、もっとカジュアルに簡単にできるものないかなーと思ってたらありました。
コチラのスクリプトです。
download後以下のコードを実行すると、簡単にテーブルコピーが出来ました。
$ AWS_ACCESS_KEY_ID=xxxxxxxxxx AWS_SECRET_ACCESS_KEY=zzzzzzzzzz AWS_DEFAULT_REGION=ap-northeast-1 python3.8 dynamodb-copy-table.py 対象のテーブル コピー先のテーブル(作成されていないこと)
終わりに
一旦DBのコピーは終わったんですが、まだまだリプレイスは終わってないので、 @kdnaktさんに聞きながら、開発進めていこうと思います。
ただ、リリースが近づいてきて、なかなか動けずやばい...
現場からは以上です。