67

当我尝试部署我的 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
4

6 回答 6

160

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

"yaml.customTags": [
  "!Equals sequence",
  "!FindInMap sequence",
  "!GetAtt",
  "!GetAZs",
  "!ImportValue",
  "!Join sequence",
  "!Ref",
  "!Select sequence",
  "!Split sequence",
  "!Sub"
]
于 2019-05-23T09:08:39.173 回答
24

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

  • vscode-cfn-lint
  • 无服务器 IDE
  • aws-cloudformation-yaml
  • AWS Toolkit for Visual Studio Code
于 2019-08-09T01:02:51.020 回答
10

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

于 2018-11-25T18:19:23.773 回答
9

CloudFormation Visual Studio Code 扩展应该为您管理这些标签

于 2020-09-09T23:39:19.913 回答
5

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

于 2020-01-19T21:46:21.000 回答
3

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

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

{   
    "folders": [
      {
        "path": ".."
      }   
    ],   
    "settings": {
      "yaml.customTags": [
        "!Equals sequence",
        "!FindInMap sequence",
        "!GetAtt",
        "!GetAZs",
        "!ImportValue",
        "!Join sequence",
        "!Ref",
        "!Select sequence",
        "!Split sequence",
        "!Sub"
      ]   
    } 
}
于 2021-05-21T06:55:35.150 回答