模板格式错误:在AWS CloudFormation中看到不支持的结构。

92

我正在尝试使用类似下面的命令验证一个AWS示例CloudFormation模板:

▶ aws cloudformation validate-template --template-body template.yml

这将导致以下错误消息:

An error occurred (ValidationError) when calling the ValidateTemplate operation:
  Template format error: unsupported structure. 

我尝试过很多模板,包括AWS文档中的示例模板。所以我知道这些模板没问题。

我做错了什么?


14
对于那些进行关闭投票的人来说,这个问题显然不适合在SO上被关闭。AWS CloudFormation是一个由开发者用于在云中部署应用程序的工具,例如Amazon上的无服务器应用程序。AWS CFN是一种带有编程特性的声明性DSL;没有编程知识的SF人员无法回答这个问题并且对它也没有用处。 - Alex Harvey
3个回答

200

显然,这个非常没有帮助的错误信息是由于CLI命令中的格式不正确造成的。

--template-body参数必须被指定为文件URI

因此,上述命令的正确可运行形式是:

▶ aws cloudformation validate-template --template-body file://template.yml

请参考这篇博客文章获取更多信息。


1
错误提示字符串“hellobucket.yml”不是一个适当的CloudFormation模板,这是正确的 ;) - hellomichibye
5
我的测试表明,在命令行中使用相对路径到文件时,只要包括file://就可以正常工作。 - Jon
4
未来读者需注意:--template-body 命令行参数需要一个字符串类型的参数,即作为字符串的模板。使用 file:// 可以提供本地文件而不是字符串。 - Les
3
没有你的答案,我就无法解决这个问题!你在天堂有一个特别的位置… - Benjamin
跟 @Benjamin 一样的评论。你救了我的一天。AWS真的应该改进这个错误消息。我已经重新写了我的模板,但还是出现了错误。 - Vishal
显示剩余2条评论

5

如果您正在使用Windows文件系统,可以这样使用:

--template-body file://c:/Windows/myfile.json


--template-body file://localhost/c$/Windows/myfile.json

0
` aws cloudformation create-stack --region us-east-1 \
 --stack-name c3-app -\
 -template-body file:..//starter/c3-app.yml \
 --capabilities CAPABILITY_IAM
`

模板主体必须指定为文件:“当前位置的文件目标位置”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接