我想為使用共用負載平衡器的 AWS Elastic Beanstalk 環境建立其他接聽程式。
簡短描述
如果您將共用負載平衡器與 Elastic Beanstalk 搭配使用,則無法使用 aws:elbv2:listener:listener_port 選項或 Elastic Beanstalk 主控台建立其他接聽程式。這是因為 Elastic Beanstalk 不管理負載平衡器。
若要為具備共用負載平衡器的 Elastic Beanstalk 環境建立其他接聽程式,請使用 .ebextension 自訂資源。
**注意:**最佳實務是將其他接聽程式與環境的生命週期建立關聯,並在終止環境時移除接聽程式。
解決方法
1. 建立一個 Application Load Balancer,其中包含預設接聽程式和目標群組。
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 檔案。或者,從上一個步驟更新使用共用負載平衡器設定的現有環境。
組態檔案會在連接埠 8080 上為與 Elastic Beanstalk 環境關聯的共用負載平衡器建立 HTTP 接聽程式。然後,接聽程式會將所有流量轉送至預設程序。若要將規則新增至接聽程式,請使用 AWS::ElasticLoadBalancingV2::ListenerRule 資源定義來擴充組態檔。由於此接聽程式是 Elastic Beanstalk 環境的附加資源,因此如果環境終止,接聽程式會移除。如需詳細資訊,請參閱設定共用 Application Load Balancer。