VSCodeでAWS CloudFormationをYAMLで作成する環境の設定手順です。
やること
VSCodeのセットアップ
MacへのVSCodeインストール(とgit連携)はこちらを参照
nopipi.hatenablog.com
YAMLエクステンションの追加
CloudFormationの構文チェック用のカスタム設定追加
下記設置を追加します
- CloudFormation仕様の追加
- CloudFormationのカスタムタグ定義の追加
設定(1) CloudFormation仕様の追加
VSCodeの設定ファイル(Macの場合: $HOME/Library/Application Support/Code/User/settings.json)*1に、CloudFormationのリソース仕様を追加します。この設定でをすると、拡張子がcf.yamlのファイル、cfn/、cloudformation配下のYAMLファイルがCloudFormation用のYAMLとして指定したソース仕様にしたがってチェックされます。
"yaml.schemas": { "https://d33vqc0rt9ld30.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json": [ "*.cf.yaml", "*.cf.yml", "cfn/*.yaml", "cfn/*.yml", "cloudformation/*.yaml", "cloudformation/*.yml" ] },
設定(2) CloudFormationのカスタムタグ定義の追加
デフォルトのままだと!Sub, !RefなどのCloudFormation固有のスキーマがYAMLの構文エラーとなるため、これら固有スキーマを追加します。内容はこちらのIssueのAndyJPhillipsさんのコメント内容を流用しています。
"yaml.customTags": [ "!And sequence", "!Equals sequence", "!If sequence", "!Not sequence", "!Or sequence", "!Base64", "!Cidr sequence", "!FindInMap sequence", "!GetAtt", "!GetAZs", "!ImportValue", "!Join sequence", "!Select sequence", "!Split sequence", "!Sub", "!Ref" ]
(参考)setting.json全体の内容
設定(1)&(2)をすると、既存の設定に、下記設定が追加された形になります。
{ <既存の設定> "yaml.schemas": { "https://d33vqc0rt9ld30.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json": [ "*.cf.yaml", "*.cf.yml", "cfn/*.yaml", "cfn/*.yml", "cloudformation/*.yaml", "cloudformation/*.yml" ] }, "yaml.customTags": [ "!And sequence", "!Equals sequence", "!If sequence", "!Not sequence", "!Or sequence", "!Base64", "!Cidr sequence", "!FindInMap sequence", "!GetAtt", "!GetAZs", "!ImportValue", "!Join sequence", "!Select sequence", "!Split sequence", "!Sub", "!Ref" ] }