如何为使用共享负载均衡器的 AWS Elastic Beanstalk 环境创建其他侦听器?

上次更新日期:2021 年 3 月 12 日

我想为使用共享负载均衡器的 AWS Elastic Beanstalk 环境创建其他侦听器。

简短描述

如果您将共享负载均衡器与 Elastic Beanstalk 结合使用,则无法使用 aws:elbv2:listener:listener_port 选项设置或 Elastic Beanstalk 控制台创建其他侦听器。这是因为负载均衡器不由 Elastic Beanstalk 管理。

您可以使用 .ebextension 自定义资源为具有共享负载均衡器的 Elastic Beanstalk 环境创建其他侦听器。

提示:最佳做法是将其他侦听器与环境的生命周期相关联,并在终止环境时删除侦听器。

解决方法

1.    创建一个 Application Load Balancer,其中包含默认侦听器和目标组。

2.    创建名为 additional-listener.config 文件的配置文件,其中包含以下内容:

Resources:
  AdditionalHttpListener:
      Type: AWS::ElasticLoadBalancingV2::Listener
      Properties:
        LoadBalancerArn:
          "Fn::GetOptionSetting":
            Namespace: "aws:elbv2:loadbalancer"
            OptionName: "SharedLoadBalancer"
        DefaultActions:
        - Type: forward
          TargetGroupArn:
            Ref: AWSEBV2LoadBalancerTargetGroup
        Port: 8080
        Protocol: HTTP

注意:步骤 2 中的 YAML 文件遵循 AWS::ElasticLoadBalancingV2::Listener 资源的 AWS CloudFormation 规范。

3.    将步骤 2 中的文件放入属于您的应用程序源捆绑包一部分的 .ebextensions 文件夹中。

4.    为已更新的应用程序源捆绑包创建 ZIP 文件。

5.    使用步骤 4 中的 ZIP 文件创建新的 Elastic Beanstalk 环境,或更新使用步骤 1 中的共享负载均衡器配置的现有环境。

步骤 2 中的配置文件在端口 8080 上为与您的 Elastic Beanstalk 环境关联的共享负载均衡器创建 HTTP 侦听器。然后,监听器将所有流量转发到默认进程。您可以进一步扩展此配置文件,以使用 CloudFormation 的 AWS::ElasticLoadBalancingV2::ListenerRule 资源定义将其他规则添加到侦听器中。

重要提示:由于此侦听器是作为 Elastic Beanstalk 环境的一部分创建的附加资源,因此如果环境终止,侦听器将被删除。

注意:要了解有关共享负载均衡器和默认侦听器规则的更多信息,请参阅配置共享 Application Load Balancer


这篇文章对您有帮助吗?


您是否需要账单或技术支持?