Стек AWS CloudFormation: добавление прослушивателя балансировки нагрузки в зависимости от условия - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь использовать CloudFormation для создания списка прослушивателей балансировщика нагрузки и для необязательного параметра TCPPort1, установленного в качестве прослушивателя только , если это значение было установлено.

Я использовал Condition в других местах, но если я использую его на уровне слушателя, я получаю ошибку: The following resource(s) failed to create: [LoadBalancer]. . Rollback requested by user. Encountered unsupported property Condition

LoadBalancer:
    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
    Properties:
      HealthCheck:
        HealthyThreshold: '2'
        Interval: '15'
        Target: 'HTTP:9000/'
        Timeout: '5'
        UnhealthyThreshold: '10'
      Listeners:
        - InstancePort: TCPPort1
          Condition: HasTCPPort1
          InstanceProtocol: HTTP
          LoadBalancerPort: TCPPort1
          SSLCertificateId: !If
            - HasLoadBalancerCertificateARN
            - !Ref LoadBalancerCertificateARN
            - !Ref 'AWS::NoValue'
          Protocol: !If
            - HasLoadBalancerCertificateARN
            - HTTPS
            - HTTP
      Scheme: internet-facing
      Subnets:
        - 'Fn::ImportValue':
              !Sub '${ParentVPCStack}-SubnetAPublic'
        - 'Fn::ImportValue':
              !Sub '${ParentVPCStack}-SubnetBPublic'
        - 'Fn::ImportValue':
              !Sub '${ParentVPCStack}-SubnetCPublic'
      SecurityGroups:
        - !Ref SecurityGroup
      Instances:
        - !Ref Server

1 Ответ

0 голосов
/ 05 марта 2019

Редактировать: Использование классического балансировщика нагрузки ...

LoadBalancer:
  Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
  Properties:
    HealthCheck:
      HealthyThreshold: '2'
      Interval: '15'
      Target: 'HTTP:9000/'
      Timeout: '5'
      UnhealthyThreshold: '10'
    Listeners: !If 'HasTCPPort1'
      -
        - InstancePort: TCPPort1
          Condition: HasTCPPort1
          InstanceProtocol: HTTP
          LoadBalancerPort: TCPPort1
          SSLCertificateId: !If
            - HasLoadBalancerCertificateARN
            - !Ref LoadBalancerCertificateARN
            - !Ref 'AWS::NoValue'
          Protocol: !If
            - HasLoadBalancerCertificateARN
            - HTTPS
            - HTTP
      - !Ref 'AWS::NoValue' 
    Scheme: internet-facing
    Subnets:
      - 'Fn::ImportValue':
            !Sub '${ParentVPCStack}-SubnetAPublic'
      - 'Fn::ImportValue':
            !Sub '${ParentVPCStack}-SubnetBPublic'
      - 'Fn::ImportValue':
            !Sub '${ParentVPCStack}-SubnetCPublic'
    SecurityGroups:
      - !Ref SecurityGroup
    Instances:
      - !Ref Server
...