Skip to content
Latchkey

AWS CDK vs Terraform: どちらのIaCツールを選ぶか

AWS CDKは実際のプログラミング言語でAWSインフラを定義しCloudFormationを合成します。Terraformは多数のproviderやクラウドにまたがる宣言的なHCLを使用します。

CDKでは、ループ、抽象化、constructを用いてTypeScript、Python、その他の言語でAWSインフラを記述し、内部でCloudFormationを合成します。深くAWSネイティブです。TerraformはAWS、GCP、Azure、SaaSにまたがる膨大なproviderエコシステムを持つ宣言的なHCLを使い、独自のstateモデルを備えます。CDKは言語ネイティブなAWS記述を、Terraformはマルチクラウドの宣言的な幅広さを重視します。

AWS CDKTerraform
スタイル命令的(実際のコード)宣言的(HCL)
スコープAWS(CloudFormation)マルチクラウド + SaaS
抽象化construct、言語機能モジュール
stateCloudFormationが管理Terraformのstate
最適な用途AWS専用、コードファーストなチームマルチクラウド、宣言的

ユースケースとスコープ

CDKは、実際のプログラミング言語、再利用可能なconstruct、CloudFormationが管理するstateを好むAWS専用チームに適しています。Terraformは、マルチクラウドやSaaSにまたがるインフラ、そして巨大なproviderエコシステムを持つ宣言的なHCLを好むチームに適しています。CDKはAWSに寄り添い、Terraformは多数のproviderにまたがりクラウド非依存です。

CIにおいて

どちらもCIからOIDCによるキーレスなAWS認証を使ってplan/diffとapplyを実行します。applyはレビューでゲートしましょう。いずれもマネージドrunnerで動作し、より高速なrunnerはsynth/planとapplyの各ステップを短縮します。

結論

AWS専用で、実際のプログラミング言語とconstructを好むなら: AWS CDK。マルチクラウド、SaaSにまたがる用途、または宣言的なHCLを好むなら: Terraform。CDKはコードファーストなAWS環境に最適で、Terraformはより幅広くクラウド非依存の選択肢です。

関連ガイド