🏷️

Unresolved tagをちゃんと解決するyaml.customTags

2024/01/27に公開

Visual Studio CodeでAWS CloudFormationテンプレートを作成する際の「Unresolved tag」警告をちゃんと解決するyaml.customTagsの設定を紹介します。他のウェブサイト等で見つけられる設定では少し足りない場合があります。

はじめに

YAML拡張機能をVS Codeにインストールしている場合、!RefなどのCloudFormation省略記法が誤りとして検出されてしまします。

この警告をなくすには、YAML拡張機能の設定でカスタムタグを登録する必要があります。

設定方法

  1. VS Codeの設定(Ctrl+,)を開きます
  2. 「yaml.customTags」で検索します
  3. ヒットした「Yaml: Custom Tags」の「Edit in settings.json」を選択します
  4. settings.jsonが開かれるので、その"yaml.customTags": [ ]になっている箇所を以下に置き換えます
settings.jsonの一部
    "yaml.customTags": [
        "!Base64",
        "!Cidr sequence",
        "!And sequence",
        "!Equals sequence",
        "!If sequence",
        "!Not sequence",
        "!Or sequence",
        "!Condition",
        "!FindInMap sequence",
        "!GetAtt",
        "!GetAtt sequence",
        "!GetAZs",
        "!ImportValue",
        "!Join sequence",
        "!Select sequence",
        "!Split sequence",
        "!Sub",
        "!Sub sequence",
        "!Transform mapping",
        "!Ref"
    ]

sequenceやmappingの解説

yaml.customTagsでは"!Ref sequence"のように、カスタムタグに対してscalar(文字列と真偽値)、sequence(配列)、mapping(オブジェクト)のいずれかの型を指定する必要があります。単に"!Ref"とした場合はscalarを指定したことになります。

https://github.com/redhat-developer/vscode-yaml

したがって、適切にyaml.customTagsを設定するには、CloudFormationのそれぞれの組み込み関数に使用される型に合わせて記述すればよいことになります。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html

あとがき

足りなかったら教えてください……

Discussion