python と typescript をちょっとだけ試した感想
背景
IaC として terraform と SAM を使っていたが、他の選択肢を模索中。
lambda がいい感じに作れるかどうかが気になっている。
特に python での外部ライブラリをサクッと入れたい。
sam の lambda デプロイだとランタイムに合わせたビルド用コンテナを使って
requirements.txt から自動でインストール・zip化までしてくれる。
これがとても便利な一方、sam だと作れるリソースに制限があるので、
今は terraform との併用で使っている。
まとめ
- aws cdk
- ◯
- 慣れた言語で書ける
- cloudformation スタック = オブジェクト になるのでわかりやすい
- △
- aws でしか使えない
- ブラウザからの操作が実質できない
- ◯
- sam
- ◯
- lambda のデプロイが簡単
- △
- サーバレスのリソースしか作れない
- 記法が独特
- ◯
- terraform
- ◯
- 一つ一つの設定内容はわかりやすい
- aws 以外でも使える
- △
- 設定を探すのが難しい
- ◯
aws cdk
一般的なことは公式サイトに任せて、個人的に気になったところだけメモ。
-
内部的には cloudformation を使っている。
-
プログラム側でスタックに対応するオブジェクトを作って、それをデプロイして実際のスタックを作る。
その後スタックから各リソースを作る、という感じ。 -
python のオブジェクト操作の感覚で操作できるところは大きなメリットかもしれない。
terraform でもモジュール分割とかで同じようなことはできるが、モジュールでデータを受け取るのが面倒だったような。
-
-
terraform がリソース一つずつの管理になるのに対して、aws cdk はスタック単位での管理になるのでわかりやすいかも。
- terraform だと依存関係の順序を勝手に解釈してくれるが、一方で順序がわかりにくくなっているかもしれない。
おわりに
当面は terraform で良さそう。
lambda に python ライブラリを入れることについては、
terraform からコンテナでビルドしたり、sam でレイヤーだけ作るとかにするのが良さそう。