云形成AWS :: EC2 :: SecurityGroup VpcId需要一个字符串?

时间:2015-04-22 22:31:34

标签: amazon-web-services amazon-cloudformation

我正在尝试编写一个云形成模板,为负载均衡器设置安全组。我有以下内容为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?第二,我如何按摩它?

提前致谢!

2 个答案:

答案 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;。