Amazon web services 输入模板格式错误:每个默认成员都必须是字符串(Cloudformation模板问题)

Amazon web services 输入模板格式错误:每个默认成员都必须是字符串(Cloudformation模板问题),amazon-web-services,Amazon Web Services,我试图验证cloudformation模板,而cfn validate返回一个无用的错误 “格式错误的输入模板格式错误:每个默认成员都必须是字符串” 有人知道如何调试这个吗?如果cfn- validate将在出现错误时返回错误或至少返回资源名称 CloudformationTemplates调试起来非常痛苦。当您指定参数并以某种方式计算其默认值(通常是引用其他参数)时,就会出现此问题 这是无效的定义-参数的默认值必须严格为字符串,命令行工具可以用其他字符串替换这些字符串。在我的cfn模板中使用类

我试图验证cloudformation模板,而cfn validate返回一个无用的错误

“格式错误的输入模板格式错误:每个默认成员都必须是字符串”

有人知道如何调试这个吗?如果
cfn-
validate
将在出现错误时返回错误或至少返回资源名称


CloudformationTemplates调试起来非常痛苦。

当您指定
参数并以某种方式计算其默认值(通常是引用其他参数)时,就会出现此问题


这是无效的定义-参数的默认值必须严格为字符串,命令行工具可以用其他字符串替换这些字符串。

在我的cfn模板中使用类型为
CommaDelimitedList
的参数时,我收到了相同的错误消息

  LoadBalancerSubnets:
    Description: List of subnets for the ApplicationLoadBalancer
    Type: CommaDelimitedList
    Default: [ "subnet-123456", "subnet-012345" ]
这是因为我对
CommaDelimitedList
类型的错误解释。我认为它实际上是一个列表,但结果是该值应该是一个字符串值,其中各个元素应该用逗号分隔。 因此,我将模板更改为如下所示:

  LoadBalancerSubnets:
    Description: List of subnets for the ApplicationLoadBalancer
    Type: CommaDelimitedList
    Default: "subnet-123456,subnet-012345"
这起作用了


这是一个非常普遍的错误,在其他情况下也可能会抛出相同的错误


但是,我想与大家分享我对这个错误的经验,这样可以帮助其他遇到同样问题的人。

我也在
输出
描述字段中看到了这个错误(我使用的是
!Sub
)。必须删除
!Sub
并使用纯文本。

我认为您没有必要!裁判!我喜欢这个

Parameters:
  RelationTableName: 
    Description: relations table name
    Type: String
    Default: !Ref "relations"

这个错误消息对我来说似乎很有用。检查每个默认成员并验证它们是否都是字符串,也许?错误字符串应该放在单独的一行,并使用>作为引号输入使用`反勾号突出显示句子的内联代码请记住,
Fn::Join
的结果不算作stringsyeah,甚至我也遇到了这个错误。只要检查这个值应该是严格的字符串“默认值”:“aaa bbb ccc”“。此处不接受任何其他值。之前我传递字符串数组,因此出现此错误。您是否参考了AWS文档@guss@KonstantinA.Magg-此处提供了相关文档:。从文档中看,这并不明显,但当他们说“适当类型的值”时,他们指的是实际值,而不是计算值的公式或代码。虽然所有JSON示例都是字符串,甚至是数字类型的字符串,但它们也可以是YAML数字,但它们必须是文字值。“这个错误非常普遍”——事实上。这修复了我的问题,其中
Type:List
,默认值需要是
subnet-123,subnet-456