もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

DynamoDBのテーブルを別テーブルにコピーする

はじめに

こんばんは。

今回はタイトルの通り DynamoDBのテーブルを別テーブルにコピーする方法を備忘録で残しておきます。

wbewのデータはDynamoDBに保存しています。

現在wbewのスクリプトGolangからJSに切り替える作業を 行っています。

ほぼほぼ @kdnaktさんにやってもらっている感じで、自分はほんとちょこちょこやってるくらいです...w

スクリプトの修正後、現在使用中のテーブルに影響を与えず別テーブルで実際にデータが反映されるかをチェックするために、テーブル自体をコピーすればいいかなと思い、調べてやってみました。

本題

調べてわかったのですが、DynamoDBは csvのエクスポートや バックアップなど 今あるテーブル に対してのアプローチはかなり豊富なんですが、 csv importや、今回やりたいコピーなどは、ちょっと工夫が必要そうでした。

pythonスクリプトを自作で書いて対応したり、S3にアップした際に、 Data Pipelineを使用して importするようにしたりなど、こんなめんどくさいのかーと思って、もっとカジュアルに簡単にできるものないかなーと思ってたらありました。

コチラのスクリプトです。

github.com

download後以下のコードを実行すると、簡単にテーブルコピーが出来ました。

$ AWS_ACCESS_KEY_ID=xxxxxxxxxx AWS_SECRET_ACCESS_KEY=zzzzzzzzzz AWS_DEFAULT_REGION=ap-northeast-1 python3.8 dynamodb-copy-table.py 対象のテーブル コピー先のテーブル(作成されていないこと)

f:id:kojirooooocks:20200920181155p:plain

f:id:kojirooooocks:20200920181205p:plain

終わりに

一旦DBのコピーは終わったんですが、まだまだリプレイスは終わってないので、 @kdnaktさんに聞きながら、開発進めていこうと思います。

ただ、リリースが近づいてきて、なかなか動けずやばい...

現場からは以上です。