Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 子网参数不接受列表作为云形成模板aws中的输入_Amazon Web Services_Yaml_Amazon Cloudformation_Devops - Fatal编程技术网

Amazon web services 子网参数不接受列表作为云形成模板aws中的输入

Amazon web services 子网参数不接受列表作为云形成模板aws中的输入,amazon-web-services,yaml,amazon-cloudformation,devops,Amazon Web Services,Yaml,Amazon Cloudformation,Devops,我有一个嵌套的模板设置,我正在尝试将子网值传递给子ELB模板。但是,我不断得到属性子网的值必须是字符串列表的类型错误。 以下是我在父模板中设置值的方式: ELBSubnetAZ: "subnet-*****,subnet-****" ELBSubnetAZ: !FindInMap [ AccountSettings, !Ref "ChefServerRegion", ELBSubnetAZ ] 以下是我将值传递给子模板的方式: ELBSubnetAZ: "subnet-*****,subne

我有一个嵌套的模板设置,我正在尝试将子网值传递给子ELB模板。但是,我不断得到属性子网的
值必须是字符串列表的类型
错误。 以下是我在父模板中设置值的方式:

ELBSubnetAZ: "subnet-*****,subnet-****"
ELBSubnetAZ: !FindInMap [ AccountSettings, !Ref "ChefServerRegion", ELBSubnetAZ ]
以下是我将值传递给子模板的方式:

ELBSubnetAZ: "subnet-*****,subnet-****"
ELBSubnetAZ: !FindInMap [ AccountSettings, !Ref "ChefServerRegion", ELBSubnetAZ ]
以下是我在子模板中使用值的方式:

ELBSubnetAZ:
 Description: "ELB Subnet 1"
 Type: "List<AWS::EC2::Subnet::Id>"
在资源中:

  Subnets:
      - !Ref ELBSubnetAZ
如果我只从父模板传递子网的单个值,并在子模板中接受作为字符串变量,那么一切都很好。
我遗漏了什么?

以下是我解决问题的方法:

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

ELBSubnetAZ:
  Description: "ELB Subnets"
  Type: String
在我的资源中,我是这样拆分它的:

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

我是这样解决的:

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

ELBSubnetAZ:
  Description: "ELB Subnets"
  Type: String
在我的资源中,我是这样拆分它的:

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

我遇到了同样的问题。 我最初用于部署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
我修复了模板中的子网属性部分,如下所示,然后我成功地创建了堆栈:

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
参数:
子网:
键入:“列表”
描述:ELB的子网ID
资源:
MyLoadBalancer:
类型:“AWS::ElasticLoadBalancer::LoadBalancer”
特性:
听众:
-LoadBalancer端口:“80”
InstancePort:'80'
协议:HTTP
子网:
- !参加
- ','
- !参考子网

我遇到了同样的问题。 我最初用于部署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
我修复了模板中的子网属性部分,如下所示,然后我成功地创建了堆栈:

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
参数:
子网:
键入:“列表”
描述:ELB的子网ID
资源:
MyLoadBalancer:
类型:“AWS::ElasticLoadBalancer::LoadBalancer”
特性:
听众:
-LoadBalancer端口:“80”
InstancePort:'80'
协议:HTTP
子网:
- !参加
- ','
- !参考子网

问题似乎出在您的父模板中。您能发布一个更大的代码段吗,特别是您将子网ID传递到子堆栈的代码段?@spg我在父模板中除了传递这些值之外没有做太多工作,而且我没有在父模板中定义任何参数类型,它只是传递值。问题似乎出在您的父模板中。能否请您发布一个更大的代码段,特别是将子网ID传递给子堆栈的代码段?@spg我在父模板中除了传递这些值之外没有做太多工作,而且我没有在父模板中定义任何参数类型,它只是传递值。