共有ロードバランサーを使用する 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 の設定ファイルは、Elastic Beanstalk 環境に関連付けられた共有ロードバランサーの HTTP リスナーをポート 8080 に作成します。次に、リスナーはすべてのトラフィックをデフォルトプロセスに転送します。CloudFormation の AWS::ElasticLoadBalancingV2::ListenerRule リソース定義を使用して、この設定ファイルをさらに拡張し、リスナーにルールを追加することができます。
重要: このリスナーは Elastic Beanstalk 環境の一部である追加リソースとして作成されるため、環境が終了するとリスナーは削除されます。
注: 共有ロードバランサーとデフォルトのリスナールールの詳細については、共有 Application Load Balancer の設定を参照してください。