【问题标题】:Subnet parameter doesnt accept list as an input in cloud formation template aws子网参数不接受列表作为云形成模板 aws 中的输入
【发布时间】:2017-07-19 19:29:05
【问题描述】:

我有一个嵌套模板设置,我正在尝试将子网值传递给子 ELB 模板。但是,我不断收到Value of property Subnets must be of type List of String 错误。 这就是我在父模板中设置值的方式:

ELBSubnetAZ: "subnet-*****,subnet-****"

这就是我将值传递给子模板的方式:

ELBSubnetAZ: !FindInMap [ AccountSettings, !Ref "ChefServerRegion", ELBSubnetAZ ]

这就是我在子模板中使用值的方式:

ELBSubnetAZ:
 Description: "ELB Subnet 1"
 Type: "List<AWS::EC2::Subnet::Id>"

我也试过了:

 ELBSubnetAZ:
  Description: "ELB Subnet 1"
  Type: CommaDelimitedList

在资源中:

  Subnets:
      - !Ref ELBSubnetAZ

如果我只从父模板传递一个子网值并在子模板中接受作为字符串变量,这一切都很好。 我错过了什么?

【问题讨论】:

  • 问题似乎出在您的父模板中。您能否发布一个更大的 sn-p,尤其是您将子网 ID 传递给子堆栈的 sn-p?
  • @spg 除了传递这些值之外,我在父模板中没有做太多事情,我也没有在父模板中定义任何参数类型,它只是传递值。

标签: amazon-web-services yaml amazon-cloudformation devops


【解决方案1】:

我遇到了同样的问题。 我用于部署 ELB 的原始 AWS CF 模板是:

Parameters:
  ELBSubnetID:
    Type: 'List<AWS::EC2::Subnet::Id>'
    Description: Subnet ID for ELB
Resources:
  MyLoadBalancer:
    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
    Properties:
      Listeners:
        - LoadBalancerPort: '80'
          InstancePort: '80'
          Protocol: HTTP
      Subnets:
        - !Ref ELBSubnetID

当我使用模板在 AWS CF 中创建堆栈时,它抛出了以下错误消息:

Value of property Subnets must be of type List of String

我修复了模板中的 Subnets 属性部分,如下所示,然后我能够成功创建堆栈:

Parameters:
  ELBSubnetID:
    Type: 'List<AWS::EC2::Subnet::Id>'
    Description: Subnet ID for ELB
Resources:
  MyLoadBalancer:
    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
    Properties:
      Listeners:
        - LoadBalancerPort: '80'
          InstancePort: '80'
          Protocol: HTTP
      Subnets:
        - !Join
          - ','
          - !Ref ELBSubnetID

【讨论】:

    【解决方案2】:

    我是这样解决的:

    我没有在父模板中进行任何更改,但在子模板中我收到了字符串形式的值,然后使用 Fn::Split 函数将字符串拆分为列表。幸运的是,Fn::Split 函数输出返回 List。

    ELBSubnetAZ:
      Description: "ELB Subnets"
      Type: String
    

    在我的资源中,这就是我拆分它的方式:

    Subnets: { "Fn::Split" : [ ",", { "Ref":"ELBSubnetAZ" } ] }
    

    【讨论】:

      猜你喜欢
      • 2019-10-20
      • 2020-04-14
      • 2021-08-24
      • 2020-07-22
      • 2018-10-23
      • 1970-01-01
      • 2015-02-15
      • 2020-01-02
      • 2019-06-13
      相关资源
      最近更新 更多