AWS SAM YAML 模板 - 未知标签!参考

问题描述 投票:0回答:7

当我尝试部署 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
yaml aws-cloudformation serverless aws-serverless aws-sam
7个回答
195
投票

您可以在

settings.json
中添加自定义 YAML 标签:

"yaml.customTags": [
  "!Equals sequence",
  "!FindInMap sequence",
  "!GetAtt",
  "!GetAZs",
  "!ImportValue",
  "!Join sequence",
  "!Ref",
  "!Select sequence",
  "!Split sequence",
  "!Sub"
]

38
投票

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

  • vscode-cfn-lint
  • 无服务器IDE
  • aws-cloudformation-yaml
  • AWS Toolkit for Visual Studio Code

11
投票

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



6
投票

在 Visual Studio Code 上,单击

File
--->
Perferences
----->
Settings
在搜索栏输入
Yaml tags
,就会显示
Yaml:Custom Tags
点击
Edit 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"
    ],

注意:如果您对

"!Cidr"
有问题,请确保也包含
"!Cidr sequence"
unresolved Tag
问题将得到解决

希望对您有帮助!


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"
      ]   
    } 
}
© www.soinside.com 2019 - 2024. All rights reserved.