-1

我正在使用 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 侦听器的正确条件是什么,以创建以下内容:

在此处输入图像描述

到目前为止,我无法通过端口号创建映射,只能通过默认端口 80 上的路径模式创建映射。

我查看了有关 Stackoverflow 和 ElasticLoadBalancingV2::ListenerRule 资源页面的问题,但我还没有找到可行的解决方案。参考:https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html

任何正确方向的帮助将不胜感激!

4

1 回答 1

0

以下是 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

我希望这就是你要找的。如果需要更多帮助,请更新。

祝你好运。

于 2018-10-12T05:27:53.357 回答