翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform の開始方法: AWS CDK と AWS CloudFormation の専門家向けのガイダンス
Amazon Web Services (AWS)、Steven Guggenheimer
2024 年 3 月 (ドキュメント履歴)
クラウドリソースのプロビジョニングの経験が の領域のみにある場合 AWS、 AWS Cloud Development Kit (AWS CDK)および 以外の Infrastructure as Code (IaC) ツールの使用経験が限られている可能性がありますAWS CloudFormation。実際、Hashicorp Terraform などの同様のツールにはまったく慣れていない場合があります。ただし、クラウドジャーニーをより深く進めるほど、Terraform に遭遇することが避けられないようになります。その中核となる概念に精通することが決定します。
Terraform、 AWS CDK、および CloudFormation は同様の目標を達成し、多くの主要な概念を共有しますが、いくつかの違いがあります。Terraform に初めて近づいている場合は、これらの違いに備えていない可能性があります。結局のところ、 AWS CDK スタックと CloudFormation スタックはすべて 内をベースとしているため、その方法では AWS アカウント、維持するほとんどのリソースと直接的な関係があります。Terraform は、単一のクラウドプロバイダーの環境には基づいていません。これにより、さまざまなプロバイダーを柔軟にサポートできますが、リモートロケーションまでリソースを維持する必要があります。
このガイドは、Terraform の背後にある主要な概念をわかりやすく説明し、発生する IaC チャレンジの処理に役立ちます。Terraform がプロバイダー、モジュール、状態ファイルなどの概念を使用してリソースをプロビジョニングする方法に焦点を当てています。また、Terraform の概念と、 AWS CDK および CloudFormation が同様のオペレーションを実行する方法とは対照的です。
注記
は、開発者がプログラムによるコーディング言語を使用して CloudFormation スタックをデプロイする AWS CDK のに役立ちます。を実行するとcdk synth、コードは CloudFormation テンプレートに変換されます。その時点から、プロセスは AWS CDK と CloudFormation の間で同じです。簡潔にするために、このガイドは通常 CloudFormation 用語の AWS IaC プロセスを参照しますが、比較は に似ています AWS CDK。
CloudFormation と Terraform の用語
Terraform と AWS CDK および CloudFormation を比較する場合、IaC コア概念の説明に使用される用語が一貫していないため、IaC コア概念の照合が困難になる可能性があります。以下に、これらの用語と、このガイドでそれらの用語がどのように参照されるかを示します。
-
スタック – スタックは CI/CD パイプラインにデプロイされ、単一のユニットとして追跡可能な IaC です。 この用語は CloudFormation で一般的ですが、Terraform はこの用語を実際には使用しません。Terraform スタックは、すべての子モジュールを含むデプロイされたルートモジュールです。ただし、モジュールという用語との混同を避けるために、このガイドではスタックという用語を使用して両方のツールの単一のデプロイを記述します。
-
状態 - 状態は、現在追跡されているすべてのリソースと、IaC デプロイスタック内の現在の設定です。Terraform の状態とバックエンドについて セクションで説明されているように、Terraform は CloudFormation よりも 状態という用語を使用します。これは、状態の維持は Terraform でより目立つが、状態の追跡と更新は CloudFormation にとって同様に重要であるためです。
-
IaC ファイル – IaC ファイルは、Infrastructure as Code (IaC) 言語を含む単一のファイルです。CloudFormation は、単一の CloudFormation ファイルをテンプレートとして参照します。ただし、Terraform のテンプレート
とテンプレートファイルは まったく異なります。Terraform の CloudFormation テンプレートに相当するものは、設定ファイルと呼ばれます。このガイドの混乱を最小限に抑えるために、 ファイルまたは IaC ファイルという用語は、CloudFormation テンプレートと Terraform 設定ファイルの両方を参照するために使用されます。
次の表は、CloudFormation と Terraform で使用される用語を比較したものです。このテーブルの目的は、類似点を表示することです。これらは one-to-one の比較ではありません。各概念は、CloudFormation と Terraform で少なくともわずかに異なります。概念については、このガイドの関連するセクションで詳しく説明します。
| CloudFormation 用語 | Terraform 用語 | このガイドのセクション |
|---|---|---|
| CDK インターフェイス (IBucket など) | データソース | Terraform データソースについて |
| [変更セット] | プラン | Terraform モジュールについて |
| 条件関数 | 条件式 | Terraform 関数、式、メタ引数について |
DependsOn 属性 |
depends_on メタ引数 |
Terraform 関数、式、メタ引数について |
| 組み込み関数 | 関数 | Terraform 関数、式、メタ引数について |
| モジュール | モジュール | Terraform モジュールについて |
| アウトプット | 出力値 | Terraform 変数、ローカル値、出力について |
| パラメータ | [変数] | Terraform 変数、ローカル値、出力について |
| レジストリ | プロバイダー | Terraform プロバイダーについて |
| テンプレート | 設定ファイル | すべて |