如何为使用共享负载均衡器的 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。