Как отобразить LoadBalancer ListenerRule на конкретный порт, используя Cloudformation? - PullRequest
0 голосов
/ 10 октября 2018

Я использую CloudFormation для создания стека для моего приложения.

Стек состоит из существующего LoadBalancer, в который я хочу добавить новое правило сопоставления портов, для которого перенаправляются запросы в мое приложение.

LoadBalancerRule:
    Type: AWS::ElasticLoadBalancingV2::ListenerRule
    Properties:
      Actions:
      - TargetGroupArn: !Ref 'TargetGroup'
        Type: 'forward'
     Conditions:
      - Field: path-pattern
        Values: [!Ref 'PortMapping']
     ListenerArn:
       Fn::ImportValue:
       !Join [':', [!Ref 'StackName']]
         Priority: !Ref 'Priority'

Я пытаюсь выяснить, каковы были бы правильные условия для создания прослушивателя LoadBalancer с PortMapping 8080 для моего существующего LoadBalancer, чтобы создать следующее:

enter image description here

До сих пор я не смог создать сопоставление по номеру порта, только по шаблону пути на порту 80 по умолчанию.

Я смотрел на вопросы поStackoverflow и страница ресурса ElasticLoadBalancingV2 :: ListenerRule, но я пока не нашел работающего решения.Справка: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html

Любая помощь в правильном направлении будет принята с благодарностью!

1 Ответ

0 голосов
/ 12 октября 2018

Вот пример для слушателей для 8080 и 443:

"ELB": {
  "Type": "AWS::ElasticLoadBalancing::LoadBalancer",
  "Properties": {
    "Subnets": { "Ref": "Subnet" },
    "HealthCheck": {
      "HealthyThreshold": "2",
      "Interval": "10",
      "Target": "HTTP:80/health",
      "Timeout": "8",
      "UnhealthyThreshold": "6"
    },
    "Listeners": [
      {
        "InstancePort": "80",
        "InstanceProtocol": "HTTP",
        "LoadBalancerPort": "8080",
        "Protocol": "HTTP"
      },
      {
        "InstancePort": "80",
        "InstanceProtocol": "HTTP",
        "LoadBalancerPort": "443",
        "Protocol": "HTTPS",
        "SSLCertificateId": {"Ref": "SSLArn"}
      }
    ],
    "SecurityGroups": [
      { "Ref": "ELBSG" }
    ]
  }
}

И для yaml:

ELB: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: Subnets: Ref: Subnet HealthCheck: HealthyThreshold: '2' Interval: '10' Target: HTTP:80/health Timeout: '8' UnhealthyThreshold: '6' Listeners: - InstancePort: '80' InstanceProtocol: HTTP LoadBalancerPort: '8080' Protocol: HTTP - InstancePort: '80' InstanceProtocol: HTTP LoadBalancerPort: '443' Protocol: HTTPS SSLCertificateId: Ref: SSLArn SecurityGroups: - Ref: ELBSG

И следующее касается обновления слушателяправило:

Listener: Type: AWS::ElasticLoadBalancingV2::Listener Properties: DefaultActions: - Type: forward TargetGroupArn: Ref: myTargetGroup LoadBalancerArn: Ref: myLoadBalancer Port: '8080' Protocol: HTTP

Я надеюсь, что это то, что вы искали.Пожалуйста, обновите, если требуется дополнительная помощь.

Удачи.

...