AWS SAM YAML模板-未知标签!Ref

Eds*_*onF 6 yaml aws-cloudformation serverless aws-serverless aws-sam

当我尝试部署AWS SAM YAML文件时,它无法显示!Ref是未知标签。

在此处输入图片说明

有什么想法可以解决吗?

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Resources:
  MySimpleFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs4.3
      CodeUri: s3://<bucket>/MyCode.zip
      Events:
        MyUploadEvent:
          Type: S3
          Properties:
            Id: !Ref Bucket
            Events: Create
  Bucket:
    Type: AWS::S3::Bucket
Run Code Online (Sandbox Code Playgroud)

小智 18

首先验证您的扩展,我删除了名为 Redhat yaml 的扩展并解决了问题,我有了下一个扩展,一切正常。

  • vscode-cfn-lint
  • 无服务器集成开发环境
  • aws-cloudformation-yaml
  • 适用于 Visual Studio Code 的 AWS 工具包

  • 删除 Redhat yaml 扩展对我有用 (6认同)
  • vscode-cfn-lint 为我做到了。谢谢 (5认同)

Jen*_* Y. 15

您可以在中添加自定义YAML标签settings.json

    "yaml.customTags": [
    "!Equals sequence",
    "!FindInMap sequence",
    "!GetAtt",
    "!GetAZs",
    "!ImportValue",
    "!Join sequence",
    "!Ref",
    "!Select sequence",
    "!Split sequence",
    "!Sub"
]
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了 `GetAtt` 的问题,除了“更新自定义标签”自动添加的设置之外,还需要添加 `“!GetAtt 序列”`。(还需要添加`“!Cidr”`和`“!Cidr序列”`)。 (6认同)
  • 添加这个对我有帮助。在VSCode中,按ctrl +,搜索_yaml自定义标签_,然后单击settings.json_中的_Edit。 (4认同)
  • 仅供参考,如果您将 neovim 与“coc-yaml”一起使用,添加此功能将非常有效!只需运行 `:CocConfig` &lt;3 将其添加到 `coc-settings.json` 中即可 (2认同)
  • 对于 [neovim-lsp](https://github.com/neovim/nvim-lspconfig#yamlls),这将是 lua 中典型 init 块的一部分,如下所示: ```require'nvim_lsp'.yamlls.setup {settings={yaml={customTags={"!Equals 序列", !FindInMap 序列", !GetAtt 标量", !GetAZs 标量", !ImportValue 标量", !Join 序列标量", !Ref 标量", !Select 序列", !Split 序列", !Sub 标量", !And 序列", !Not 序列", !Equals 序列", !Sub 序列", !ImportValue 标量", !If 序列"}}}} EOF```。 (2认同)

Dun*_*dan 10

此错误消息几乎可以肯定是来自您的 IDE 使用的 YAML 解析器的误报。要评估 AWS SAM 模板的正确性,您应该改用cfn-python-lint,它随附适用于大多数主要 IDE 的插件(遗憾的是不适用于 Visual Studio,但适用于 Visual Studio Code)。


小智 7

在 Visual Studio Code 上,点击File---> Perferences----->Settings 在搜索栏上,输入 Yaml tags,然后会显示Yaml:Custom Tags ClickEdit in settings.json

存档settings.json

"yaml.customTags": [
        "!Cidr",
        "!Cidr sequence",
        "!And",
        "!And sequence",
        "!If",
        "!If sequence",
        "!Not",
        "!Not sequence",
        "!Equals",
        "!Equals sequence",
        "!Or",
        "!Or sequence",
        "!FindInMap",
        "!FindInMap sequence",
        "!Base64",
        "!Join",
        "!Join sequence",
        "!Ref",
        "!Sub",
        "!Sub sequence",
        "!GetAtt",
        "!GetAZs",
        "!ImportValue",
        "!ImportValue sequence",
        "!Select",
        "!Select sequence",
        "!Split",
        "!Split sequence"
    ],
Run Code Online (Sandbox Code Playgroud)

注意:如果您遇到问题"!Cidr",请确保"!Cidr sequence"也包含 ,unresolved Tag问题将得到解决

希望对您有帮助!


Tre*_*van 5

Visual Studio Code 的 Ansible 扩展导致我出现此错误消息。我删除了它,这解决了我的情况。


小智 5

在 vscode 中,单击文件 > 将工作区另存为 > 单击保存

然后,打开workspace.code-workspace并粘贴以下内容:

{   
    "folders": [
      {
        "path": ".."
      }   
    ],   
    "settings": {
      "yaml.customTags": [
        "!Equals sequence",
        "!FindInMap sequence",
        "!GetAtt",
        "!GetAZs",
        "!ImportValue",
        "!Join sequence",
        "!Ref",
        "!Select sequence",
        "!Split sequence",
        "!Sub"
      ]   
    } 
}
Run Code Online (Sandbox Code Playgroud)