CloudFormationテンプレートをVisual Studio Codeで保存した時に自動検証する
テンプレートの検証
AWS-CLIのaws cloudformation validate-template
コマンドを使うと、テンプレート内容を検証できます。
ローカル上のテンプレートファイルを検証する場合は、--template-body
オプションを使い、
aws cloudformation validate-template --template-body ファイルパス
テンプレートのファイルパスを指定して実行します。
試しに、形式バージョンの日付を間違えたYAMLファイルで検証してみます。(正しくは"2010-09-09")
error.template.yaml
AWSTemplateFormatVersion: "2018-09-09" Resources: MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16
実行するとエラーが表示されます。
$ aws cloudformation validate-template --template-body file://error.template.yaml An error occurred (ValidationError) when calling the ValidateTemplate operation: Template format error: 2018-09-09 is not a supported value forAWSTemplateFormatVersion.
Visual Studio Code
テンプレートを作成する時、皆さんはどんなエディタやIDEを使っていますか?
私は、見るだけならエディタで開くことが多いですが、書く場合は Visual Studio Code を利用することが多いです。
Visual Studio Codeには便利なプラグインがいくつも公開されており、テンプレート作成に役立つプラグインもあります。 今回はテンプレートファイルを保存した時に、自動で検証する方法をご紹介します。
Run on Save
Run on Saveプラグインを使用すると、ファイルを保存した時に特定のコマンドを実行できます。
プラグインをインストールしたら、Visual Studio Codeの設定(User Settings)でemeraldwalk.runonsave
構成を追加します。
"emeraldwalk.runonsave": { "commands": [ { "match": "\\.template.(json|yaml)$", "cmd": "aws cloudformation validate-template --template-body file://${file}" } ] }
補足
commands
で複数の条件を設定可能です。今回は1つだけ設定しています。match
でファイル名への正規表現を指定します。ファイル名が*.template.拡張子
、拡張子がjsonまたはyamlを含むものを対象とします。cmd
で実行するコマンドを設定します。${file}
で保存対象のファイルパスを取得できます。
Visual Studio Codeの出力ウィンドウを開き、リストボックスからRun On Save
を選択、テンプレートファイルを保存してみてください。
出力ウィンドウに結果が表示されます。
注意点として、コマンドが実行されるのは既存ファイルを保存した時です。新規にファイルを作成した時は実行されません。
まとめ
テンプレートを書きながら気軽に検証したい場合、IDEやエディタの機能をうまく活用すると便利です。 Visual Studio Codeはテンプレート用の入力補助プラグインがいくつかあるので、おススメのIDEです。
参考
- AWSドキュメント
- AWS CLIコマンドリファレンス
- Visual Studio Code
- Run on Save