格式错误的输入 - 模板格式错误:每个默认成员必须是一个字符串(Cloudformation模板问题)

mha*_*gan 6 amazon-web-services

我正在尝试验证一个cloudformation模板,cfn-validate返回一个无用的错误

"格式错误的输入模板格式错误:每个默认成员必须是一个字符串".

有没有人知道如何调试这个?如果cfn- validate在给出错误时返回错误或至少是资源名称,那将是非常棒的.

CloudformationTemplates调试非常痛苦.

Gus*_*uss 16

指定Parameters并以某种方式计算其默认值(通常是引用其他参数)时会发生此问题.

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


Sha*_*zic 11

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

  LoadBalancerSubnets:
    Description: List of subnets for the ApplicationLoadBalancer
    Type: CommaDelimitedList
    Default: [ "subnet-123456", "subnet-012345" ]
Run Code Online (Sandbox Code Playgroud)

这是由于我对CommaDelimitedList类型的误解。我以为它实际上是一个列表,但事实证明该值应该是单个 String 值,其中各种元素应该用逗号分隔。因此,我将模板更改为如下所示:

  LoadBalancerSubnets:
    Description: List of subnets for the ApplicationLoadBalancer
    Type: CommaDelimitedList
    Default: "subnet-123456,subnet-012345"
Run Code Online (Sandbox Code Playgroud)

这有效。

该错误是一个非常通用的错误,并且可能还有其他场景会引发相同的错误。

但是,我考虑过与此错误分享我的经验,以便它可以帮助遇到相同问题的其他人。

  • “这个错误是一个非常普遍的错误”——确实如此。这解决了我的问题,其中“Type: List<AWS::EC2::Subnet::Id>”且默认值需要为“subnet-123,subnet-456” (3认同)