View a markdown version of this page

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

Guard を使用してテンプレートを検証する

AWS CloudFormation Guard (cfn-guard) は、policy-as-code ツールです。必須の設定または禁止されている設定を記述するルールを作成してから、これらのルールに照らして JSON または YAML データをチェックします。例えば、テンプレート内のすべての Amazon S3 バケットに暗号化の使用を義務付けることができます。

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

Guard をインストールする

macOS では、Homebrew を使用して Guard をインストールします。

brew install cloudformation-guard

Linux、Windows、その他の macOS インストール方法、およびリリース検証については、「AWS CloudFormation Guard のセットアップ」を参照してください。

ルールを記述する

ルールは .guard 拡張子を付けたファイルに保存します。次の例は、テンプレート内のすべての Amazon S3 バケットにバケット暗号化の指定を義務付けます。

let s3_buckets = Resources.*[ Type == 'AWS::S3::Bucket' ] rule S3_BUCKET_ENCRYPTED when %s3_buckets !empty { %s3_buckets { Properties.BucketEncryption exists } }

ルール構文およびその他の例については、「AWS CloudFormation Guard ルールの記述」を参照してください。

テンプレートを検証する

ルールファイルを --rules に渡し、テンプレートを --data に渡します。

cfn-guard validate --rules rules.guard --data template.yaml

テンプレートが合格すると、コマンドが終了ステータス 0 を返します。ルールが合格しない場合、出力に不合格のルールが表示されます。ディレクトリを --rules および --data に渡して、複数のファイルをチェックすることもできます。

自動ワークフローでルールを使用する前に、組み込みのユニットテストサポートを使用してルールをテストします。手順については、「AWS CloudFormation Guard ルールのテスト」を参照してください。

ワークフローに Guard を追加する

Guard は、ローカルに実行、自動構築で実行、または Git コミット前に実行できます。CloudFormation 言語サーバーは、テンプレートの編集中に Guard ルールパックを実行することもできます。セットアップについては、「CloudFormation 言語サーバー」を参照してください。

CloudFormation および Cloud Control の API オペレーション中にルールを適用するには、Guard Hook を使用します。詳細については、「Guard Hook」を参照してください。

詳細情報

言語とコマンドの完全なリファレンスについては、「AWS CloudFormation Guard ユーザーガイド」を参照してください。ソースコードとリリース情報は、GitHub の AWS CloudFormation Guard リポジトリで入手できます。