我收到以下错误:
"errorMessage": "Stack ID: stack-qenlamel5rn7p1icu Failure Reason: [Instance creation failed with reason: Value of property SecurityGroupIds must be of type List of String, stack-qenlamel5rn7p1icu creation failed with reason: The following resource(s) failed to create: [Instance].
我使用的代码是:
"SecurityGroupIds": [{
"Fn::ImportValue": {
"Fn::Sub": "${EnvIdentifier}-EC2SecurityGroup"
}
}, {
"Ref": "SecurityGroups"
}],
正如您所看到的,我同时使用 Ref 和 Fn::ImportValue 来创建单个“字符串列表”。我已经分别尝试过并且它们都有效。即:
1. Works:
"SecurityGroupIds" : { "Ref": "SecurityGroups" },
2. Works:
"SecurityGroupIds" : [ { "Fn::ImportValue" : {"Fn::Sub": "${EnvIdentifier}-EC2SecurityGroup" } } ]
我一起得到了上述错误。尝试了各种事情,例如 join
等。
最佳答案
既然这样有效:
Works: "SecurityGroupIds" : { "Ref": "SecurityGroups" },
我推测 SecurityGroups
是一个参数,它采用安全组列表。因此,同时使用 SecurityGroups
和 ImportValue
将会失败,因为其中一个是 list
,另一个是 string
。
因此,您必须构造一个连接的字符串列表。显示了一种方法 here不过在 yaml 中。您必须将其修改为 json
格式。
关于json - Cloudformation 列表和字符串::SecurityGroupIds 属性的值必须是字符串列表类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62948717/