我想为使用共享负载均衡器的 AWS Elastic Beanstalk 环境创建额外的侦听器。
概述
如果您在 Elastic Beanstalk 中使用共享负载均衡器,则无法使用 aws:elbv2:listener:listener_port 选项或 Elastic Beanstalk 控制台来创建额外的侦听器。这是因为 Elastic Beanstalk 不管理负载均衡器。
要为具有共享负载均衡器的 Elastic Beanstalk 环境创建额外的侦听器,请使用 .ebextension 自定义资源。
**注意:**最佳的做法是将额外的侦听器与环境的生命周期关联,并在终止环境时删除这些侦听器。
解决方案
1.创建包含默认侦听器和目标组的应用程序负载均衡器。
2.创建一个名为 additional-listener.config 的 YAML 配置文件:
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
**注意:**上述 YAML 配置文件遵循 AWS::ElasticLoadBalancingV2::Listener 资源的 AWS CloudFormation 规范。
3.将配置文件添加到应用程序源包中的 .ebextensions 文件夹。
4.为更新后的应用程序源包创建一个 .zip 文件。
5.要创建新的 Elastic Beanstalk 环境,请使用此 .zip 文件。也可以更新已在上一步中配置了共享负载均衡器的现有环境。
针对与 Elastic Beanstalk 环境关联的共享负载均衡器,配置文件为其在端口 8080 上创建了一个 HTTP 侦听器。然后,侦听器将所有流量转发到默认进程。要向侦听器添加规则,请使用 AWS::ElasticLoadBalancingV2::ListenerRule 资源定义来扩展配置文件。由于侦听器是 Elastic Beanstalk 环境的额外资源,因此如果环境终止,则该侦听器将被删除。有关更多信息,请参阅配置共享应用程序负载均衡器。