

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk 環境のロードバランサー
<a name="using-features.managing.elb"></a>

ロードバランサーは、環境のインスタンス間でトラフィックを分散します。[ロードバランシングを有効にする](using-features-managing-env-types.md#using-features.managing.changetype)と、 は環境専用の [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/) ロードバランサー AWS Elastic Beanstalk を作成します。Elastic Beanstalk は、このロードバランサーを完全に管理し、セキュリティ設定を処理し、環境の終了時にロードバランサーを終了します。

また、複数の Elastic Beanstalk 環境間でロードバランサーを共有することもできます。共有ロードバランサーを使用すると、環境ごとに専用のロードバランサーを使用する必要がなくなり、運用コストを節約できます。また、環境で使用する共有ロードバランサーの管理責任は多くなります。

Elastic Load Balancing には、以下のタイプのロードバランサーがあります。
+ [Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) - 前世代のロードバランサー。HTTP、HTTPS あるいは TCP リクエストトラフィックを環境インスタンスの別のポートにルートします。
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) - アプリケーション層ロードバランサー。HTTP、HTTPS あるいは HTTPS リクエストトラフィックをリクエストパスに基づいて環境インスタンスの別のポートにルートします。
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) - ネットワーク層ロードバランサー。TCP リクエストトラフィックを環境インスタンスの別のポートにルートします。アクティブおよびパッシブ両方のヘルスチェックをサポートしています。

Elastic Beanstalk は、3 つのロードバランサータイプすべてをサポートしています。次の表に、2 つの使用パターンのうち、どちらが使用できるタイプかを示します。


