AWS CDKの微妙だった点
Posted On 2025-02-13
目次
はじめに
- なんか流石に使ったこと無いのはあれでしょっていうんで、AWS CDKを30分ぐらい使ってみたけど思ったより微妙で、「使わなくていいや」ってなったのでその所感をメモしておく
- 自分は普段Terraform使ってる派
参考になる記事
CDKの導入とかこのへんは参考になった
- 【初心者向け】AWS CDK (Python) の始め方とカスタムリソースの作成方法
- [AWS CDK(Cloud Development Kit)] 複数アカウント・複数リージョンへのデプロイを管理する
微妙だった点
- Node.jsのCDKのバージョンと、Python環境のライブラリ
aws_sdk
のバージョンの二重の依存性を抱える- バージョンの依存性はTerraformでも同じだが、一回Pythonでクッションが入っているぶん余計依存性が増える
- リソース内の依存関係が結構面倒くさい
- 明示的な依存関係を張るときの
◯◯.add_dependency(☓☓)
みたいな書き方が結構わかりづらい
- 明示的な依存関係を張るときの
- 余計なリソースを結構デプロイする
- S3をデプロイするときの
auto_delete_objects=True
をするとLambdaまでデプロイしてる。確かにそれはベストプラクティスではあるけどちょっとやりすぎ… cdk bootstrap
でも結構リソースをデプロイしていて、結構ゴミリソースが溢れそうな感じはするcdk bootstrap
で作ったリソースを消すには、CloudFormationから消さないといけない。このときS3バケットの削除はスキップされるので、手間が多い- 必要なリソースはこっちでデプロイするから、いらんもの作らんで…ってなった
- (ロール作成制限かかってる環境だと普通にトラブリそう)
- S3をデプロイするときの
- マルチアカウントで依存関係のあるリソースをデプロイするのが大変
- 個人的にこれは致命的かなと思った理由。運用とか考えるとマルチアカウント前提になるのは今の時代当たり前だと思う。
- 例えばクロスアカウントロールのように、「アカウントAにデプロイするが、アカウントBのリソースを許可する」ようなのはTerraformだと一発で作れる。CDK(というよりCloudFormationの仕様だと思うけど)だとアカウント単位でスタックを作って、それを依存させてみたいな感じでややこしい
- マルチアカウントのスタック定義でアカウントIDをハードコードするのがセキュリティ的にどうなんだろう?って思った。AWS CLIのプロファイル連携できればいいのに。cdk deployするときにプロファイル指定なのがうーん…?
- セキュリティの話するならステートファイルにクレデンシャルがガッツリあるTerraformも大概ではある
- CloudFormationが💩
所感
- これはシングルアカウントでアプリケーションだけ開発する人向けのツールな気がした。今のAWSはそんな甘ちょろい世界ではないのでこれだと物足りない
- CDKをNode.jsで使うならまだしも、PythonでCDKは個人的には現状ちょっとないかな。
- Terraform覚えちゃえばそっちのほうが細かく制御できるし、スケールするという感想。コードが長いのはLLMでどうにかなる
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー