共有ロードバランサーを使用する 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 ファイルを使用します。または、前のステップの共有ロードバランサーで構成された既存の環境を更新します。
設定ファイルにより、Elastic Beanstalk 環境に関連付けられている共有ロードバランサーのポート 8080 に HTTP リスナーが作成されます。次に、リスナーはすべてのトラフィックをデフォルトプロセスに転送します。リスナーにルールを追加するには、AWS::ElasticLoadBalancingV2::ListenerRule リソース定義を使用して設定ファイルを拡張します。リスナーは Elastic Beanstalk 環境の追加リソースであるため、環境が終了するとリスナーは削除されます。詳細については、「共有アプリケーションロードバランサーの設定」を参照してください。