AWS ELB cloudformation 按条件为 HTTPS 和 HTTP
AWS ELB cloudformation by conditonsfor both HTTPS & HTTP
因为我正在尝试在 IsSSL = HTTPS/HTTP
的条件下创建 ELB
HTTPS=443,HTTP=80。
以上值作为变量从 yaml 文件传递。
如果条件为真,则应 select 使用 Fn::If 条件的相应负载均衡器端口。但是我在构建堆栈时遇到错误,下面的子网部分工作正常。对此有任何帮助吗?
错误:属性 loadbalancerport 的值必须是字符串类型
Conditions:
IsSSl:
'Fn::Equals':
- $(IsSSL)
- HTTPS
RsbatchELB:
DependsOn: RsbatchELBSecurityGroup
Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
Properties:
Listeners:
- LoadBalancerPort:
- 'Fn::If':
- IsSSL
- $(HttpS)
- $(HttP)
Subnets:
- 'Fn::If':
- IsPublicELB
- $(publicSubnet-a)
- $(private-subnet-a)
- 'Fn::If':
- IsPublicELB
- $(publicSubnet-b)
- $(private-subnet-b)
您的示例似乎使用了与 AWS Condition Functions documentation
不一致的内部函数语法
那里有这样的语法:
Syntax for the full function name:
Fn::If: [condition_name, value_if_true, value_if_false]
Syntax for the short form:
!If [condition_name, value_if_true, value_if_false]
尝试:
- LoadBalancerPort:
- !If [IsSSL, !Ref HttpS, !Ref HttP]
您正在传递 LoadBalancerPort
一个带有那个流浪者 -
的列表。试试这个:
Listeners:
- LoadBalancerPort:
'Fn::If':
- IsSSL
- $(HttpS)
- $(HttP)
因为我正在尝试在 IsSSL = HTTPS/HTTP
的条件下创建 ELB
HTTPS=443,HTTP=80。
以上值作为变量从 yaml 文件传递。
如果条件为真,则应 select 使用 Fn::If 条件的相应负载均衡器端口。但是我在构建堆栈时遇到错误,下面的子网部分工作正常。对此有任何帮助吗?
错误:属性 loadbalancerport 的值必须是字符串类型
Conditions:
IsSSl:
'Fn::Equals':
- $(IsSSL)
- HTTPS
RsbatchELB:
DependsOn: RsbatchELBSecurityGroup
Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
Properties:
Listeners:
- LoadBalancerPort:
- 'Fn::If':
- IsSSL
- $(HttpS)
- $(HttP)
Subnets:
- 'Fn::If':
- IsPublicELB
- $(publicSubnet-a)
- $(private-subnet-a)
- 'Fn::If':
- IsPublicELB
- $(publicSubnet-b)
- $(private-subnet-b)
您的示例似乎使用了与 AWS Condition Functions documentation
不一致的内部函数语法那里有这样的语法:
Syntax for the full function name:
Fn::If: [condition_name, value_if_true, value_if_false]
Syntax for the short form:
!If [condition_name, value_if_true, value_if_false]
尝试:
- LoadBalancerPort:
- !If [IsSSL, !Ref HttpS, !Ref HttP]
您正在传递 LoadBalancerPort
一个带有那个流浪者 -
的列表。试试这个:
Listeners:
- LoadBalancerPort:
'Fn::If':
- IsSSL
- $(HttpS)
- $(HttP)