Closed5

dynamodb-local のTable をyaml template から作成したい

概要

DynamoDB を使った開発の際、Local Test やCI 環境においてdynamodb-local を使うことが多いのだが、Table の作成方法で度々困ってしまう。

Go の開発での選択肢はこんな感じで、

  • aws dynamodb create-table
    • --cli-input-json option によりjson file を読み込むことでCFn template に記述した内容をそのまま反映できるが、yaml 形式に対応していない
  • aws sdk を利用する
    • Table 定義もそのプログラミング言語で記述する前提になり、template との二重管理になる
  • guregu などのThird party client を利用する
    • aws sdk より記述が楽だが二重管理は変わらず、現状aws sdk v2 には対応していない

それぞれデメリットがあり綺麗に解決できない。

やはり二重管理は避けたい*ので、aws cli で検討してみる。
yaml が使えない問題への対応は

  1. 初めからjson で書く
  2. yaml をjson に変換して読み込む

のどちらかになる。
個人的にjson を書いて管理していくのは辛いので2 の方向で。

jq やらを使った変換は沼にハマりそうだなあと調べてみたらこんなツールを見つけた。

https://github.com/awslabs/aws-cfn-template-flip
結構使われているみたいで良さそうだが、CI 環境でのinstall が増えるので少し躊躇。

aws dynamodb create-table にはdynamodb のattributes(propertires) を与えないといけないため、CFn template を変換するaws-cfn-template-flip は今回の用途に合いづらい。
一応、attributes を別のtemplate file に切り出したり jq と組み合わせたりすると呼び出すことは可能ではあるが、Reference が利用できないなど制限が大きいためやはりこれを使うのは難しそう。

ということでAWS CDK を使いましょう。

このスクラップは2022/03/28にクローズされました
ログインするとコメントできます