我正在尝试编写一个云形成模板,为负载均衡器设置安全组。我有以下内容为SecurityGroup选择一个VPC:
cout << regex_replace( "foobar0x1", regex_a, "$1" ) << "0xNUM" << endl;
然后创建我拥有的负载均衡器安全组:
"Parameters" : {
"VpcId" : {
"Description" : "VPC associated with the provided subnets",
"Type" : "List<AWS::EC2::VPC::Id>"
},
},
当我启动堆栈时,它失败了:
"LbSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Stack LBs",
"VpcId" : { "Ref" : "VpcId" }
}
},
首先,为什么不是AWS :: EC2 :: VPC :: Id类型的AWS :: EC2 :: SecurityGroup.VpcId?第二,我如何按摩它?
提前致谢!
答案 0 :(得分:3)
其他更具体的类型(如AWS::EC2::SecurityGroup
而不仅仅是String
)是新的,仅用于参数 - 目的是在尝试创建堆栈之前验证资源是否存在。有关详细信息,请参阅Using the New CloudFormation Parameter Types。
在您的情况下,我认为问题是VpcId
参数的类型是AWS::EC2::SecurityGroup
值的列表,而不是单个AWS::EC2::SecurityGroup
值? VpcId
资源的AWS::EC2::SecurityGroup
属性只需要单个字符串,而不是字符串列表 - 请参阅VpcId。
答案 1 :(得分:2)
如果您希望用户从下拉列表中选择一个 VPC,请使用AWS :: EC2 :: VPC :: Id。
如果您希望用户从复选框列表中选择一个或多个 VPC,请使用List&lt; AWS :: EC2 :: VPC :: Id&gt;。