当我尝试部署我的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
答案 0 :(得分:5)
Visual Studio Code的Ansible扩展对我造成了此错误消息。我将其删除,这为我的情况解决了问题。
答案 1 :(得分:4)
答案 2 :(得分:2)
首先验证您的扩展程序,我消除了名为Redhat yaml的扩展程序并解决了问题,我有了下一个扩展程序,一切正常。
答案 3 :(得分:1)
几乎可以肯定,此错误消息是您的IDE使用的YAML解析器中的一个假阳性。要评估AWS SAM模板的正确性,您应该改用cfn-python-lint,该插件随大多数主要IDE一起提供(不幸的是,不是Visual Studio,而是Visual Studio Code)。
答案 4 :(得分:0)
您可以在settings.json
中添加自定义YAML标签:
"yaml.customTags": [
"!Equals sequence",
"!FindInMap sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!Join sequence",
"!Ref",
"!Select sequence",
"!Split sequence",
"!Sub"
]
答案 5 :(得分:0)
在 vscode 中,点击文件 > 将工作区另存为 > 点击保存
然后,打开workspace.code-workspace并粘贴以下内容:
{
"folders": [
{
"path": ".."
}
],
"settings": {
"yaml.customTags": [
"!Equals sequence",
"!FindInMap sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!Join sequence",
"!Ref",
"!Select sequence",
"!Split sequence",
"!Sub"
]
}
}
答案 6 :(得分:-1)
您可以使用全名。只需删除!,用引号将其包装,并将整个表达式用{}:
{"Ref": Bucket}