こしあん
2025-02-13

AWS CDKの微妙だった点


42{icon} {views}

はじめに

  • なんか流石に使ったこと無いのはあれでしょっていうんで、AWS CDKを30分ぐらい使ってみたけど思ったより微妙で、「使わなくていいや」ってなったのでその所感をメモしておく
  • 自分は普段Terraform使ってる派

参考になる記事

CDKの導入とかこのへんは参考になった

微妙だった点

  • Node.jsのCDKのバージョンと、Python環境のライブラリaws_sdkのバージョンの二重の依存性を抱える
    • バージョンの依存性はTerraformでも同じだが、一回Pythonでクッションが入っているぶん余計依存性が増える
  • リソース内の依存関係が結構面倒くさい
    • 明示的な依存関係を張るときの◯◯.add_dependency(☓☓)みたいな書き方が結構わかりづらい
  • 余計なリソースを結構デプロイする
    • S3をデプロイするときのauto_delete_objects=TrueをするとLambdaまでデプロイしてる。確かにそれはベストプラクティスではあるけどちょっとやりすぎ…
    • cdk bootstrapでも結構リソースをデプロイしていて、結構ゴミリソースが溢れそうな感じはする
    • cdk bootstrapで作ったリソースを消すには、CloudFormationから消さないといけない。このとき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の中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です