首页 > 解决方案 > Cloudformation 列表和字符串 :: 属性 SecurityGroupIds 的值必须是字符串列表类型

问题描述

我收到以下错误:

"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

标签: jsonamazon-ec2amazon-cloudformation

解决方案


由于这有效:

Works: "SecurityGroupIds" : { "Ref": "SecurityGroups" },

我推测这SecurityGroups是一个接受安全组列表的参数。因此,使用SecurityGroupsandImportValue将失败,因为一个是 alist而另一个是 a string

因此,您必须构建一个连接的字符串列表不过,这里显示了一种方法yaml。您必须将其修改为json格式。


推荐阅读