Cloud Formation AWS::EC2::SecurityGroup VpcId 取一个字符串?

Cloud Formation AWS::EC2::SecurityGroup VpcId takes a string?

我正在尝试编写一个云形成模板,为负载均衡器设置一个安全组。我有以下 select 安全组的 VPC:

"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" }
  }
},

当我启动堆栈时它失败了:

CREATE_FAILED   AWS::EC2::SecurityGroup LbSecurityGroup
Value of property VpcId must be of type String

首先,为什么 AWS::EC2::SecurityGroup.VpcId 不是 AWS::EC2::VPC::Id 类型?其次,我如何将其按摩成字符串?

提前致谢!

额外的、更具体的类型(如 AWS::EC2::SecurityGroup 而不仅仅是 String)是新的,并且仅用于参数 - 目的是在尝试创建之前验证资源是否存在堆。有关详细信息,请参阅 Using the New CloudFormation Parameter Types

在你的情况下,我认为问题是 VpcId 参数的类型是 AWS::EC2::SecurityGroup 值的列表,而不是单个 AWS::EC2::SecurityGroup 值? AWS::EC2::SecurityGroup 资源的 VpcId 属性 只接受单个字符串,而不是字符串列表 - 请参阅 VpcId

如果您希望用户从下拉列表中选择一个 VPC,则使用AWS::EC2::VPC::Id。

如果您希望用户从复选框列表中select一个或多个 VPC,则使用列表