テンプレートの概要 - AWS CloudFormation

テンプレートの概要

AWS CloudFormation テンプレートは、スタックの一部として作成、更新、または削除する AWS リソースを定義します。これは複数のセクションで構成されていますが、必須のセクションは Resources セクションのみであり、このセクションは少なくとも 1 つのリソースを宣言する必要があります。

テンプレートファイルは、JSON または YAML 形式で記述された、特定のフォーマット規則に従います。JSON はより冗長で硬直的ですが、YAML はより読みやすく、柔軟性があります。詳細については、「テンプレート形式」を参照してください。

テンプレートが保存される場所

Amazon S3 バケット

CloudFormation テンプレートは Amazon S3 バケットに保存できます。スタックを作成または更新する際に、テンプレートを直接アップロードする代わりに、テンプレートの S3 URL を指定できます。

AWS Management Console または AWS CLI を通じてテンプレートを直接アップロードすると、S3 バケットが自動的に作成されます。詳細については、「CloudFormation コンソールからスタックを作成する」を参照してください。

Git リポジトリ

Git 同期を使用すると、Git リポジトリにテンプレートを保存できます。スタックを作成または更新する際に、テンプレートを直接アップロードしたり、S3 URL を参照したりする代わりに、テンプレートを含む Git リポジトリの場所とブランチを指定できます。CloudFormation は、指定されたリポジトリとブランチでテンプレートの変更を自動的にモニタリングします。

テンプレートの検証

構文の検証

テンプレートの JSON または YAML 構文を検証するには、validate-template CLI コマンドを使用するか、またはコンソールでテンプレートを指定します。コンソールは検証を自動的に実行します。ただし、これらのメソッドはテンプレートの構文のみを検証し、リソースのために指定したプロパティ値は検証しません。

その他の検証ツール

より複雑な検証とベストプラクティスチェックには、次のような追加のツールを使用できます。

  • CloudFormation Linter (cfn-lint)リソースプロバイダースキーマに照らしてテンプレートを検証します。リソースプロパティの有効な値の確認やベストプラクティスが含まれます。

  • CloudFormation Rain (rain fmt) – CloudFormation テンプレートを一貫性のある標準にフォーマットするか、または JSON から YAML (もしくは YAML から JSON) にテンプレートを再フォーマットします。YAML を使用する際のコメントを保持し、組み込み関数の使用を短い構文に切り替えます (可能な場合)。

テンプレートの開始方法

CloudFormation テンプレートの作成を開始するには、次のステップに従います。

  1. リソースを選択する – EC2 インスタンス、VPC、セキュリティグループなど、スタックに含める AWS リソースを特定します。

  2. テンプレートを記述する – テンプレートを JSON または YAML 形式で記述し、リソースとそのプロパティを定義します。

  3. テンプレートを検証するテンプレートの検証 セクションで説明されている方法を使用してテンプレートを検証します。

  4. スタックを作成する – 検証済みテンプレートを使用してスタックを作成します。

追加リソース

  • AWS リソースおよびプロパティタイプのリファレンス は、さまざまなリソースタイプを宣言するための構文を提供します。

  • 文字列の結合やテンプレート内の他のリソースの参照などのタスクを実行するために使用できる 組み込み関数リファレンス ドキュメント関数。一般的に使用される組み込み関数には、次が含まれます。

    • Ref – パラメータの値またはリソースの物理 ID を取得します。

    • Sub – 文字列のプレースホルダーを実際の値に置き換えます。

    • GetAtt – テンプレート内のリソースから属性の値を返します。

    • Join – 値のセットを 1 つの文字列に結合します。

  • リソース属性リファレンス は、使用できる特別な属性をドキュメント化します。これには、次が含まれます。

    • DependsOn – この属性を使用して、あるリソースに続けて別のリソースを作成する必要があることを指定できます。

    • DeletionPolicy – この属性を使用して、リソースの削除を CloudFormation でどのように処理するかを指定します。

    • Metadata – この属性を使用して、リソースで構造化データを指定します。