当我尝试部署 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
您可以在
settings.json
中添加自定义 YAML 标签:
"yaml.customTags": [
"!Equals sequence",
"!FindInMap sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!Join sequence",
"!Ref",
"!Select sequence",
"!Split sequence",
"!Sub"
]
首先验证您的扩展,我删除了名为 Redhat yaml 的扩展并解决了问题,我有下一个扩展,一切正常。
此错误消息几乎肯定是您的 IDE 使用的 YAML 解析器误报的。要评估 AWS SAM 模板的正确性,您应该使用 cfn-python-lint,它附带适用于大多数主要 IDE 的插件(不幸的是不适用于 Visual Studio,但适用于 Visual Studio Code)。
在 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
问题将得到解决
希望对您有帮助!
Visual Studio Code 的 Ansible 扩展导致了我出现此错误消息。我删除了它,这解决了我的情况的问题。
在 vscode 中,单击文件 > 将工作区另存为 > 单击保存
然后,打开workspace.code-workspace并粘贴以下内容:
{
"folders": [
{
"path": ".."
}
],
"settings": {
"yaml.customTags": [
"!Equals sequence",
"!FindInMap sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!Join sequence",
"!Ref",
"!Select sequence",
"!Split sequence",
"!Sub"
]
}
}