View a markdown version of this page

cloudformation-validate を使用してテンプレートを検証する - AWS CloudFormation

cloudformation-validate を使用してテンプレートを検証する

GitHub で入手できるオープンソースの cloudformation-validate プロジェクトは、JSON および YAML CloudFormation テンプレートをローカルでチェックします。このプロジェクトは、無効なテンプレート構造、破損した参照、セキュリティ問題、ベストプラクティス問題を検出できます。各検出結果には、問題、問題の重大度、テンプレート内の場所が含まれます。

ツールには必要なルールと CloudFormation リソース定義が含まれているため、インストール後はネットワークアクセスや AWS 認証情報なしで実行できます。

検証方法を選択する

  • コマンドライン – cfn-validate を実行して、ターミナルまたは自動構築からディレクトリ内にある 1 つのテンプレートまたはすべてのテンプレートをチェックします。

  • ライブラリ – Rust、Node.js、Python、Go、または JVM アプリケーションにバリデータを追加し、コード内の結果を処理します。

  • AWS CDK – CDK がテンプレートを合成した後で、それらを自動的に検証します。

  • カスタムルール – CEL、Rego、または Guard ルール言語で記述されたチェックを追加します。サポートされているルール形式と例については、GitHub の「カスタムルールリファレンス」を参照してください。Guard ルール構文については、本ガイドの「Guard を使用してテンプレートを検証する」を参照してください。

コマンドラインツールをインストールする

GitHub で 最新の cfn-validate リリース を開き、お使いのオペレーティングシステムとプロセッサ向けの cfn-validate ファイルをダウンロードします。GitHub の「インストールガイド」に従ってファイルの名前を cfn-validate に変更し、PATH に追加して、ダウンロードしたファイルを検証します。

検証を実行する

このコマンドは次の構文を使用します。

cfn-validate TEMPLATE_OR_DIRECTORY [OPTIONS]

1 つのテンプレートをチェックします。

cfn-validate template.yaml

ディレクトリを渡して、すべての .yaml、.yml、および .json ファイルを再帰的にチェックします。

cfn-validate ./templates/

コマンドは、構造化された JSON 検証レポートを標準出力に書き込みます。簡潔な出力には --format standard、デフォルトの詳細レポートには --format detailed を使用します。

コマンドは、エラーや致命的な診断が見つからないときは 0、エラーや致命的な診断が見つかったときは 1 を返し、使用法エラーや初期化エラー (無効なオプションや存在しないファイルなど) については 2 を返します。

すべてのエンジン、フィルター、出力形式、およびパラメータについては、GitHub の「cfn-validate CLI リファレンス」を参照してください。

カスタムルールを追加する

--rule-source を使用してカスタムの Rego または CEL ルールファイルを読み込みます。--guard-rule-source を使用して Guard ルールファイルまたはディレクトリを読み込みます。どちらのオプションも、繰り返し指定して複数のルールソースを読み込むことができます。

cfn-validate template.yaml --rule-source ./rules/my-rule.rego cfn-validate template.yaml --guard-rule-source ./guard-rules/

ルールの形式と例については、GitHub の「カスタムルールリファレンス」を参照してください。

検証ライブラリを埋め込む

使用しているプログラミング言語の公開パッケージをインストールして、同一のオフラインチェックをアプリケーションから実行します。検証エンジンを 1 度だけ作成し、複数のテンプレートに再利用して、各テンプレートに返される構造化診断を処理します。ライブラリ API を使用して、カスタムの CEL、Rego、または Guard ルールを設定することもできます。

インストール手順とサポートされているプラットフォームについては、「言語バインディングのインストールガイド」を参照してください。

すべての言語の完全な例と各 API ガイドへのリンクについては、GitHub のプロジェクトドキュメントで「ライブラリとしての埋め込み」を参照してください。

AWS CDK で使用する

AWS CDK を使用する場合、バリデータを個別にインストールする必要はありません。AWS CDK コンストラクトライブラリには、CloudFormation テンプレートの合成後に同一のチェックを自動的に実行するデフォルトの CloudFormationValidatePlugin が含まれています。

cdk synth

CDK は、考えられるデプロイ失敗とベストプラクティス検出結果を検証結果とともに報告します。カスタムの Rego または Guard ルールを追加する場合は、CloudFormationValidatePlugin を明示的に設定できます。

プラグインの設定、確認、および検証レポートについては、「AWS CDK API リファレンス」の「テンプレートとポリシーの検証」を参照してください。

検証スコープを理解する

ローカル検証の制限とデプロイ前に実行する手順については、「検証スコープを理解する」を参照してください。