代码之家  ›  专栏  ›  技术社区  ›  raj palla

AWS ELB cloudformation by Conditons for HTTPS&HTTP

  •  0
  • raj palla  · 技术社区  · 7 年前

    当我试图用IsSSL=HTTPS/HTTP中的条件创建ELB时
    HttpS=443,HttP=80。

    上述值作为变量从yaml文件传递。

    如果条件为true,则应使用Fn::If条件选择相应的负载平衡器端口。但我在构建堆栈时遇到了错误,下面的子网部分工作正常。有什么帮助吗?

    错误:属性loadbalancerport的值必须是String类型

      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)
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   kichik    7 年前

    你通过了 LoadBalancerPort 一张有那个流浪汉的名单 - . 试试这个:

    Listeners:
      - LoadBalancerPort:
          'Fn::If':
             - IsSSL
             - $(HttpS)
             - $(HttP)
    
        2
  •  0
  •   Rodrigo Murillo    7 年前

    您的示例似乎使用了与 AWS Condition Functions documentation

    其中说明了以下语法:

    完整函数名的语法:

    Fn::If: [condition_name, value_if_true, value_if_false] 
    

    缩写形式的语法:

    !If [condition_name, value_if_true, value_if_false]
    

    尝试:

    - LoadBalancerPort:
      - !If [IsSSL, !Ref HttpS, !Ref HttP]