我正在尝试验证一个cloudformation模板,而cfn-validate返回一个无用的错误
“格式错误的输入模板格式错误:每个默认成员必须是字符串”。
有人知道如何调试这个吗?如果cfn-
validate
将返回错误或至少在给出错误时返回资源名称,那将是非常棒的。
CloudformationTemplates调试非常痛苦。
答案 0 :(得分:9)
当您指定Parameter
并以某种方式计算其默认值(通常是引用其他参数)时,会发生此问题。
这是定义无效 - 参数的默认值必须是命令行工具可以用其他字符串替换的严格字符串。
答案 1 :(得分:0)
在我的cfn模板中使用类型为AlarmManager
的参数时,我收到了相同的错误消息。
CommaDelimitedList
这是由于我对 LoadBalancerSubnets:
Description: List of subnets for the ApplicationLoadBalancer
Type: CommaDelimitedList
Default: [ "subnet-123456", "subnet-012345" ]
类型的错误理解。我以为这实际上是一个列表,但事实证明,该值应该是单个String值,其中的各个元素应该用逗号分隔。
因此,我将模板更改为如下所示:
CommaDelimitedList
这有效。
该错误是一种非常普遍的错误,在其他情况下也可能引发相同的错误。
但是,我考虑过与我分享有关此错误的经验,以便对其他遇到相同问题的人有所帮助。
答案 2 :(得分:0)
我也看到了Outputs
描述字段的错误(我正在使用!Sub
)。必须删除!Sub
并仅使用纯文本。
答案 3 :(得分:0)
我认为您像这样一个不必要的!Ref或!Sub
Authorization