AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

既存のDynamoDBテーブルからテーブル定義を作成する

Pocket

開発環境で作ったDynamoDBのテーブルと全く同じテーブルを本番環境で作ったり、
既存のテーブルのインデックス定義をちょっと変えて作り直したい、そんなケースがあると思います。

マネージメントコンソールで作ってもよいのですが、インデックス名を間違ったり、インデックスが不足したりすると思わぬトラブルになります。(実際ありました)

きちんと、テーブル定義をjsonファイルで管理しておけばよいのですが、そうでない場合は、既存のテーブルからテーブル定義となるjsonを吐き出して、それを読みこませて作成したいと考えると思います。

ただ、aws dynamodb describe-table で吐き出すjsonには、create-table に不要な項目が多数含まれていて、そのままでは実行できません。

「ああjson手で直すのめんどくさいなー」 と弊社今井の周りでつぶやいていたところ、

つ 「出来た」

と下記のようなスクリプトが送られてきました。仕事早っ。

jq でjsonの要素簡単に消せるんですね。
これで出力された json を使って、下記のように作成すればまったく同じ定義のテーブルが作れました。

まとめるとこんな感じです。

既存のテーブルと同じ定義のテーブルを作成する

最初からテーブル定義をjsonで管理する

上記のような事態にならないように、最初からjsonで管理しておけばよかったな、と思ってます。
具体的には、下記のような手順でしょうか。

1)テーブル定義のスケルトンを作成

2)スケルトンをベースに編集する

不要な定義消したり、インデックス名をきめたりとか。

3)テーブル作る

describe-table とかできちんと出来ているか確認する。

4)git に登録

問題なければ、git などに入れておく。

 おわりに

もっとこうしたほうがいいよとか、CloudFormation使うとこんな感じでできるとか、追加情報ありましたら教えていただけると嬉しいです。

あと、プロビジョニングツールとかないのでしょうか。(後から追加できるのがGSIくらいだから需要ない?)

Pocket