Amazon web services 子网参数不接受列表作为云形成模板aws中的输入
我有一个嵌套的模板设置,我正在尝试将子网值传递给子ELB模板。但是,我不断得到属性子网的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
值必须是字符串列表的类型
错误。
以下是我在父模板中设置值的方式:
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我在父模板中除了传递这些值之外没有做太多工作,而且我没有在父模板中定义任何参数类型,它只是传递值。