| ロードバランサーのタイプ | 専有 | 共有済み | 
| --- | --- | --- | 
|  Classic Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/icon-yes.png) はい  |   ![\[No\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/icon-no.png) ☓いいえ  | 
|  Application Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/icon-yes.png) はい  |   ![\[Yes\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/icon-yes.png) はい  | 
|  Network Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/icon-yes.png) はい  |   ![\[No\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/icon-no.png) ☓いいえ  | 

**注記**  
**[環境作成]** コンソールウィザードでは、Classic Load Balancer (CLB) オプションは無効になっています。既存の環境を Classic Load Balancer で設定している場合は、Elastic Beanstalk コンソールまたは [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI) のいずれかを使用して[既存の環境を複製](using-features.managing.clone.md)することで新しい環境を作成できます。EB CLI または [AWS CLI](environments-create-awscli.md) を使用して Classic Load Balancer で設定された新しい環境を作成することもできます。これらのコマンドラインツールは、アカウントに CLB がまだ存在しない場合でも、CLB を使用して新しい環境を作成します。

デフォルトでは、Elastic Beanstalk コンソールまたは EB CLI で負荷分散を有効にすると、Elastic Beanstalk によって環境に Application Load Balancer が作成されます。これによって、ロードバランサーはポート 80 で HTTP トラフィックをリッスンし、このトラフィックを同じポートのインスタンスに転送します。環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。あとで、実行中の環境のロードバランサーの動作管理の設定は変更できますが、タイプを変更することはできません。

**注記**  
Application Load Balancer を作成するには、2 つ以上のアベイラビリティーゾーンにサブネットを含む VPC にお客様の環境があることが必要です。すべての新しい AWS アカウントには、この要件を満たすデフォルトの VPCs が含まれています。

Elastic Beanstalk がサポートする各ロードバランサーのタイプ、機能、Elastic Beanstalk 環境での設定と管理の方法、および Amazon S3 に[アクセスログをアップロード](environments-cfg-loadbalancer-accesslogs.md)するようにロードバランサーを設定する方法については、以下のトピックを参照してください。

**Topics**
+ [Classic Load Balancer の設定](environments-cfg-clb.md)
+ [Application Load Balancer の設定](environments-cfg-alb.md)
+ [共有 Application Load Balancer の設定](environments-cfg-alb-shared.md)
+ [Network Load Balancer の設定](environments-cfg-nlb.md)
+ [デュアルスタック Elastic Beanstalk ロードバランサーを設定する](environments-cfg-elbv2-ipv6-dualstack.md)
+ [アクセスログの設定](environments-cfg-loadbalancer-accesslogs.md)

# Classic Load Balancer の設定
<a name="environments-cfg-clb"></a>

[ロードバランシングを有効にする](using-features-managing-env-types.md#using-features.managing.changetype)と、 AWS Elastic Beanstalk 環境に Elastic Load Balancing ロードバランサーが搭載され、環境内のインスタンス間でトラフィックが分散されます。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。それらについては、[Elastic Load Balancing ユーザーガイド](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)を参照してください。Elastic Beanstalk では、ロードバランサーを作成したり、作成した共有ロードバランサーを指定したりできます。

このトピックでは、Elastic Beanstalk が作成し、環境専用にする [Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) の設定について説明します。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定については、「[Elastic Beanstalk 環境のロードバランサー](using-features.managing.elb.md)」を参照してください。

**注記**  
環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。あとで、実行中の環境のロードバランサーの動作管理の設定は変更できますが、タイプを変更することはできません。

## 序章
<a name="environments-cfg-clb-intro"></a>

[Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) は、Elastic Load Balancing の前世代のロードバランサーです。これは、HTTP、HTTPS あるいは TCP リクエストトラフィックを環境インスタンスの別のポートにルートすることをサポートします。

環境で Classic Load Balancer を使用する場合、Elastic Beanstalk によってデフォルトで、ポート 80 の HTTP トラフィックを[リッスン](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html)し、同じポートのインスタンスに転送するように設定されます。ポート 80 のデフォルトリスナーを削除することはできませんが、無効にすると、トラフィックをブロックすることで同じ機能を実現できます。他のリスナーは追加や削除ができることに注意してください。信頼性に優れた接続をサポートするために、ロードバランサーでポート 443 にリスナーと TLS 証明書を設定できます。

ロードバランサーは[ヘルスチェック](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html)を実行して、アプリケーションを実行している Amazon EC2 インスタンスが正常であるかどうか診断します。ヘルスチェックは、設定した頻度で指定した URL にリクエストします。URL がエラーメッセージを返した場合、または指定したタイムアウト期間内に応答がなかった場合、ヘルスチェックは失敗します。

1 つのサーバーで同じクライアントから複数のリクエストを出させることで、アプリケーションのパフォーマンスが向上する場合は、[スティッキーセッション](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html)を使用するようロードバランサーを設定できます。スティッキーセッションでは、ロードバランサーはリクエストを出す Amazon EC2 インスタンスを特定する HTTP レスポンスに cookie を追加します。後続のリクエストが同一のクライアントからのものである場合、ロードバランサーは cookie 使用して同じインスタンスにリクエストを送信します。

[クロスゾーン負荷分散](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)を使用すると、Classic Load Balancer の各ロードバランサーノードは、有効なすべてのアベイラビリティーゾーンの登録されたインスタンスにリクエストを均等に分散します。クロスゾーン負荷分散が無効の場合は、各ロードバランサーノードは、そのアベイラビリティーゾーンの登録されたインスタンスにのみリクエストを均等に分散します。

インスタンスが正常でなくなったか環境がスケールダウンされたため、インスタンスがロードバランサーから削除された場合は、[Connection Draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html) によってインスタンスとロードバランサー間の接続を閉じる前に、リクエストを完了する時間がインスタンスに与えられます。応答を送信するためにインスタンスに与える時間の長さを変更したり、Connection Drainingを完全に無効化したりできます。

**注記**  
Connection Draining は、Elastic Beanstalk コンソールまたは EB CLI で環境を作成した場合は、デフォルトで有効です。その他のクライアントでは、[設定オプション](#environments-cfg-clb-namespace)を使って有効にできます。

ロードバランサーの高度な設定を使用して、任意のポートにリスナーを設定し、追加のスティッキーセッションの設定を変更して、EC2 インスタンスに安全に接続するようロードバランサーを設定できます。これらの設定は、[設定オプション](#environments-cfg-clb-namespace)を通じて使用できます。これは、ソースコードの設定ファイルを使用するか、Elastic Beanstalk API を使用して環境に直接設定できます。これらの設定の多くは、Elastic Beanstalk コンソールでも使用できます。また、Amazon S3 に[アクセスログをアップロード](environments-cfg-loadbalancer-accesslogs.md)するようロードバランサーを設定することもできます。

## Elastic Beanstalk コンソールを使用した Classic Load Balancer の設定
<a name="environments-cfg-clb-console"></a>

Elastic Beanstalk コンソールを使用して、環境の作成時あるいは後の環境の実行時に Classic Load Balancer ポート、HTTPS 証明書、その他の設定を定義できます。

**注記**  
**[環境作成]** コンソールウィザードでは、Classic Load Balancer (CLB) オプションは無効になっています。既存の環境を Classic Load Balancer で設定している場合は、Elastic Beanstalk コンソールまたは [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI) のいずれかを使用して[既存の環境を複製](using-features.managing.clone.md)することで新しい環境を作成できます。EB CLI または [AWS CLI](environments-create-awscli.md) を使用して Classic Load Balancer で設定された新しい環境を作成することもできます。これらのコマンドラインツールは、アカウントに CLB がまだ存在しない場合でも、CLB を使用して新しい環境を作成します。

**実行中の環境の Classic Load Balancer を Elastic Beanstalk コンソールで設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. [**ロードバランサー**] 設定カテゴリで、[**編集**] を選択します。
**注記**  
[**ロードバランサー**] 設定カテゴリに [**編集**] ボタンがない場合、お客様の環境にはロードバランサーがありません。設定方法については、「[環境タイプの変更](using-features-managing-env-types.md#using-features.managing.changetype)」を参照してください。

1. Classic Load Balancer の設定に、環境に必要な変更を加えます。

1. ページの最下部で **[適用]** を選択し変更を保存します。

**Topics**
+ [リスナー](#using-features.managing.elb.listeners)
+ [セッション](#using-features.managing.elb.sessions)
+ [クロスゾーンロードバランサー](#using-features.managing.elb.cross-zone)
+ [Connection Draining](#using-features.managing.elb.draining)
+ [ヘルスチェック](#using-features.managing.elb.healthchecks)

### リスナー
<a name="using-features.managing.elb.listeners"></a>

このリストを使用して、ロードバランサーにリスナーを指定します。各リスナーは、指定されたプロトコルを使用して、指定されたポートの着信クライアントトラフィックをインスタンスにルーティングします。初期状態では、このリストにはポート 80 の着信 HTTP トラフィックをポート 80 の HTTP トラフィックをリッスンする環境のインスタンスにルーティングするデフォルトのリスナーが表示されます。

**注記**  
ポート 80 のデフォルトリスナーを削除することはできませんが、無効にすると、トラフィックをブロックすることで同じ機能を実現できます。

![\[Classic Load Balancer の設定 - リスナーを編集する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners.png)


**既存のリスナーを設定するには**

1. テーブルエントリの横にあるチェックボックスをオンにし、[**アクション**] を選択して、任意のアクションを選択します。

1. [**編集**] を選択した場合、[**Classic Load Balancer listener (クラシックロードバランサーリスナー)**] ダイアログボックスを使用して設定を編集し、[**保存**] を選択します。

たとえば、ロードバランサーがリクエストをそのまま転送するようにするには、デフォルトリスナーを編集して、[**プロトコル**] を [**HTTP**] から [**TCP**] に変更できます。これにより、ロードバランサがヘッダー (`X-Forwarded-For` を含む)を書き換えないようにします。このテクニックは、スティッキーセッションでは機能しません。

![\[Classic Load Balancer の設定 - デフォルトのリスナーのプロトコルを TCP に変更する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-tcp.png)


**リスナーを追加するには**

1. **[リスナーの追加]** を選択します。

1. [**Classic Load Balancer listener (クラシックロードバランサーリスナー)**] ダイアログボックスで設定を行い、[**追加**] を選択します。

安全なリスナーの追加は、一般的ユースケースです。次のイメージの例では、ポート 443 の HTTPS トラフィックにリスナーを追加します。このリスナーは、着信したトラフィックをポート 443 で HTTPS トラフィックをリッスンする環境インスタンスサーバーにルーティングします。

HTTPS リスナーを設定する前に、有効な SSL 証明書を保持していることを確認します。次のいずれかを行います。
+  AWS Certificate Manager (ACM) が [AWS リージョンで利用可能な場合は](https://docs.aws.amazon.com/general/latest/gr/acm.html)、ACM を使用して証明書を作成またはインポートします。ACM 証明書のリクエストの詳細については、*AWS Certificate Manager ユーザーガイド*の「[証明書のリクエスト](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)」を参照してください。ACM へのサードパーティー証明書のインポートの詳細については、*AWS Certificate Manager ユーザーガイド*の「[証明書のインポート](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)」を参照してください。
+ ACM が[お客様の AWS リージョンで利用](https://docs.aws.amazon.com/general/latest/gr/acm.html)できない場合は、既存の証明書とキーを IAM にアップロードします。証明書の作成と IAM へのアップロードの詳細については、「IAM ユーザーガイド」の「[サーバー証明書の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)」を参照してください。

Elastic Beanstalk における HTTPS の設定と証明書の使用の詳細については、「[Elastic Beanstalk 環境の HTTPS の設定](configuring-https.md)」を参照してください。

[**SSL 証明書**] で、SSL 証明書の ARN を選択します。たとえば、`arn:aws:iam::123456789012:server-certificate/abc/certs/build`、`arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678` などです。

![\[Classic Load Balancer の設定 - セキュアなリスナーを追加する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-https.png)


HTTPS の設定と Elastic Beanstalk での証明書の使用の詳細については、「[Elastic Beanstalk 環境の HTTPS の設定](configuring-https.md)」を参照してください。

### セッション
<a name="using-features.managing.elb.sessions"></a>

[**セッションの維持が有効です**] ボックスをオンまたはオフにして、スティッキーセッションを有効または無効にします。[**Cookie の維持期間**] を使用して、スティッキーセッションの有効期間を最大 **1000000** 秒までに設定します。[**Load balancer ports (ロードバランサーポート)**] リストで、デフォルトポリシー (`AWSEB-ELB-StickinessPolicy`) が適用されるリスナーポートを選択します。

![\[セッションの維持と期間に関連する Classic Load Balancer の設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-elb-sessions.png)


### クロスゾーンロードバランサー
<a name="using-features.managing.elb.cross-zone"></a>

[**複数のアベイラビリティーゾーンでの負荷分散が有効です**] ボックスをオンまたはオフにして、クロスゾーン負荷分散を有効あるいは無効にします。

![\[クロスゾーン負荷分散に関連する Classic Load Balancer の設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-elb-cross-zone.png)


### Connection Draining
<a name="using-features.managing.elb.draining"></a>

[**Connection Draining が有効です**] ボックスをオンまたはオフにして、Connection Draining を有効または無効にします。[**Connection Draining**] を最大 **3600** 秒に設定します。

![\[Connection Draining とドレインタイムアウトに関連する Classic Load Balancer の設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-elb-draining.png)


### ヘルスチェック
<a name="using-features.managing.elb.healthchecks"></a>

次の設定を使用して、ロードバランサーのヘルスチェックを設定します。
+ [**Health check path (ヘルスチェックパス)**] - ロードバランサーがヘルスチェックリクエストを送信するパスです。パスを設定していない場合、ロードバランサーは、状態を確認するためにポート 80 での TCP 接続をするよう試みます。
+ [**Timeout (タイムアウト)**] - ヘルスチェックのレスポンスを待つ時間 (秒単位)。
+ [**Interval (間隔)**] - 個々のインスタンスのヘルスチェックの間隔 (秒単位)。間隔はタイムアウトより大きくする必要があります。
+ [**Unhealthy threshold (非正常のしきい値)**]、[**Healthy threshold (正常のしきい値)**] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに失敗または合格しなければならない回数。

![\[ヘルスチェックに関連する Classic Load Balancer の設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-elb-healthcheck.png)


**注記**  
Elastic Load Balancing ヘルスチェックは、環境の Auto Scaling グループのヘルスチェック動作に影響しません。Elastic Load Balancing ヘルスチェックに失敗したインスタンスは、Amazon EC2 Auto Scaling を手動で設定していなければ、Amazon EC2 Auto Scaling によって自動的に置き換えられません。詳細については、「[Elastic Beanstalk 環境用の Auto Scaling ヘルスチェック設定](environmentconfig-autoscaling-healthchecktype.md)」を参照してください。

ヘルスチェックと、それが環境の全体的な状態に与える影響の詳細については、「[ベーシックヘルスレポート](using-features.healthstatus.md)」を参照してください。

## EB CLI を使用した Classic Load Balancer の設定
<a name="environments-cfg-clb-ebcli"></a>

[**eb create**](eb3-create.md) の実行時に、EB CLI によりロードバランサータイプの選択が求められます。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1):
```

[**Enter**] を押して、`classic` を選択します。

`--elb-type` オプションを使用してロードバランサータイプを指定することもできます。

```
$ eb create test-env --elb-type classic
```

## Classic Load Balancer 設定の名前空間
<a name="environments-cfg-clb-namespace"></a>

Classic Load Balancer に関連する設定は、以下の名前空間にあります。
+ [`aws:elb:healthcheck`](command-options-general.md#command-options-general-elbhealthcheck) - ロードバランサーのヘルスチェックのしきい値、チェックの間隔、およびタイムアウトを設定します。
+ [`aws:elasticbeanstalk:application`](command-options-general.md#command-options-general-elasticbeanstalkapplication) - ヘルスチェック URL の設定
+ [`aws:elb:loadbalancer`](command-options-general.md#command-options-general-elbloadbalancer) - クロスゾーン負荷分散の有効化 ロードバランサーにセキュリティグループを割り当て、Elastic Beanstalk が作成したデフォルトのセキュリティグループを上書きします。この名前空間には、`aws:elb:listener` 名前空間のオプションによって置き換えられた標準リスナーおよびセキュアリスナーを設定するための廃止されたオプションが含まれます。
+ [`aws:elb:listener`](command-options-general.md#command-options-general-elblistener) - ポート 80 にデフォルトのリスナー、ポート 443 にセキュアリスナー、または任意のポートに任意のプロトコルの追加リスナーを設定します。名前空間として `aws:elb:listener` を指定している場合、設定はポート 80 のデフォルトリスナーに適用されます。ポートを指定している場合（たとえば、`aws:elb:listener:443`）、リスナーはそのポートに設定されます。
+ [`aws:elb:policies`](command-options-general.md#command-options-general-elbpolicies) - ロードバランサーの追加設定。この名前空間のオプションを使用して、任意のポートにリスナーを設定し、追加のスティッキーセッションの設定を変更して、Amazon EC2 インスタンスに安全に接続するようロードバランサーを設定します。

EB CLI および Elastic Beanstalk コンソールでは、上記のオプションに推奨値が適用されます。設定ファイルを使用して同じファイルを設定する場合は、これらの設定を削除する必要があります。詳細については、「[推奨値](command-options.md#configuration-options-recommendedvalues)」を参照してください。

**Example .ebextensions/loadbalancer-terminatehttps.config**  
以下の設定ファイルの例では、ポート 443 の HTTPS リスナーを作成し、ロードバランサーが安全な接続を終了するのに使用する証明書を割り当てて、ポート 80 のデフォルトのリスナーを無効にしています。ロードバランサーは、復号化されたリクエストを HTTP 80 の環境の EC2 インスタンスに転送します。  

```
option_settings:
  aws:elb:listener:443:
    ListenerProtocol: HTTPS
    SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
    InstancePort: 80
    InstanceProtocol: HTTP
  aws:elb:listener:
    ListenerEnabled: false
```

# Application Load Balancer の設定
<a name="environments-cfg-alb"></a>

[ロードバランシングを有効にする](using-features-managing-env-types.md#using-features.managing.changetype)と、 AWS Elastic Beanstalk 環境に Elastic Load Balancing ロードバランサーが搭載され、環境内のインスタンス間でトラフィックが分散されます。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。それらについては、[Elastic Load Balancing ユーザーガイド](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)を参照してください。Elastic Beanstalk では、ロードバランサーを作成したり、作成した共有ロードバランサーを指定したりできます。

このトピックでは、Elastic Beanstalk が作成し、環境専用にする [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) の設定について説明します。[共有 Application Load Balancer の設定](environments-cfg-alb-shared.md) も参照してください。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定については、「[Elastic Beanstalk 環境のロードバランサー](using-features.managing.elb.md)」を参照してください。

**注記**  
環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。実行中の環境のロードバランサーの行動管理の設定は変更できますが、タイプを変更することはできません。また、専用ロードバランサーから共有ロードバランサーに切り替えることも、その逆もできません。

## 序章
<a name="environments-cfg-alb-intro"></a>

Application Load Balancer は、アプリケーションネットワークプロトコルレイヤーでトラフィックを検査してリクエストのパスを識別し、パスが異なるリクエストを別々の送信先にダイレクトできるようにします。

環境で Application Load Balancer を使用する場合、Elastic Beanstalk によってデフォルトで、Classic Load Balancer と同じ機能を実行するように設定されます。デフォルトのリスナーはポート 80 で HTTP リクエストを受け取り、環境内のインスタンスに分散します。ポート 443 でセキュアなリスナーを証明書と共に追加して、HTTPS トラフィックの復号、ヘルスチェックの動作の設定、ロードバランサーから Amazon Simple Storage Service (Amazon S3) バケットへのアクセスログのプッシュを行うことができます。

**注記**  
Classic Load Balancer や Network Load Balancer とは異なり、Application Load Balancer では、トランスポート層 (レイヤー 4) の TCP または SSL/TLS リスナーを配置できません。これは HTTP および HTTPS リスナーでのみサポートされています。また、これはロードバランサーとバックエンドインスタンス間の HTTPS 接続を認証するバックエンド認証を使用できません。

Elastic Beanstalk 環境では、Application Load Balancer を使用して、特定のパスのトラフィックをウェブサーバーインスタンス上の別のプロセスに転送できます。Classic Load Balancer では、リスナーへのすべてのトラフィックはバックエンドインスタンスの 1 つのプロセスにルーティングされます。Application Load Balancer を使用すると、リスナーで複数の*ルール*を設定し、特定のプロセスへのリクエストを別々のバックエンドポートにルーティングできます。各プロセスは、プロセスがリッスンするポートで設定します。

たとえば、ログインプロセスをメインアプリケーションとは別に実行できます。環境のインスタンスのメインアプリケーションがほとんどのリクエストを受け入れ、ポート 80 でリッスンしている間、ログインプロセスはポート 5000 でリッスンし、`/login` パスへのリクエストを受け入れます。クライアントからのすべての着信リクエストは、ポート 80 に入ります。Application Load Balancer を使用すると、ポート 80 の着信トラフィック用に、リクエスト内のパスに応じて 2 つの異なるプロセスにトラフィックをルーティングする 2 つのルールで単一リスナーを設定できます。ポート 5000 でリッスンするログインプロセスに、`/login` へのトラフィックをルーティングするカスタムルールを追加します。デフォルトのルールは、他のすべてのトラフィックをポート 80 でリッスンするメインアプリケーションプロセスにルートします。

Application Load Balancer ルールにより、リクエストが*ターゲットグループ*にマッピングされます。Elastic Beanstalk では、ターゲットグループは*プロセス*で表されます。プロセスのプロトコル、ポート、ヘルスチェック設定を構成できます。プロセスは環境内のインスタンスで実行されるプロセスを表します。デフォルトプロセスは、アプリケーションの前面で実行されるリバースプロキシ (nginx または Apache) のポート 80 のリスナーです。

**注記**  
Elastic Beanstalk の外部では、ターゲットグループはインスタンスのグループにマッピングされます。リスナーはルールとターゲットグループを使用して、パスに基づいてトラフィックを別のインスタンスにルーティングできます。Elastic Beanstalk 内で、環境のすべてのインスタンスは同じであるため、別々のポートでリッスンしているプロセス間で区別されます。

Classic Load Balancer では、環境全体に対して 1 つのヘルスチェックパスが使用されます。Application Load Balancer では、プロセス別に、ロードバランサーと Elastic Beanstalk の拡張ヘルスモニタリングによってモニタリングされるヘルスチェックパスがあります。

Application Load Balancer を使用するには、デフォルトまたはカスタム VPC に環境があり、サービスロールにアクセス許可の標準セットがあることが必要です。古いサービスロールがある場合は、そこでの[アクセス許可を更新](iam-instanceprofile.md#iam-instanceprofile-addperms)して、`elasticloadbalancing:DescribeTargetHealth` および `elasticloadbalancing:DescribeLoadBalancers` を含めなければならない可能性があります。Application Load Balancer の詳細については、「[Application Load Balancer とは](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/)」を参照してください。

**注記**  
Application Load Balancer のヘルスチェックでは、Elastic Beanstalk のヘルスチェックパスは使用されません。代わりに、各プロセス用に別々に設定された特定のパスを使用します。

## Elastic Beanstalk コンソールを使用した Application Load Balancer の設定
<a name="environments-cfg-alb-console"></a>

Elastic Beanstalk コンソールを使用して、環境の作成中か、後で環境の実行中に、Application Load Balancer のリスナー、プロセス、ルールを設定できます。

**環境の作成中に Elastic Beanstalk コンソールで Application Load Balancer を設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで [**Environments (環境)**] を選択します。

1. [[新しい環境の作成](environments-create-wizard.md)] を選択して、環境の作成を開始します。

1. ウィザードのメインページで、[**環境の作成**] を選択する前に、[**さらにオプションを設定**] を選択します。

1. [**高可用性**] 設定プリセットを選択します。

   または、[**容量**] 設定カテゴリで [**ロードバランサー**] 環境タイプを設定します。詳細については、「[Capacity](environments-create-wizard.md#environments-create-wizard-capacity)」を参照してください。

1. [**ロードバランサー**] 設定カテゴリで、[**編集**] を選択します。

1. [**Application Load Balancer**] および [**Dedicated (専用)**] オプションがまだ選択されていない場合は、それらのオプションを選択します。  
![\[Elastic Load Balancing 設定ページ - ロードバランサータイプの選択\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-type-chooser.png)

1. Application Load Balancer の設定に、環境に必要な変更を加えます。

1. [**保存**] を選択し、環境に必要なその他の任意の設定変更を行います。

1. [**環境を作成**] を選択します。

**実行中の環境の Application Load Balancer を Elastic Beanstalk コンソールで設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. [**ロードバランサー**] 設定カテゴリで、[**編集**] を選択します。
**注記**  
[**ロードバランサー**] 設定カテゴリに [**編集**] ボタンがない場合、お客様の環境にはロードバランサーがありません。設定方法については、「[環境タイプの変更](using-features-managing-env-types.md#using-features.managing.changetype)」を参照してください。

1. Application Load Balancer の設定に、環境に必要な変更を加えます。

1. ページの最下部で **[適用]** を選択し変更を保存します。

**Topics**
+ [リスナー](#environments-cfg-alb-console-listeners)
+ [プロセス](#environments-cfg-alb-console-processes)
+ [Rules](#environments-cfg-alb-console-rules)
+ [アクセスログのキャプチャ](#environments-cfg-alb-console-logs)

### リスナー
<a name="environments-cfg-alb-console-listeners"></a>

このリストを使用して、ロードバランサーにリスナーを指定します。各リスナーは、指定されたプロトコルを使用して、指定されたポートの着信クライアントトラフィックをインスタンスの 1 つ以上のプロセスにルーティングします。初期状態では、このリストには、ポート 80 で着信する HTTP トラフィックを、[**デフォルト**] という名前のプロセスにルーティングするデフォルトのリスナーが表示されます。

![\[Application Load Balancer の設定 - リスナーリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners.png)


**既存のリスナーを設定するには**

1. そのテーブルエントリの横にあるチェックボックスを選択し、続いて [**アクション**]、[**編集**] の順に選択します。

1. [**Application Load Balancer listener (アプリケーションロードバランサーリスナー)**] ダイアログボックスを使用して設定を編集し、[**保存**] を選択します。

**リスナーを追加するには**

1. **[リスナーの追加]** を選択します。

1. [**Application Load Balancer リスナー**] ダイアログボックスで必要な設定を行い、[**追加**] を選択します。

[**Application Load Balancer リスナー**] ダイアログボックスを使用して、リスナーがトラフィックをリッスンするポートおよびプロトコル、およびトラフィックのルーティング先となるプロセスを選択します。HTTPS プロトコルを選択する場合、SSL 設定を構成します。

![\[[Application Load Balancer listener (Application Load Balancer リスナー)] ダイアログボックス\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-listener-dialog.png)


HTTPS リスナーを設定する前に、有効な SSL 証明書を保持していることを確認します。次のいずれかを行います。
+  AWS Certificate Manager (ACM) が [AWS リージョンで利用可能な場合は](https://docs.aws.amazon.com/general/latest/gr/acm.html)、ACM を使用して証明書を作成またはインポートします。ACM 証明書のリクエストの詳細については、*AWS Certificate Manager ユーザーガイド*の「[証明書のリクエスト](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)」を参照してください。ACM へのサードパーティー証明書のインポートの詳細については、*AWS Certificate Manager ユーザーガイド*の「[証明書のインポート](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)」を参照してください。
+ ACM が[お客様の AWS リージョンで利用](https://docs.aws.amazon.com/general/latest/gr/acm.html)できない場合は、既存の証明書とキーを IAM にアップロードします。証明書の作成と IAM へのアップロードの詳細については、「IAM ユーザーガイド」の「[サーバー証明書の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)」を参照してください。

Elastic Beanstalk における HTTPS の設定と証明書の使用の詳細については、「[Elastic Beanstalk 環境の HTTPS の設定](configuring-https.md)」を参照してください。

### プロセス
<a name="environments-cfg-alb-console-processes"></a>

このリストを使用して、ロードバランサーにプロセスを指定します。プロセスは、トラフィックをルートするターゲットです。各リスナーは、指定されたプロトコルを使用して、指定されたポートの着信クライアントトラフィックをインスタンスの 1 つ以上のプロセスにルーティングします。初期状態では、このリストにはポート 80 で着信する HTTP トラフィックをリッスンするデフォルトのプロセスが表示されます。

![\[Application Load Balancer の設定 - プロセスリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-processes.png)


既存のプロセスの設定を編集するか、あるいは新しいプロセスを追加します。リストのプロセスの編集またはプロセスの追加を開始するには、[リスナーリスト](#environments-cfg-alb-console-listeners)と同じステップを使用します。[**環境プロセス**] ダイアログボックスが開きます。

**Topics**
+ [定義](#environments-cfg-alb-console-process-definition)
+ [ヘルスチェック](#environments-cfg-alb-console-process-healthchecks)
+ [セッション](#environments-cfg-alb-console-process-sessions)

#### 定義
<a name="environments-cfg-alb-console-process-definition"></a>

これらの設定を使用して、[**名前**] と、リクエストをリッスンする [**ポート**] および [**プロトコル**] でプロセスを定義します。

![\[Application Load Balancer での名前、ポート、プロトコルの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


#### ヘルスチェック
<a name="environments-cfg-alb-console-process-healthchecks"></a>

次の設定を使用して、プロセスのヘルスチェックを設定します。
+ [**HTTP code (HTTP コード)**] - 正常なプロセスを示す HTTP ステータスコード。
+ [**Path (パス)**] - プロセスのヘルスチェックリクエストパス。
+ [**Timeout (タイムアウト)**] - ヘルスチェックのレスポンスを待つ時間 (秒単位)。
+ [**Interval (間隔)**] - 個々のインスタンスのヘルスチェックの間隔 (秒単位)。間隔はタイムアウトより大きくする必要があります。
+ [**Unhealthy threshold (非正常のしきい値)**]、[**Healthy threshold (正常のしきい値)**] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに失敗または合格しなければならない回数。
+ [**Deregistration delay (登録解除の遅延)**] - インスタンスの登録を解除する前にアクティブリクエストの完了を待機する時間 (秒単位)。

![\[Application Load Balancer でのヘルスチェック用のプロセスの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-healthcheck.png)


**注記**  
Elastic Load Balancing ヘルスチェックは、環境の Auto Scaling グループのヘルスチェック動作に影響しません。Elastic Load Balancing ヘルスチェックに失敗したインスタンスは、Amazon EC2 Auto Scaling を手動で設定していなければ、Amazon EC2 Auto Scaling によって自動的に置き換えられません。詳細については、「[Elastic Beanstalk 環境用の Auto Scaling ヘルスチェック設定](environmentconfig-autoscaling-healthchecktype.md)」を参照してください。

ヘルスチェックと、それが環境の全体的な状態に与える影響の詳細については、「[ベーシックヘルスレポート](using-features.healthstatus.md)」を参照してください。

#### セッション
<a name="environments-cfg-alb-console-process-sessions"></a>

[**Stickiness policy enabled**] ボックスをオンまたはオフにして、スティッキーセッションを有効または無効にします。[**Cookie の維持期間**] を使用して、スティッキーセッションの有効期間を最大 **604800** 秒までに設定します。

![\[セッションの維持に関連する Application Load Balancer プロセスの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### Rules
<a name="environments-cfg-alb-console-rules"></a>

このリストを使用して、ロードバランサーにカスタムリスナールールを指定します。ルールマップでは、リスナーがターゲットプロセスへの特定のパスパターンを受信することをリクエストします。各リスナーでは、インスタンスでの異なるプロセスへの別々のパスにリクエストをルーティングする複数のルールを保持することができます。

ルールには着信するリクエストに適用されるべき優先度を決定する優先順位の数字があります。追加する新しいリスナーごとに、Elastic Beanstalk はリスナーのトラフィックのすべてをデフォルトのプロセスにルーティングするデフォルトのルールを追加します。このデフォルトのルールの優先順位は最も低く、着信するリクエストに一致する他のルールが同じリスナーにない場合にのみ適用されます。最初は、カスタムルールを追加していない場合、リストは空です。すべてのリスナーのデフォルトルールは表示されません。

![\[Application Load Balancer の設定 - ルールリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-rules.png)


既存のルールの設定を編集するか、あるいは新しいルールを追加します。リストのルールの編集またはルールの追加を開始するには、[リスナーリスト](#environments-cfg-alb-console-listeners)と同じ手順を使用します。[**リスナールール **] ダイアログボックスが開き、以下の設定が表示されます。
+ [**Name (名前)**] - ルールの名前。
+ [**Listener port (リスナーポート)**] - ルールが適用されるリスナーのポート。
+ [**Priority (優先度)**] - ルールの優先度。数の小さい優先度番号が優先されます。リスナーのルールの優先順位は一意である必要があります。
+ **Match conditions (一致条件)** - ルールが適用されるリクエスト URL の条件のリスト。条件には、[**HosTheader**] (URL のドメイン部分) と [**PathPattern**] (URL のパス部分) の 2 種類があります。条件は最大 5 つまで追加できます。各条件値は最大 128 文字で、ワイルドカード文字を含めることができます。
+ [**Process (プロセス)**] - ロードバランサーがルールと一致するリクエストをルーティングするプロセス。

既存のルールを編集する場合、その [**名前**] および [**リスナーポート**] を変更することはできません。

![\[Application Load Balancer の設定 - ルールリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


### アクセスログのキャプチャ
<a name="environments-cfg-alb-console-logs"></a>

これらの設定を使用して、Application Load Balancer に送信されたリクエストの詳細情報のログを取得するように Elastic Load Balancing を設定します。アクセスログのキャプチャはデフォルトでは無効になっています。[**Store logs (ログの保存)**] が有効なとき、Elastic Load Balancing は、設定された **S3 バケット**にログを保存します。[**Prefix (プレフィックス)**] 設定は、ログのバケットの最上位フォルダを指定します。Elastic Load Balancing は、プレフィックスの下の `AWSLogs` という名前のフォルダにログを配置します。プレフィックスを指定しない場合、Elastic Load Balancing はバケットのルートレベルにそのフォルダを配置します。

**注記**  
アクセスログキャプチャ用に設定した Amazon S3 バケットが、Elastic Beanstalk がアカウント用に作成したバケットでない場合は、 AWS Identity and Access Management (IAM) ユーザーに適切なアクセス許可を持つユーザーポリシーを追加してください。Elastic Beanstalk が提供する[管理ユーザーポリシー](AWSHowTo.iam.managed-policies.md)は、Elastic Beanstalk で管理されるリソースに対するアクセス許可のみを対象としています。

アクセス許可やその他の要件を含むアクセスログの詳細については、「[Access logs for your Application Load Balancer (アプリケーションロードバランサーのアクセスログ) ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html)」を参照してください。

![\[Application Load Balancer の設定 - アクセスリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-logs.png)


## 例: セキュアなリスナーと 2 つのプロセスを使用する Application Load Balancer
<a name="environments-cfg-alb-console-example"></a>

この例では、アプリケーションにはエンドツーエンドのトラフィック暗号および管理リクエストを処理するための別のプロセスが必要です。

これらの要件を満たすように環境の Application Load Balancer を設定するには、デフォルトのリスナーを削除し、HTTPS リスナーを追加して、デフォルトのプロセスが HTTPS のポート 443 をリッスンするように指定します。また、別のパスに管理トラフィックのプロセスおよびリスナールールを追加します。

**この例でロードバランサーを設定するには**

1. *安全なリスナーを追加します。*［**ポート**］に「**443**」と入力します。[**プロトコル**] で、[**HTTPS**] を選択します。[**SSL 証明書**] で、SSL 証明書の ARN を選択します。たとえば、**arn:aws:iam::123456789012:server-certificate/abc/certs/build**、**arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678** などです。

   [**デフォルトプロセス**] で、**default** を選択したままにします。  
![\[Application Load Balancer の設定 - セキュアなリスナーの追加\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-https.png)

   これでリストに追加のリスナーが表示されます。  
![\[Application Load Balancer の設定例 - 2 つのリスナーを含むリスナーリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners2.png)

1. *デフォルトのポート 80 HTTP リスナーを無効にします。*デフォルトのリスナーについて、[**有効**] オプションをオフにします。  
![\[Application Load Balancer の設定例 - デフォルトのリスナーを無効にする\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-disabled.png)

1. *デフォルトプロセスを HTTPS に設定します。*デフォルトのプロセスを選択し、[**アクション**] で [**編集**] を選択します。［**ポート**］に「**443**」と入力します。[**プロトコル**] で、[**HTTPS**] を選択します。  
![\[Application Load Balancer の設定例 - デフォルトのプロセスを HTTPS に設定する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *管理プロセスを追加します。***[Name]** (名前) に、「**admin**」と入力します。［**ポート**］に「**443**」と入力します。[**プロトコル**] で、[**HTTPS**] を選択します。[**ヘルスチェック**] で [**パス**] に「**/admin**」と入力します。  
![\[Application Load Balancer の設定例 - 管理プロセスを追加する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *管理トラフィックのルールを追加します。***[Name]** (名前) に、「**admin**」と入力します。[**リスナーポート**] で **443** と入力します。[**一致条件**] には、**/admin/\$1** の値で [**PathPattern**] を追加します。[**プロセス**] で、**admin** を選択します。  
![\[Application Load Balancer の設定例 - 管理ルールを追加する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## EB CLI を使用した Application Load Balancer の設定
<a name="environments-cfg-alb-ebcli"></a>

[**eb create**](eb3-create.md) の実行時に、EB CLI によりロードバランサータイプの選択が求められます。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 2):
```

`--elb-type` オプションでロードバランサータイプを指定することもできます。

```
$ eb create test-env --elb-type application
```

## Application Load Balancer の名前空間
<a name="environments-cfg-alb-namespaces"></a>

Application Load Balancer に関連する設定は、以下の名前空間にあります。
+ `aws:elasticbeanstalk:environment` - 環境のロードバランサーのタイプを選択します。Application Load Balancer の値は `application` です。

  設定ファイル ([.Ebextensions](ebextensions.md)) では、このオプションを設定できません。
+ `aws:elbv2:loadbalancer` - Application Load Balancer 全体に適用されるアクセスログとその他の設定を定義します。
+ `aws:elbv2:listener` - Application Load Balancer のリスナーを設定します。これらの設定は、Classic Load Balancer に対する `aws:elb:listener` の設定にマッピングされます。
+ `aws:elbv2:listenerrule` - リクエストパスに応じて、別々のプロセスにトラフィックをルーティングするルールを設定します。ルールは Application Load Balancer に固有です。
+ `aws:elasticbeanstalk:environment:process` - ヘルスチェックを設定し、環境のインスタンスで実行するプロセス用のポートとプロトコルを指定します。ポートとプロトコル設定は Classic Load Balancer のリスナー用の `aws:elb:listener` のインスタンスポートおよびインスタンスプロトコル設定にマッピングされます。ヘルスチェックの設定は、`aws:elb:healthcheck` および `aws:elasticbeanstalk:application` 名前空間の設定にマッピングされます。

**Example .ebextensions/alb-access-logs.config**  
以下の設定ファイルでは、Application Load Balancer を使用した環境用のアクセスログのアップロードが可能になります。  

```
option_settings:
  aws:elbv2:loadbalancer:
    AccessLogsS3Bucket: amzn-s3-demo-bucket
    AccessLogsS3Enabled: 'true'
    AccessLogsS3Prefix: beanstalk-alb
```

**Example .ebextensions/alb-default-process.config**  
以下の設定ファイルでは、デフォルトプロセスのヘルスチェックとセッション維持の設定を変更します。  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '15'
    HealthCheckPath: /
    HealthCheckTimeout: '5'
    HealthyThresholdCount: '3'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: HTTP
    StickinessEnabled: 'true'
    StickinessLBCookieDuration: '43200'
```

**Example .ebextensions/alb-secure-listener.config**  
以下の設定ファイルでは、ポート 443 でセキュアリスナーと一致するプロセスを追加します。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/alb-admin-rule.config**  
以下の設定ファイルでは、ポート 4443 でリッスンする `/admin` というプロセスに、リクエストパス `admin` を使用してトラフィックをルーティングするルールでセキュアリスナーを追加します。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    Rules: admin
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# 共有 Application Load Balancer の設定
<a name="environments-cfg-alb-shared"></a>

[ロードバランシングを有効にする](using-features-managing-env-types.md#using-features.managing.changetype)と、 AWS Elastic Beanstalk 環境に Elastic Load Balancing ロードバランサーが搭載され、環境内のインスタンス間でトラフィックが分散されます。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。それらについては、[Elastic Load Balancing ユーザーガイド](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)を参照してください。Elastic Beanstalk では、ロードバランサーを作成したり、作成した共有ロードバランサーを指定したりできます。

このトピックでは、共有 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) を作成して環境に関連付ける設定について説明します。[Application Load Balancer の設定](environments-cfg-alb.md) も参照してください。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定については、「[Elastic Beanstalk 環境のロードバランサー](using-features.managing.elb.md)」を参照してください。

**注記**  
環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。実行中の環境のロードバランサーの行動管理の設定は変更できますが、タイプを変更することはできません。また、専用ロードバランサーから共有ロードバランサーに切り替えることも、その逆もできません。

## 序章
<a name="environments-cfg-alb-shared-intro"></a>

*共有ロードバランサー*は、Amazon Elastic Compute Cloud (Amazon EC2) サービスにより自分で作成および管理し、複数の Elastic Beanstalk 環境で使用するロードバランサーです。

負荷分散されたスケーリング環境を作成し、Application Load Balancer の使用を選択すると、Elastic Beanstalk はデフォルトで環境専用のロードバランサーを作成します。Application Load Balancer とは何か、Elastic Beanstalk 環境でのしくみについては、Elastic Beanstalk 用の Application Load Balancer の設定の[概要](environments-cfg-alb.md#environments-cfg-alb-intro)を参照してください。

状況によっては、複数の専用ロードバランサーを使用するコストを削減したい場合があります。これは、アプリケーションがモノリシックサービスではなくマイクロサービスのスイートである場合など、複数の環境がある場合に役立ちます。このような場合は、共有ロードバランサーの使用を選択できます。

共有ロードバランサーを使用するには、まず Amazon EC2 で共有ロードバランサーを作成し、1 つ以上のリスナーを追加します。Elastic Beanstalk 環境の作成中に、ロードバランサーを提供し、リスナーポートを選択します。Elastic Beanstalk は、リスナーを環境内のデフォルトのプロセスに関連付けます。カスタムリスナールールを追加して、特定のホストヘッダーとパスから他の環境プロセスにトラフィックをルーティングできます。

Elastic Beanstalk は、共有ロードバランサーにタグを追加します。タグ名は `elasticbeanstalk:shared-elb-environment-count` で、値はこのロードバランサーを共有する環境の数です。

共有ロードバランサーの使用は、専有ロードバランサーの使用とはいくつかの方法で異なります。


| 内容 | 専用 Application Load Balancer | 共有 Application Load Balancer | 
| --- | --- | --- | 
|  管理  |  Elastic Beanstalk は、ロードバランサー、リスナー、リスナールール、プロセス (ターゲットグループ) を作成および管理します。Elastic Beanstalk は、環境の終了時にそれらも削除します。そのオプションを選択した場合、Elastic Beanstalk はロードバランサーのアクセスログのキャプチャを設定できます。  |  Elastic Beanstalk の外部でロードバランサーとリスナーを作成および管理します。Elastic Beanstalk によってデフォルトのルールとデフォルトのプロセスが作成および管理されます。お客様はルールとプロセスを追加できます。Elastic Beanstalk は、環境の作成中に追加されたリスナールールとプロセスを削除します。  | 
|  リスナールール  |  Elastic Beanstalk は、リスナーごとにデフォルトのルールを作成し、すべてのトラフィックをリスナーのデフォルトのプロセスにルーティングします。  |  Elastic Beanstalk は、デフォルトのルールをポート 80 リスナーにのみ関連付けます (存在する場合)。別のデフォルトのリスナーポートを選択した場合は、デフォルトのルールをそれに関連付ける必要があります (Elastic Beanstalk コンソールと EB CLI を使用して行います)。 ロードバランサーを共有する環境間でリスナールール条件の競合を解決するために、Elastic Beanstalk はホストヘッダー条件として環境の CNAME をリスナールールに追加します。 Elastic Beanstalk は、ロードバランサーを共有する環境間でルールの優先順位設定を相対的なものとして扱い、作成時に絶対的な優先順位にマッピングします。  | 
|  セキュリティグループ  |  Elastic Beanstalk は、デフォルトのセキュリティグループを作成し、ロードバランサーにアタッチします。  |  ロードバランサーに使用する 1 つ以上のセキュリティグループを設定できます。設定しない場合、Elastic Beanstalk は、管理している既存のセキュリティグループがロードバランサーに既にアタッチされているかどうかを確認します。アタッチされていない場合、Elastic Beanstalk はセキュリティグループを作成し、ロードバランサーにアタッチします。Elastic Beanstalk は、ロードバランサーを共有する最後の環境が終了すると、このセキュリティグループを削除します。  | 
|  更新  |  環境の作成後に Application Load Balancer を更新できます。リスナー、リスナールール、およびプロセスを編集できます。ロードバランサーのアクセスログのキャプチャを設定できます。  |  Elastic Beanstalk を使用して Application Load Balancer でアクセスログのキャプチャを設定することはできません。また、環境の作成後にリスナーとリスナールールを更新することもできません。プロセス (ターゲットグループ) のみを更新できます。アクセスログのキャプチャを設定し、リスナーとリスナールールを更新するには、Amazon EC2 を使用します。  | 

## Elastic Beanstalk コンソールを使用した共有 Application Load Balancer の設定
<a name="environments-cfg-alb-shared-console"></a>

Elastic Beanstalk コンソールを使用して、環境の作成中に共有 Application Load Balancer を設定できます。環境で使用するアカウントの共有可能なロードバランサーの 1 つを選択し、デフォルトのリスナーポートを選択して、追加のプロセスとリスナールールを設定できます。

環境の作成後は、Application Load Balancer コンソールで共有 Application Load Balancer の設定を編集することはできません。リスナー、リスナールール、プロセス (ターゲットグループ)、アクセスログのキャプチャを設定するには、Amazon EC2 を使用します。

**環境の作成中に Elastic Beanstalk コンソールで Application Load Balancer を設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで [**Environments (環境)**] を選択します。

1. [[新しい環境の作成](environments-create-wizard.md)] を選択して、環境の作成を開始します。

1. ウィザードのメインページで、[**環境の作成**] を選択する前に、[**さらにオプションを設定**] を選択します。

1. [**高可用性**] 設定プリセットを選択します。

   または、[**容量**] 設定カテゴリで [**ロードバランサー**] 環境タイプを設定します。詳細については、「[Capacity](environments-create-wizard.md#environments-create-wizard-capacity)」を参照してください。

1. [**ロードバランサー**] 設定カテゴリで、[**編集**] を選択します。

1. まだ選択されていない場合は、[**Application Load Balancer**] オプションを選択してから、[**Shared (共有)**] オプションを選択します。  
![\[Elastic Load Balancing 設定ページ - ロードバランサータイプの選択\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-type-chooser.png)

1. 共有 Application Load Balancer 設定に、環境に必要な変更を加えます。

1. [**保存**] を選択し、環境に必要なその他の任意の設定変更を行います。

1. [**環境を作成**] を選択します。

**Topics**
+ [共有 Application Load Balancer](#environments-cfg-alb-shared-console-alb)
+ [プロセス](#environments-cfg-alb-shared-console-processes)
+ [Rules](#environments-cfg-alb-shared-console-rules)

### 共有 Application Load Balancer
<a name="environments-cfg-alb-shared-console-alb"></a>

このセクションを使用して、環境に合わせて共有 Application Load Balancer を選択し、デフォルトのトラフィックルーティングを設定します。

ここで共有 Application Load Balancer を設定する前に、Amazon EC2 を使用してアカウントで、1 つ以上のリスナーと共有する 1 つ以上の Application Load Balancer を定義します。まだ選択されていない場合は、[**Manage load balancers (ロードバランサーの管理)**] を選択できます。Elastic Beanstalk は、Amazon EC2 コンソールを新しいブラウザタブで開きます。

Elastic Beanstalk の外部で共有ロードバランサーを設定した場合、このコンソールセクションで以下のように設定します。
+ [**Load balancer ARN (ロードバランサー ARN)**] - この環境で使用する共有ロードバランサー。ロードバランサーのリストから選択するか、ロードバランサーの Amazon リソースネーム (ARN) を入力します。
+ [**Default listener port (デフォルトのリスナーポート)**] - 共有ロードバランサーがリッスンするリスナーポート。既存のリスナーポートのリストから選択します。ホストヘッダーに環境の CNAME を含む、このリスナーからのトラフィックは、この環境のデフォルトプロセスにルーティングされます。

![\[Application Load Balancer の設定 - 共有ロードバランサーの選択\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-alb.png)


### プロセス
<a name="environments-cfg-alb-shared-console-processes"></a>

このリストを使用して、共有ロードバランサーにプロセスを指定します。プロセスは、トラフィックをルートするターゲットです。初期状態では、このリストには、デフォルトリスナーからトラフィックを受信するデフォルトプロセスが表示されます。

![\[Application Load Balancer の設定 - プロセスリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-processes.png)


**既存のプロセスを設定するには**

1. そのテーブルエントリの横にあるチェックボックスを選択し、続いて [**アクション**]、[**編集**] の順に選択します。

1. [**環境プロセス**] ダイアログボックスを使用して設定を編集し、[**保存**] を選択します。

**プロセスを追加するには**

1. [**プロセスの追加**] を選択します。

1. [**環境プロセス**] ダイアログボックスで設定を行い、[**追加**] を選択します。

**Topics**
+ [定義](#environments-cfg-alb-console-process-definition)
+ [ヘルスチェック](#environments-cfg-alb-shared-console-process-healthchecks)
+ [セッション](#environments-cfg-alb-shared-console-process-sessions)

#### 定義
<a name="environments-cfg-alb-console-process-definition"></a>

これらの設定を使用して、[**名前**] と、リクエストをリッスンする [**ポート**] および [**プロトコル**] でプロセスを定義します。

![\[Application Load Balancer での名前、ポート、プロトコルの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


#### ヘルスチェック
<a name="environments-cfg-alb-shared-console-process-healthchecks"></a>

次の設定を使用して、プロセスのヘルスチェックを設定します。
+ [**HTTP code (HTTP コード)**] - 正常なプロセスを示す HTTP ステータスコード。
+ [**Path (パス)**] - プロセスのヘルスチェックリクエストパス。
+ [**Timeout (タイムアウト)**] - ヘルスチェックのレスポンスを待つ時間 (秒単位)。
+ [**Interval (間隔)**] - 個々のインスタンスのヘルスチェックの間隔 (秒単位)。間隔はタイムアウトより大きくする必要があります。
+ [**Unhealthy threshold (非正常のしきい値)**]、[**Healthy threshold (正常のしきい値)**] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに失敗または合格しなければならない回数。
+ [**Deregistration delay (登録解除の遅延)**] - インスタンスの登録を解除する前にアクティブリクエストの完了を待機する時間 (秒単位)。

![\[Application Load Balancer でのヘルスチェック用のプロセスの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-healthcheck.png)


**注記**  
Elastic Load Balancing ヘルスチェックは、環境の Auto Scaling グループのヘルスチェック動作に影響しません。Elastic Load Balancing ヘルスチェックに失敗したインスタンスは、Amazon EC2 Auto Scaling を手動で設定していなければ、Amazon EC2 Auto Scaling によって自動的に置き換えられません。詳細については、「[Elastic Beanstalk 環境用の Auto Scaling ヘルスチェック設定](environmentconfig-autoscaling-healthchecktype.md)」を参照してください。

ヘルスチェックと、それが環境の全体的な状態に与える影響の詳細については、「[ベーシックヘルスレポート](using-features.healthstatus.md)」を参照してください。

#### セッション
<a name="environments-cfg-alb-shared-console-process-sessions"></a>

[**Stickiness policy enabled**] ボックスをオンまたはオフにして、スティッキーセッションを有効または無効にします。[**Cookie の維持期間**] を使用して、スティッキーセッションの有効期間を最大 **604800** 秒までに設定します。

![\[セッションの維持に関連する Application Load Balancer プロセスの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### Rules
<a name="environments-cfg-alb-shared-console-rules"></a>

このリストを使用して、共有ロードバランサーにカスタムリスナールールを指定します。ルールマップでは、リスナーがターゲットプロセスへの特定のパスパターンを受信することをリクエストします。各リスナーでは、リスナーを共有する異なる環境のインスタンスでの異なるプロセスへの別々のパスにリクエストをルーティングする複数のルールを保持することができます。

ルールには着信するリクエストに適用されるべき優先度を決定する優先順位の数字があります。Elastic Beanstalk は、すべてのデフォルトのリスナーのトラフィックを新しい環境のデフォルトのプロセスにルーティングするデフォルトのルールを追加します。このデフォルトのルールの優先順位は最も低く、着信するリクエストに一致する他のルールが同じリスナーにない場合にのみ適用されます。最初は、カスタムルールを追加していない場合、リストは空です。デフォルトのルールは表示されません。

![\[Application Load Balancer の設定 - ルールリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-rules.png)


既存のルールの設定を編集するか、あるいは新しいルールを追加します。リストのルールの編集またはルールの追加を開始するには、[プロセスリスト](#environments-cfg-alb-shared-console-processes)と同じ手順を使用します。[**リスナールール **] ダイアログボックスが開き、以下の設定が表示されます。
+ [**Name (名前)**] - ルールの名前。
+ [**Listener port (リスナーポート)**] - ルールが適用されるリスナーのポート。
+ [**Priority (優先度)**] - ルールの優先度。数の小さい優先度番号が優先されます。リスナーのルールの優先順位は一意である必要があります。Elastic Beanstalk では、共有環境全体でルールの優先順位が相対的なものとして扱われ、作成時に絶対的な優先順位にマッピングされます。
+ **Match conditions (一致条件)** - ルールが適用されるリクエスト URL の条件のリスト。条件には、[**HosTheader**] (URL のドメイン部分) と [**PathPattern**] (URL のパス部分) の 2 種類があります。1 つの条件は環境サブドメイン用に予約されており、最大 4 つの条件を追加できます。各条件値は最大 128 文字で、ワイルドカード文字を含めることができます。
+ [**Process (プロセス)**] - ロードバランサーがルールと一致するリクエストをルーティングするプロセス。

![\[Application Load Balancer の設定 - ルールリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


## 例: セキュアなマイクロサービスベースのアプリケーションに共有 Application Load Balancer を使用する
<a name="environments-cfg-alb-shared-console-example"></a>

この例では、アプリケーションは複数のマイクロサービスで構成され、それぞれが Elastic Beanstalk 環境として実装されています。さらに、エンドツーエンドのトラフィック暗号化が必要です。ここでは、マイクロサービス環境の 1 つを紹介します。マイクロサービス環境には、ユーザーリクエスト用のメインプロセスと、管理リクエストを処理するための別個のプロセスがあります。

これらの要件を満たすには、Amazon EC2 を使用して、マイクロサービス間で共有する Application Load Balancer を作成します。ポート 443 および HTTPS プロトコルに安全なリスナーを追加します。次に、マイクロサービスドメインごとに 1 つずつ、複数の SSL 証明書をリスナーに追加します。Application Load Balancer とセキュアなリスナーの作成の詳細については、「Application Load Balancer ユーザーガイド」の「[Application Load Balancer の作成](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)」と「[Application Load Balancer 用の HTTPS リスナーを作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)」を参照してください。

Elastic Beanstalk で、共有 Application Load Balancer を使用するように各マイクロサービス環境を設定してから、デフォルトのリスナーポートを 443 に設定します。ここで示している特定の環境の場合、デフォルトのプロセスが HTTPS でポート 443 をリッスンしていることを示し、別のパスで管理トラフィックのプロセスとリスナールールを追加します。

**この例で共有ロードバランサーを設定するには**

1. [**Shared Application Load Balancer (共有 Application Load Balancer)**] セクションでロードバランサーを選択してから、[**Default listener port (デフォルトのリスナーポート)**] で **443** を選択します。ロードバランサーが唯一のリスナーである場合は、リスナーポートが既に選択されている必要があります。  
![\[Application Load Balancer の設定 - セキュアなリスナーの追加\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-example-alb.png)

1. *デフォルトプロセスを HTTPS に設定します。*デフォルトのプロセスを選択し、[**アクション**] で [**編集**] を選択します。[**Port (ポート)**] に「**443**」と入力します。[**プロトコル**] で、[**HTTPS**] を選択します。  
![\[Application Load Balancer の設定例 - デフォルトのプロセスを HTTPS に設定する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *管理プロセスを追加します。*[**名前**] に**admin**と入力してください。[**Port (ポート)**] に「**443**」と入力します。[**プロトコル**] で、[**HTTPS**] を選択します。[**ヘルスチェック**] で [**パス**] に **/admin** と入力します。  
![\[Application Load Balancer の設定例 - 管理プロセスを追加する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *管理トラフィックのルールを追加します。*[**名前**] に**admin**と入力してください。[**リスナーポート**] に **443** と入力します。[**一致条件**] には、**/admin/\$1** の値で [**PathPattern**] を追加します。[**プロセス**] で、**admin** を選択します。  
![\[Application Load Balancer の設定例 - 管理ルールを追加する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## EB CLI を使用した共有 Application Load Balancer の設定
<a name="environments-cfg-alb-shared-ebcli"></a>

[**eb create**](eb3-create.md) の実行時に、EB CLI によりロードバランサータイプの選択が求められます。`application` (デフォルト) を選択し、アカウントに共有可能な Application Load Balancer が 1 つ以上ある場合、EB CLI では共有 Application Load Balancer を使用するかどうかも尋ねられます。**y** と答えると、ロードバランサーとデフォルトポートを選択するように求められます。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 2): 

Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y

Select a shared load balancer
1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e
2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
(default is 1): 2

Select a listener port for your shared load balancer
1) 80
2) 100
3) 443
(default is 1): 3
```

コマンドオプションを使用して、共有ロードバランサーを指定することもできます。

```
$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443
```

## 共有 Application Load Balancer の名前空間
<a name="environments-cfg-alb-shared-namespaces"></a>

共有 Application Load Balancer に関連する設定は、以下の名前空間にあります。
+ `aws:elasticbeanstalk:environment` - 環境のロードバランサーの種類を選択し、Elastic Beanstalk に共有ロードバランサーを使用することを指示します。

  設定ファイル ([.Ebextensions](ebextensions.md)) では、これらの 2 つのオプションを設定できません。
+ `aws:elbv2:loadbalancer` - 共有 Application Load Balancer の ARN とセキュリティグループを設定します。
+ `aws:elbv2:listener` - リスナールールのリストを指定して、共有 Application Load Balancer のリスナーを環境プロセスに関連付けます。
+ `aws:elbv2:listenerrule` - リクエストパスに応じて、別々のプロセスにトラフィックをルーティングするリスナールールを設定します。ルールは、専用と共有の両方の Application Load Balancer に固有です。
+ `aws:elasticbeanstalk:environment:process` - ヘルスチェックを設定し、環境のインスタンスで実行するプロセス用のポートとプロトコルを指定します。

**Example .ebextensions/application-load-balancer-shared.config**  
共有 Application Load Balancer の使用を開始するには、Elastic Beanstalk コンソール、EB CLI、または API を使用してロードバランサータイプを `application` に設定し、共有ロードバランサーの使用を選択します。[設定ファイル](ebextensions.md)を使用して、共有ロードバランサーを設定します。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
```

**注記**  
このオプションは、環境の作成中にのみ設定できます。

**Example .ebextensions/alb-shared-secure-listener.config**  
次の設定ファイルは、共有ロードバランサーのポート 443 でデフォルトの安全なリスナーを選択し、ポート 443 をリッスンするデフォルトのプロセスを設定します。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/alb-shared-admin-rule.config**  
次の設定ファイルは、前の例に基づいて設定され、リクエストパスが `/admin` のトラフィックを、ポート 4443 でリッスンする `admin` という名前のプロセスにルーティングするルールを追加します。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default,admin
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# Network Load Balancer の設定
<a name="environments-cfg-nlb"></a>

[ロードバランシングを有効にする](using-features-managing-env-types.md#using-features.managing.changetype)と、 AWS Elastic Beanstalk 環境に Elastic Load Balancing ロードバランサーが搭載され、環境内のインスタンス間でトラフィックが分散されます。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。それらについては、[Elastic Load Balancing ユーザーガイド](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)を参照してください。Elastic Beanstalk では、ロードバランサーを作成したり、作成した共有ロードバランサーを指定したりできます。

このトピックでは、Elastic Beanstalk が作成し、環境専用にする [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) の設定について説明します。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定については、「[Elastic Beanstalk 環境のロードバランサー](using-features.managing.elb.md)」を参照してください。

**注記**  
環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。実行中の環境のロードバランサーの行動管理の設定は変更できますが、タイプを変更することはできません。

## 序章
<a name="environments-cfg-nlb-intro"></a>

Network Load Balancer では、デフォルトのリスナーはポート 80 で TCP リクエストを受け取り、環境内のインスタンスに分散します。ヘルスチェックの動作の設定、リスナーポートの設定、または他のポートへのリスナーの追加を行うことができます。

**注記**  
Classic Load Balancer や Application Load Balancer とは異なり、Network Load Balancer はアプリケーションレイヤー (レイヤー 7) の HTTP または HTTPS リスナーを配置できません。トランスポートレイヤー (レイヤー 4) TCP リスナーのみをサポートしています。HTTP および HTTPS トラフィックは、TCP 経由で環境にルーティングできます。ウェブクライアントと環境の間でセキュアな HTTPS 接続を確立するには、[自己署名証明書](configuring-https-ssl.md) を環境のインスタンスにインストールして、適切なポート (通常は 443) でリッスンして HTTPS 接続を終了するようにインスタンスを設定します。設定はプラットフォームによって異なります。手順については「[インスタンスでの HTTPS 終端の設定](https-singleinstance.md)」を参照してください。次に、適切なポートでリッスンしているプロセスにマッピングされるリスナーを追加するように、Network Load Balancer を設定します。

Network Load Balancer は、アクティブなヘルスチェックをサポートしています。これらのチェックは、ルート (`/`) パスへのメッセージに基づきます。さらに、Network Load Balancer はパッシブなヘルスチェックもサポートしています。問題のあるバックエンドインスタンスを自動的に検出し、正常なインスタンスにのみトラフィックをルーティングします。

## Elastic Beanstalk コンソールを使用した Network Load Balancer の設定
<a name="environments-cfg-nlb-console"></a>

Elastic Beanstalk コンソールを使用して、環境の作成中か、後で環境の実行中に、Network Load Balancer のリスナーとプロセスを設定できます。

**環境の作成中に Elastic Beanstalk コンソールで Network Load Balancer を設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで [**Environments (環境)**] を選択します。

1. [[新しい環境の作成](environments-create-wizard.md)] を選択して、環境の作成を開始します。

1. ウィザードのメインページで、[**環境の作成**] を選択する前に、[**さらにオプションを設定**] を選択します。

1. [**高可用性**] 設定プリセットを選択します。

   または、[**容量**] 設定カテゴリで [**ロードバランサー**] 環境タイプを設定します。詳細については、「[Capacity](environments-create-wizard.md#environments-create-wizard-capacity)」を参照してください。

1. [**ロードバランサー**] 設定カテゴリで、[**編集**] を選択します。

1. まだ選択されていない場合は、[**Network Load Balancer**] オプションを選択します。  
![\[Elastic Load Balancing 設定ページ - ロードバランサータイプの選択\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-type-chooser.png)

1. Network Load Balancer の設定に、環境に必要な変更を加えます。

1. [**保存**] を選択し、環境に必要なその他の任意の設定変更を行います。

1. [**環境を作成**] を選択します。

**実行中の環境の Network Load Balancer を Elastic Beanstalk コンソールで設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. [**ロードバランサー**] 設定カテゴリで、[**編集**] を選択します。
**注記**  
[**ロードバランサー**] 設定カテゴリに [**編集**] ボタンがない場合、お客様の環境にはロードバランサーがありません。設定方法については、「[環境タイプの変更](using-features-managing-env-types.md#using-features.managing.changetype)」を参照してください。

1. Network Load Balancer の設定に、環境に必要な変更を加えます。

1. ページの最下部で **[適用]** を選択し変更を保存します。

**Topics**
+ [リスナー](#environments-cfg-nlb-console-listeners)
+ [プロセス](#environments-cfg-nlb-console-processes)

### リスナー
<a name="environments-cfg-nlb-console-listeners"></a>

このリストを使用して、ロードバランサーにリスナーを指定します。各リスナーは、指定されたポートの着信クライアントトラフィックをインスタンス上のプロセスにルーティングします。初期状態では、このリストには、ポート 80 で着信トラフィックをポート 80 でリッスンする [**デフォルト**] という名前のプロセスにルーティングするデフォルトのリスナーが表示されます。

![\[Network Load Balancer の設定 - リスナーリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listeners.png)


**既存のリスナーを設定するには**

1. そのテーブルエントリの横にあるチェックボックスを選択し、続いて [**アクション**]、[**編集**] の順に選択します。

1. [**Network Load Balancer listener (ネットワークロードバランサーリスナー)**] ダイアログボックスを使用して設定を編集し、[**保存**] を選択します。

**リスナーを追加するには**

1. **[リスナーの追加]** を選択します。

1. [**Network Load Balancer listener (ネットワークロードバランサーリスナー)**] ダイアログボックスで必要な設定を行い、[**追加**] を選択します。

[**Network Load Balancer listener (ネットワークロードバランサーリスナー)**] ダイアログボックスを使用して、リスナーがトラフィックをリッスンするポートを設定し、トラフィックをルーティングするプロセス (プロセスがリッスンするポートによって指定された) を選択します。

![\[[Network Load Balancer listener (Network Load Balancer リスナー)] ダイアログボックス\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listener-dialog.png)


### プロセス
<a name="environments-cfg-nlb-console-processes"></a>

このリストを使用して、ロードバランサーにプロセスを指定します。プロセスは、トラフィックをルートするターゲットです。各リスナーは、指定されたポートの着信クライアントトラフィックをインスタンス上のプロセスにルーティングします。初期状態では、このリストには、ポート 80 で着信トラフィックをリッスンするデフォルトのプロセスが表示されます。

![\[Network Load Balancer の設定 - プロセスリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-processes.png)


既存のプロセスの設定を編集するか、あるいは新しいプロセスを追加します。リストのプロセスの編集またはプロセスの追加を開始するには、[リスナーリスト](environments-cfg-alb.md#environments-cfg-alb-console-listeners)と同じステップを使用します。[**環境プロセス**] ダイアログボックスが開きます。

**Topics**
+ [定義](#environments-cfg-nlb-console-process-definition)
+ [ヘルスチェック](#environments-cfg-nlb-console-process-healthchecks)

#### 定義
<a name="environments-cfg-nlb-console-process-definition"></a>

これらの設定を使用して、[**名前**] およびリクエストをリッスンする [**プロセスポート**] でプロセスを定義します。

![\[Network Load Balancer のプロセスダイアログボックスでの名前、リスナーポート、プロセスポートの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-definition.png)


#### ヘルスチェック
<a name="environments-cfg-nlb-console-process-healthchecks"></a>

次の設定を使用して、プロセスのヘルスチェックを設定します。
+ [**Interval (間隔)**] - 個々のインスタンスのヘルスチェックの間隔 (秒単位)。
+ [**Healthy threshold (正常のしきい値)**] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに合格しなければならない回数 (Network Load Balancer で、[**Unhealthy threshold (非正常のしきい値)**] は読み取り専用の設定であり、正常のしきい値と常に等しくなります)。
+ [**Deregistration delay (登録解除の遅延)**] - インスタンスの登録を解除する前にアクティブリクエストの完了を待機する時間 (秒単位)。

![\[Network Load Balancer のプロセスダイアログボックスでのヘルスチェックの設定\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-healthcheck.png)


**注記**  
Elastic Load Balancing ヘルスチェックは、環境の Auto Scaling グループのヘルスチェック動作に影響しません。Elastic Load Balancing ヘルスチェックに失敗したインスタンスは、Amazon EC2 Auto Scaling を手動で設定していなければ、Amazon EC2 Auto Scaling によって自動的に置き換えられません。詳細については、「[Elastic Beanstalk 環境用の Auto Scaling ヘルスチェック設定](environmentconfig-autoscaling-healthchecktype.md)」を参照してください。

ヘルスチェックと、それが環境の全体的な状態に与える影響の詳細については、「[ベーシックヘルスレポート](using-features.healthstatus.md)」を参照してください。

## 例: エンドツーエンド暗号化を使用する環境の Network Load Balancer
<a name="environments-cfg-nlb-console-example"></a>

この例では、アプリケーションはエンドツーエンドのトラフィック暗号化を必要とします。これらの要件を満たすように環境の Network Load Balancer を設定するには、ポート 443 をリッスンするようにデフォルトのプロセスを設定し、トラフィックをデフォルトのプロセスにルーティングするリスナーをポート 443 に追加して、デフォルトのリスナーを無効にします。

**この例でロードバランサーを設定するには**

1. *デフォルトプロセスを設定します。*デフォルトのプロセスを選択し、[**アクション**] で [**編集**] を選択します。[**プロセスポート**] に「`443`」と入力します。  
![\[Network Load Balancer の設定例 - プロセスポート 443 を使用するようにデフォルトのプロセスを設定する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-process-443.png)

1. *ポート 443 リスナーを追加します。*新しいリスナーを追加します。[**リスナーポート**] で `443` と入力します。[**プロセスポート**] として `443` が選択されていることを確認します。  
![\[Network Load Balancer の設定例 - ポート 443 リスナーを追加する\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listener-443.png)

   これでリストに追加のリスナーが表示されます。  
![\[Network Load Balancer の設定例 - 2 つのリスナーを含むリスナーリスト\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners.png)

1. *デフォルトのポート 80 リスナーを無効にします。*デフォルトのリスナーについて、[**有効**] オプションをオフにします。  
![\[Network Load Balancer の設定例 - デフォルトのリスナーを無効にする\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners-disabled.png)

## EB CLI を使用した Network Load Balancer の設定
<a name="environments-cfg-nlb-ebcli"></a>

[**eb create**](eb3-create.md) の実行時に、EB CLI によりロードバランサータイプの選択が求められます。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1): 3
```

`--elb-type` オプションでロードバランサータイプを指定することもできます。

```
$ eb create test-env --elb-type network
```

## Network Load Balancer の名前空間
<a name="environments-cfg-nlb-namespaces"></a>

Network Load Balancer に関連する設定は、以下の名前空間にあります。
+ `aws:elasticbeanstalk:environment` - 環境のロードバランサーのタイプを選択します。Network Load Balancer の値は `network` です。
+ `aws:elbv2:listener` - Network Load Balancer のリスナーを設定します。これらの設定は、Classic Load Balancer に対する `aws:elb:listener` の設定にマッピングされます。
+ `aws:elasticbeanstalk:environment:process` - ヘルスチェックを設定し、環境のインスタンスで実行するプロセス用のポートとプロトコルを指定します。ポートとプロトコル設定は Classic Load Balancer のリスナー用の `aws:elb:listener` のインスタンスポートおよびインスタンスプロトコル設定にマッピングされます。ヘルスチェックの設定は、`aws:elb:healthcheck` および `aws:elasticbeanstalk:application` 名前空間の設定にマッピングされます。

**Example .ebextensions/network-load-balancer.config**  
Network Load Balancer の使用を開始するには、[設定ファイル](ebextensions.md)を使用してロードバランサータイプを `network` に設定します。  

```
option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: network
```

**注記**  
環境の作成中にのみ、ロードバランサータイプを設定できます。

**Example .ebextensions/nlb-default-process.config**  
以下の設定ファイルでは、デフォルトプロセスのヘルスチェックの設定を変更します。  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '10'
    HealthyThresholdCount: '5'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: TCP
```

**Example .ebextensions/nlb-secure-listener.config**  
以下の設定ファイルでは、ポート 443 のセキュアなトラフィックのリスナーと、ポート 443 をリッスンする一致するターゲットプロセスが追加されます。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
```
この `DefaultProcess` オプションは、Application Load Balancer によりこのように名前が付けられており、特定のパスのトラフィックの同一ポートのデフォルトでないリスナーを設定することができます (詳細については [Application Load Balancer](environments-cfg-alb.md) を参照)。Network Load Balancer の場合、このオプションでは、このリスナーの唯一のターゲットプロセスを指定します。  
この例では、セキュアな (HTTPS) トラフィックをリッスンするため、プロセスは `https` という名前になります。Network Load Balancer は TCP でのみ使用できるため、リスナーは、TCP プロトコルを使用して、指定ポートのプロセスにトラフィックを送信します。HTTP および HTTPS のネットワークトラフィックは TCP の上で実装されるため、これは問題ありません。

# デュアルスタック Elastic Beanstalk ロードバランサーを設定する
<a name="environments-cfg-elbv2-ipv6-dualstack"></a>

デュアルスタック設定されたロードバランサーを使用して、Elastic Beanstalk 環境が IPv4 プロトコルと IPv6 プロトコルの両方を提供できるようにします。負荷分散された環境を作成すると、インフラストラクチャはデフォルトで IPv4 になります。デュアルスタック設定で新しい環境を作成するか、既存の IPv4 のみの環境をデュアルスタックに更新するかを選択できます。

環境のロードバランサーが IPv6 と IPv4 の両方のネットワークトラフィックを処理できるようにするには、[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 名前空間の `IpAddressType` オプションを*デュアルスタック*に設定します。

**注記**  
Elastic Beanstalk は、Application Load Balancer と Network Load Balancer に対してのみデュアルスタックプロトコをサポートします。Classic Load Balancer または単一インスタンス環境を使用する環境では、デュアルスタックはサポートされません。

## Amazon VPC の前提条件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs"></a>

Elastic Beanstalk 環境でロードバランサーを設定する前に、まず Amazon VPC でいくつかの設定ステップを完了する必要があります。

1. IPv6 CIDR ブロックを環境の VPC と関連付けます。

1. IPv6 CIDR ブロックをすべての VPC のサブネットに関連付けます。

1. (オプション) 環境がネットワークトラフィックを VPC 外のコンポーネントと交換する場合、VPC が通信できるネットワークを指定するルートテーブルがあります。この場合、VPC ルートテーブルを更新して IPv6 トラフィックを有効にする必要があります。

Amazon VPC コンソールまたは AWS CLI コマンドを使用して、これらの前提条件の設定を完了できます。以下のトピックでは、ユーザーをガイドして、詳細については、*Amazon VPC ユーザーガイド*と *AWS CLI コマンドリファレンス*に導きます。

**注記**  
VPC 設定が完了したら、ロードバランサーのデュアルスタックを設定する前に、変更が反映されるまで数分待ちます。デュアルスタック設定中に VPC またはサブネット設定エラーが発生した場合は、VPC 設定が伝播されるまで数分待ってから、デュアルスタック設定を再試行します。

### コンソールを使用して VPC の前提条件を完了する
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.console"></a>

「*Amazon VPC ユーザーガイド*」は、これらの前提条件のタスクを完了するための詳細な手順を提供します。

1. 詳細については、「*Amazon VPC ユーザーガイド*」の「[ステップ 1: IPv6 CIDR ブロックを VPC とサブネットに関連付ける](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-cidr)」を参照してください。

   このステップでは、次の 2 つの手順を完了する必要があります。
   + IPv6 CIDR ブロックと VPC の関連付け
   + IPv6 CIDR ブロックを VPC サブネットと関連付けます。

1. (オプション) 環境がネットワークトラフィックを VPC 外のコンポーネントと交換する場合、VPC が通信できるネットワークを指定するルートテーブルがあります。この場合、VPC ルートテーブルを更新して IPv6 トラフィックを有効にする必要があります。この設定を完了するには、「*Amazon VPC ユーザーガイド*」の「[ステップ 2: ルートテーブルを更新する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-routes)」を参照してください。

### を使用して VPC の前提条件を満たす AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.cli"></a>

を使用して AWS CLI 、前提条件の設定を完了して検証できます。

1. IPv6 CIDR ブロックを環境の VPC と関連付けます。

   1. [associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html) コマンドを使用して、CIDR ブロックを VPC に関連付けます。

   1. [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) コマンドを使用して、VPC 設定を検証します。

   

     
**Example コマンド**  

   ```
   # Associate an Amazon-provided IPv6 CIDR block with your VPC
   aws ec2 associate-vpc-cidr-block \
       --vpc-id vpc-12345678 \
       --region us-east-1  \
       --amazon-provided-ipv6-cidr-block
   
   # Verify the IPv6 CIDR block association
   aws ec2 describe-vpcs \
       --vpc-ids vpc-12345678 \
       --region us-east-1  \
       --query 'Vpcs[0].Ipv6CidrBlockAssociationSet'
   ```

1. IPv6 CIDR ブロックをすべての VPC のサブネットに関連付けます。

   1. [associate-subnet-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-subnet-cidr-block.html) コマンドを使用して、CIDR ブロックをサブネットに関連付けます。

   1. [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) コマンドを使用して、サブネット設定を検証します。

   

     
**Example コマンド**  

   ```
   # List all subnets in your VPC
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,AvailabilityZone:AvailabilityZone}'
   
   # Associate IPv6 CIDR block with each subnet
   aws ec2 associate-subnet-cidr-block \
       --subnet-id subnet-12345678 \
       --region us-east-1  \
       --ipv6-cidr-block 2001:db8::/64
   
   # Verify IPv6 CIDR block association for all subnets
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}'
   ```

1.  (オプション) 環境がネットワークトラフィックを VPC 外のコンポーネントと交換する場合、VPC が通信できるネットワークを指定するルートテーブルがあります。この場合、VPC ルートテーブルを更新して IPv6 トラフィックを有効にする必要があります。

   1. [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) コマンドを使用して、VPC 内のルートテーブルにルートを追加します。

   1. [describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html) コマンドを使用して、ルートテーブルを検証します。

   

     
**Example コマンド**  

   ```
   # Add IPv6 route to Internet Gateway for public subnets
   aws ec2 create-route \
       --route-table-id rtb-12345678 \
       --destination-ipv6-cidr-block ::/0 \
       --gateway-id igw-12345678  \
       --region us-east-1
   
   # Add IPv6 route to NAT Gateway for private subnets (if applicable)
   aws ec2 create-route \
       --route-table-id rtb-87654321 \
       --destination-ipv6-cidr-block ::/0 \
       --nat-gateway-id nat-12345678 \
       --region us-east-1
   
   # Verify routes
   aws ec2 describe-route-tables \
       --route-table-ids rtb-12345678 \
       --region us-east-1 \
       --query 'RouteTables[0].Routes'
   ```

## Elastic Beanstalk ロードバランサーのデュアルスタックを設定する
<a name="environments-cfg-elbv2-ipv6-dualstack.enable"></a>

環境に VPC の前提条件設定を行ったら、デュアルスタックオプションを使用してロードバランサーを設定し、IPv4 プロトコルと IPv6 プロトコルの両方を提供できます。Elastic Beanstalk コンソール、 AWS CLI、 の設定ファイル`.ebextensions`、および AWS SDK を使用して、デュアルスタックトラフィックを処理するようにロードバランサーを設定できます。

### コンソールを使用する
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.console"></a>

Elastic Beanstalk コンソールを使用して、環境のロードバランサーのデュアルスタックを設定できます。

**注記**  
この設定は、いくつかのポイントでのデータ伝播のタイミングによって異なります。ロードバランサーを設定し、変更をテストするときは、次のタイミング要件を考慮してください。  
*VPC の設定時間。*[Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs) で説明されている VPC 設定が完了したら、以下の手順に従う前に、変更が反映されるまで数分待ちます。デュアルスタックのセットアップ中に VPC またはサブネットの設定エラーが発生した場合は、数分待ってから設定ステップを再試行します。  
*DNS 伝搬時間。*`IpAddressType` オプションを*デュアルスタック*に設定したら、テストする前に変更が反映されるまで数分待ちます。Route 53 DNS の伝播が完了するまでに 1～2 分かかる場合があります。この間、IPv6 プロトコルを使用してリクエストを開始する場合、クライアントからアプリケーションへの通信をテストする際に問題が発生する可能性があります。

**新しい環境の作成: デュアルスタックのサポート用にロードバランサーを設定するには**

1. Elastic Beanstalk コンソールを起動し、新しい環境を作成する手順を開始します。**[サービスアクセスを設定する]** ページで **[サービスロール]** と **[EC2 インスタンスプロファイル]** の必須フィールドを設定したら、この手順のステップに進み、ロードバランサーをデュアルスタック設定に設定します。開始方法の詳細については、「[Elastic Beanstalk 環境の作成](using-features.environments.md)」を参照してください。

1. **[サービスアクセスを設定する]** から **[次へ]** を選択します。

1. **[ネットワーク、データベース、タグをセットアップする]** ページが表示されます。

   前のセクションで説明された [Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs) を完了した場合、必要な VPC とサブネットを既にセットアップしています。この場合、このステップとそのサブステップをスキップして、VPC を選択します。

   1. VPC とサブネットを設定するには、**[VPC を作成する]** を選択して VPC コンソールに移動します。「[コンソールを使用して VPC の前提条件を完了する](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console)」のステップを実行してください。

   1.  VPC 更新が伝播されるまで数分待ってから、Elastic Beanstalk コンソールに戻り、更新を選択して次のステップに進みます。

       残りのステップで VPC またはサブネット設定エラーが発生した場合は、VPC 設定が伝播されるまで数分待ってから、ステップを再試行してください。

1. **ネットワーク、データベース、タグの設定**ページで、**VPC** ドロップダウンから IPv6 CIDR ブロックが関連付けられている値を選択します。

   VPC を選択すると、**[インスタンスサブネット]** に VPC サブネットが入力されます。

1. 1 つ以上の **[インスタンスサブネット]** を選択し、**[次へ]** を選択します。

1. **インスタンストラフィックとスケーリングの設定**ページの表示。

   **ロードバランサーのネットワーク設定**で、**デュアルスタック (IPv4 と IPv6)** に対して **[有効にする]** を選択します。

1. **ロードバランサータイプ**を選択します。**Application Load Balancer** と **Network Load Balancer** は、いずれも*デュアルスタック*をサポートします。

1. 現在のコンソールページで、他のロードバランサーオプションを引き続き設定できます。ロードバランサーのオプションと設定の詳細については、この章の他のトピックを参照してください。

1. 環境の設定と作成を完了する手順に進みます。詳細については、「[Elastic Beanstalk 環境の作成](using-features.environments.md)」を参照してください。



**既存の環境: デュアルスタックのサポート用にロードバランサーを設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. **[ネットワークとデータベース]** 設定カテゴリで、**[編集]** を選択します。

1. 前のセクションで説明された [Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs) を完了した場合、必要な VPC とサブネットを既にセットアップしています。この場合、このステップとそのサブステップをスキップして、VPC を選択します。

   1. VPC とサブネットを設定するには、**[VPC を作成する]** を選択して VPC コンソールに移動します。「[コンソールを使用して VPC の前提条件を完了する](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console)」のステップを実行してください。

   1.  VPC 更新が伝播されるまで数分待ってから、Elastic Beanstalk コンソールに戻り、更新を選択して次のステップに進みます。

       残りのステップで VPC またはサブネット設定エラーが発生した場合は、VPC 設定が伝播されるまで数分待ってから、ステップを再試行してください。

1. **[ネットワークとデータベース]** ページで、**VPC** ドロップダウンから IPv6 CIDR ブロックが関連付けられている値を選択します。

   VPC を選択すると、**[インスタンスサブネット]** に VPC サブネットが入力されます。

1. 1 つ以上の **[インスタンスサブネット]** を選択します。

1. ページの最下部で **[適用]** を選択し変更を保存します。

1. **[Instance traffic and scaling]** (インスタンスのトラフィックおよびスケーリング) 設定カテゴリで、**[Edit]** (編集) を選択します。

1. **ロードバランサーのネットワーク設定**で、**デュアルスタック (IPv4 と IPv6)** に対して**有効にする**を選択します。

1. ページの最下部で **[適用]** を選択し変更を保存します。

### の使用 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.cli"></a>

 AWS コマンドラインインターフェイス (AWS CLI) を使用して、IPv6 と IPv4 の両方のネットワークトラフィックを処理するように環境のロードバランサーを設定できます。このセクションでは、[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 名前空間がある [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) および [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) コマンドの例を提供します。

**注記**  
この設定は、いくつかのポイントでのデータ伝播のタイミングによって異なります。ロードバランサーを設定し、変更をテストするときは、次のタイミング要件を考慮してください。  
*VPC の設定時間。*[Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs) で説明されている VPC 設定が完了したら、これらのコマンドを実行してロードバランサーをデュアルスタックに設定する前に、変更が反映されるまで数分待ちます。デュアルスタックのセットアップ中に VPC またはサブネットの設定エラーが発生した場合は、数分待ってからコマンドを再試行します。  
*DNS 伝搬時間。*`IpAddressType` オプションを*デュアルスタック*に設定したら、テストする前に変更が反映されるまで数分待ちます。Route 53 DNS の伝播が完了するまでに 1～2 分かかる場合があります。この間、IPv6 プロトコルを使用してリクエストを開始する場合、クライアントからアプリケーションへの通信をテストする際に問題が発生する可能性があります。

 

**Example デュアルスタック設定 (インラインの名前空間オプション) を使用した create-environment のもの**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=dualstack
```



別の方法として、`options.json`ファイルを使用して、インラインで名前空間オプションを含めるのではなく、名前空間オプションを指定します。次のコマンド例は、[update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) コマンドを示しています。

**Example デュアルスタック設定 (`options.json` ファイルの名前空間オプション) を使用した update-environment のもの**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \ file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:elbv2:loadbalancer",
    "OptionName": "IpAddressType",
    "Value": "dualstack"
  }
]
```



次の例では、既存の環境を更新して、`IpAddressType` オプションを *IPv4* に設定します。

**注記**  
この `update-environment` コマンド例は、環境設定をデュアルスタックから IPv4 にロールバックする必要がある場合に役立ちます。

**Example IpAddressType を IPv4 に設定するための update-environment のもの**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=ipv4
```

### .ebextensions 設定ファイルを使用する
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.ebx"></a>

Elastic Beanstalk [設定ファイル](ebextensions.md)を使用して、環境のロードバランサーが IPv6 と IPv4 の両方のネットワークトラフィックを処理できるようにします。[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 名前空間の `IpAddressType` オプションを*デュアルスタック*に設定します。

**注記**  
この設定は、いくつかのポイントでのデータ伝播のタイミングによって異なります。ロードバランサーを設定し、変更をテストするときは、次のタイミング要件を考慮してください。  
*VPC の設定時間。*[Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs) で説明されている VPC 設定が完了したら、`.ebextensions` 設定を適用する前に VPC の変更が反映されるまで数分待ってください。この設定中に VPC またはサブネットの設定エラーが発生した場合は、数分待ってから再試行します。  
*DNS 伝搬時間。*`IpAddressType` オプションを*デュアルスタック*に設定したら、テストする前に変更が反映されるまで数分待ちます。Route 53 DNS の伝播が完了するまでに 1～2 分かかる場合があります。この間、IPv6 プロトコルを使用してリクエストを開始する場合、クライアントからアプリケーションへの通信をテストする際に問題が発生する可能性があります。

**Example ロードバランサーデュアルスタック設定用の .ebextensions/options.config ([短縮構文](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  aws:elbv2:loadbalancer:
    IpAddressType: dualstack
```

**Example ロードバランサーデュアルスタック設定用の .ebextensions/options.config ([標準構文](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  - namespace: aws:elbv2:loadbalancer
    option_name: IpAddressType
    value: dualstack
```

### AWS SDK の使用
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.sdk"></a>

[AWS SDK](https://docs.aws.amazon.com//code-library/) を使用してデュアルスタックを設定できます。前のセクションで説明した `update-environment`および `create-environment` AWS CLI コマンドと同様に、[CreateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_CreateEnvironment.html) および [UpdateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_UpdateEnvironment.html) API アクションを使用できます。`OptionSettings` リクエストパラメータを使用して、[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 名前空間のオプションを指定します。

**注記**  
この設定は、いくつかのポイントでのデータ伝播のタイミングによって異なります。ロードバランサーを設定し、変更をテストするときは、次のタイミング要件を考慮してください。  
*VPC の設定時間。*[Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs) で説明されている VPC 設定が完了したら、プログラムを実行してロードバランサーをデュアルスタック用に設定する前に、変更が反映されるまで数分待ちます。デュアルスタック設定中に VPC またはサブネット設定エラーが発生した場合は、数分待ってから、デュアルスタック設定のプログラムの実行を再度試行してください。  
*DNS 伝搬時間。*`IpAddressType` オプションを*デュアルスタック*に設定したら、テストする前に変更が反映されるまで数分待ちます。Route 53 DNS の伝播が完了するまでに 1～2 分かかる場合があります。この間、IPv6 プロトコルを使用してリクエストを開始する場合、クライアントからアプリケーションへの通信をテストする際に問題が発生する可能性があります。

## トラブルシューティング
<a name="environments-cfg-elbv2-ipv6-dualstack.troubleshooting"></a>

**AI アシストによるトラブルシューティングのために Amazon Q Developer CLI を試す**  
 Amazon Q Developer CLI は、環境の問題を迅速にトラブルシューティングするのに役立ちます。Q CLI は、環境ステータスのチェック、イベントの確認、ログの分析、および明確化のための質問を行うことでソリューションを提供します。詳細と詳細なチュートリアルについては、 AWS ブログの[「Amazon Q Developer CLI を使用した Elastic Beanstalk 環境のトラブルシューティング](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)」を参照してください。

このセクションでは、ロードバランサーのデュアルスタック設定に関する問題をトラブルシューティングするためのガイダンスを提供します。

**イベント:** *VPC *vpc\$1id* には IPv6 CIDR ブロックが設定されていません。デュアルスタックロードバランサーには IPv6 CIDR ブロックが必要です。デュアルスタックモードを使用する前に、IPv6 CIDR ブロックを VPC に関連付けてください。*

VPC とすべてのサブネットには IPv6 CIDR ブロックが関連付けられている必要があります。これは、デュアルスタックのサポート用にロードバランサーを設定する前に完了する必要がある VPC 前提条件の 1 つです。このタスクを完了するための詳細については、このトピックで前述した「[Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)」を参照してください。

 **イベント:** *VPC *vpc\$1id* の 1 つ以上のサブネットに IPv6 CIDR ブロックが設定されていません。デュアルスタックロードバランサーとともに使用されるサブネットには、IPv6 CIDR ブロックが必要です。デュアルスタックモードを使用する前に、IPv6 CIDR ブロックをすべての必要なサブネットに関連付けてください。*

VPC のすべてのサブネットには、IPv6 CIDR ブロックが関連付けられている必要があります。これは、デュアルスタックのサポート用にロードバランサーを設定する前に完了する必要がある VPC 前提条件の 1 つです。このタスクを完了するための詳細については、このトピックで前述した「[Amazon VPC の前提条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)」を参照してください。

 **エラー:** *`IpAddressType` オプションは、Application Load Balancer または Network Load Balancer を使用して設定された Elastic Beanstalk 環境にのみ適用されます。*

このメッセージは、Elastic Beanstalk 環境が単一のインスタンス環境であるか、Classic Load Balancer を使用している可能性があることを示しています。Application Load Balancer または Network Load Balancer を使用して設定された環境のみが `IpAddressType` を設定できます。

# アクセスログの設定
<a name="environments-cfg-loadbalancer-accesslogs"></a>

[設定ファイル](ebextensions.md)を使用して、Amazon S3 バケットにアクセスログをアップロードするよう環境のロードバランサーを設定できます。手順については、GitHub の次の例の設定ファイルを参照してください。
+ `[loadbalancer-accesslogs-existingbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config)` - 既存の Amazon S3 バケットにアクセスログをアップロードするようロードバランサーを設定します。
+ `[loadbalancer-accesslogs-newbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config)` - 新しいバケットにアクセスログをアップロードするようロードバランサーを設定します。