CloudFormation テンプレートの使用
AWS CloudFormation テンプレートは、スタックの一部として作成、更新、または削除する AWS リソースを定義します。これは複数のセクションで構成されていますが、必須のセクションは Resources セクションのみであり、このセクションは少なくとも 1 つのリソースを宣言する必要があります。
以下の方法で、ポリシーストアを作成できます。
-
AWS Infrastructure Composer – テンプレートを設計するためのビジュアルインターフェイス。
-
テキストエディタ – テンプレートを JSON または YAML 構文で記述します。
-
IaC ジェネレーター – CloudFormation で現在管理されていないアカウントでプロビジョニングされたリソースからテンプレートを生成します。IaC ジェネレーターは、ご使用のリージョンで Cloud Control API によってサポートされている幅広いリソースタイプに対応しています。
このセクションでは、CloudFormation テンプレートのさまざまなセクションを使用する方法と、スタックテンプレートの作成を開始する方法に関する包括的なガイドを提供します。次のトピックについて説明します。
トピック
テンプレートが保存される場所
Amazon S3 バケット
CloudFormation テンプレートは Amazon S3 バケットに保存できます。スタックを作成または更新する際に、テンプレートを直接アップロードする代わりに、テンプレートの S3 URL を指定できます。
AWS マネジメントコンソール または AWS CLI を通じてテンプレートを直接アップロードすると、S3 バケットが自動的に作成されます。詳細については、「CloudFormation コンソールからスタックを作成する」を参照してください。
Git リポジトリ
Git 同期を使用すると、Git リポジトリにテンプレートを保存できます。スタックを作成または更新する際に、テンプレートを直接アップロードしたり、S3 URL を参照したりする代わりに、テンプレートを含む Git リポジトリの場所とブランチを指定できます。CloudFormation は、指定されたリポジトリとブランチでテンプレートの変更を自動的にモニタリングします。詳細については、「Git 同期を使用してリポジトリソースコードからスタックを作成する」を参照してください。
テンプレートの検証
デプロイ前にテンプレートを検証して、早い段階で問題を発見し、修正できるようにします。CloudFormation サービスと本セクションのツールは、テンプレートのさまざまな部分をチェックします。これらは組み合わせて使用できます。
テンプレートが有効な JSON または YAML を使用しているかどうかは、validate-template CLI コマンドを使用する、または AWS マネジメントコンソール でテンプレートを指定することでチェックできます。コンソールは、このチェックを自動的に実行します。これらのサービス側でのチェックでは、以下のツールが提供する追加のプロパティ、セキュリティ、またはベストプラクティスチェックが実行されません。
-
CloudFormation 言語サーバー – エディタでテンプレートを記述する間に、提案、ドキュメント、検証フィードバックを取得します。
-
CloudFormation Linter – コマンドライン、エディタ、または自動構築から、リソースのプロパティ、許可される値、および一般的な問題をチェックします。
-
CloudFormation Validate – コマンドラインまたはライブラリからオフラインのローカルチェックを実行し、カスタムの Rego
または Guard ルールを追加します。AWS CDK は、テンプレートの合成後にこのバリデータを自動的に使用します。 -
CloudFormation Guard – ポリシールールを作成し、組織のセキュリティ要件、コンプライアンス要件、ガバナンス要件に照らしてテンプレートをチェックします。
AI コーディングエージェントで使用する
AI コーディングエージェントは、GitHub の Agent Toolkit for AWSaws-cloudformation スキルを使用することで、CloudFormation テンプレートの作成、検証、トラブルシューティングを支援できます。インストール手順については、「エージェントセットアップガイド」を参照してください。
検証スコープを理解する
ローカルツールは、ユーザーが指定するテンプレートとルールをチェックします。これらのツールは、AWS アカウントおよび AWS リージョン内の現在のリソース、許可、クォータを使用したデプロイが成功することを保証できません。デプロイする前に、変更セットを確認し、CloudFormation サービスが報告した問題を修正してください。
テンプレートの開始方法
CloudFormation テンプレートの作成を開始するには、次のステップに従います。
-
リソースを選択する – EC2 インスタンス、VPC、セキュリティグループなど、スタックに含める AWS リソースを特定します。
-
テンプレートを記述する – テンプレートを JSON または YAML 形式で記述し、リソースとそのプロパティを定義します。
-
テンプレートの保存 – テンプレートは、
.json、.yaml、.txtなどのファイル拡張子でローカルに保存します。 -
テンプレートを検証する – テンプレートの検証 セクションで説明されている方法を使用してテンプレートを検証します。
-
スタックを作成する – 検証済みテンプレートを使用してスタックを作成します。
CloudFormation テンプレートリファレンスを使用する予定
テンプレートを作成すると、「AWS リソースおよびプロパティタイプのリファレンス」でさまざまなリソースタイプの詳細な構文に関するドキュメントを確認できます。
多くの場合、スタックテンプレートには、ランタイムまで使用できないプロパティ値を割り当てる組み込み関数と、リソースの動作を制御するための特別な属性が必要です。テンプレートを作成するときは、以下のガイダンスのリソースを参照してください。
-
組み込み関数リファレンス – 一般的に使用される組み込み関数には、次のようなものがあります。
-
Ref– パラメータの値またはリソースの物理 ID を取得します。 -
Sub– 文字列のプレースホルダーを実際の値に置き換えます。 -
GetAtt– テンプレート内のリソースから属性の値を返します。 -
Join– 値のセットを 1 つの文字列に結合します。
-
-
リソース属性リファレンス – 一般的に使用される特殊な属性には、次のようなものがあります。
-
DependsOn– この属性を使用して、あるリソースに続けて別のリソースを作成する必要があることを指定できます。 -
DeletionPolicy– この属性を使用して、リソースの削除を CloudFormation でどのように処理するかを指定します。
-
サンプルテンプレート
CloudFormation は、使用を開始するために使用できるオープンソースのスタックテンプレートを提供します。詳細については、GitHub の「CloudFormationサンプルテンプレート
これらのテンプレートは本番用ではないことに留意してください。どのように機能するかを知り、ニーズに適応させ、会社のコンプライアンス基準を満たしているようにするために時間を設けるべきです。
このリポジトリ内の各テンプレートは、CloudFormation Linter