AWS Elastic Beanstalk アプリケーション用に、スケーラブルで負荷分散された環境を作成し、ロードバランサーに独自のセキュリティグループを指定しようと考えています。
簡単な説明
Elastic Beanstalk は、ロードバランサーのデフォルトのセキュリティグループを作成します。既存のセキュリティグループ (ManagedSecurityGroup) をロードバランサーにアタッチする場合は、デフォルトの動作をオーバーライドします。設定ファイルを .ebextensions/ ディレクトリに追加して、Elastic Beanstalk がデフォルトのセキュリティグループを作成しないようにします。このディレクトリはアプリケーションデプロイパッケージにあります。
重要: 以下の手順は、Application Load Balancer と Classic Load Balancer にのみ適用されます。Network Load Balancer には、関連付けられたセキュリティグループはありません。Network Load Balancer からのトラフィックを受け入れるように、ターゲットに関連付けられているセキュリティグループを設定する必要があります。
解決策
.ebextensions を使用して、既存のセキュリティグループをロードバランサーにアタッチするよう Elastic Beanstalk サービスに指示します。次に、Elastic Beanstalk が作成したデフォルトのセキュリティグループを削除します。
次の手順を実行します。
- Elastic Beanstalk で使用する既存のセキュリティグループがあることを確認します。または、Elastic Beanstalk 環境のロードバランサー用の新しいセキュリティグループを作成します。
- セキュリティグループの ID を書き留めておきます。例えば、sg-123456 です。
- ローカルのアプリケーションコードディレクトリに .ebextensions/ ディレクトリを作成します。
- .ebextensions/ ディレクトリに、elbsg.config ファイルを作成します。例:
~/workspace/my-app/
|-- .ebextensions
| |-- elbsg.config
|-- helloworld
注: 詳細については、「設定ファイル (.ebextensions) による高度な環境カスタマイズ」を参照してください。
- 現在の Elastic Beanstalk 環境のロードバランサータイプに基づいて、elbsg.config ファイルを更新します。詳細については、「ロードバランサーを使用して Amazon ECS サービストラフィックを分散する」を参照してください。新しい環境を作成するか、Classic Load Balancer を使用して既存の環境を更新する場合は、SecurityGroups 設定を使用してデフォルトのセキュリティグループをオーバーライドします。例:
option_settings:
aws:elb:loadbalancer:
ManagedSecurityGroup: "sg-123456"
SecurityGroups: "sg-123456"
新しい環境を作成するか、Application Load Balancer を使用して既存の環境を更新する場合は、SecurityGroups 設定を使用してデフォルトのセキュリティグループをオーバーライドします。例:
option_settings:
aws:elbv2:loadbalancer:
ManagedSecurityGroup: "sg-123456"
SecurityGroups: "sg-123456"
注: 上記の例では、sg-123456 を自分のセキュリティグループとマネージドセキュリティグループ ID に置き換えます。前述の .ebextensions は YAML 形式です。YAML 形式を必ず検証してください。
- コードと新しい .ebextensions/ ディレクトリを一緒に、新しいアプリケーションバージョンとして Elastic Beanstalk 環境にデプロイします。
関連情報
Elastic Beanstalk 環境の設定
aws:elb:loadbalancer
aws:elbv2:loadbalancer