

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

# Amazon VPC で Elastic Beanstalk を使用する
<a name="vpc"></a>

このトピックでは、Elastic Beanstalk で VPC エンドポイントを使用する利点と、実装できるさまざまなタイプの設定について説明します。

[Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) を使用して、Elastic Beanstalk アプリケーションおよび関連 AWS リソース用の安全なネットワークを作成できます。環境作成時に、アプリケーションインスタンスとロードバランサーに使用する VPC、サブネットおよびセキュリティグループを選択します。以下の要件を満たしている限り、どの VPC 設定でも使用できます。

**VPC の要件**
+ **インターネットアクセス** – インスタンスは、次のいずれかのメソッドを介したインターネットアクセスを持つことができます。
  + **パブリックサブネット** – インスタンスにはパブリック IP アドレスがあり、インターネットゲートウェイを使用してインターネットにアクセスします。
  + **プライベートサブネット** – インスタンスは NAT デバイスを使用してインターネットにアクセスします。
**注記**  
`elasticbeanstalk` と `elasticbeanstalk-health` のサービスの両方に接続するように VPC の [VPC エンドポイント](vpc-vpce.md) を設定する場合、インターネットアクセスはオプションであり、アプリケーションで特に必要な場合にのみ要求されます。VPC エンドポイントがない場合、VPC でインターネットにアクセスできる必要があります。  
Elastic Beanstalk がセットアップするデフォルトの VPC では、インターネットアクセスが提供されます。

  Elastic Beanstalk は、ウェブプロキシの設定に `HTTPS_PROXY` のようなプロキシ設定をサポートしていません。
+ **NTP** – Elastic Beanstalk 環境内のインスタンスでは、Network Time Protocol (NTP) を使用してシステムクロックを同期させます。インスタンスが UDP ポート 123 上で通信できない場合は、クロックが同期しなくなり、Elastic Beanstalk ヘルスレポートに問題が発生することがあります。これらの問題を回避するには、VPC のセキュリティグループとネットワーク ACL で、ポート 123 上のインバウンドとアウトバウンドの UDP トラフィックを許可していることを確認してください。

elastic[elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/) リポジトリには、Elastic Beanstalk 環境で使用する VPC を作成するために使用できる CloudFormation テンプレートが用意されています。

**CloudFormation テンプレートを使用してリソースを作成するには**

1. サンプルリポジトリをクローンするか、または [README](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/README.md) にあるリンクを使用してテンプレートをダウンロードします。

1. [CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/home) を開きます。

1. **[スタックの作成]** を選択してください。

1. **テンプレートを Amazon S3 にアップロード** を選択します。

1. **ファイルのアップロード** を選択し、ローカルマシンからテンプレートファイルをアップロードします。

1. **次へ** を選択し、手順どおりにテンプレート内のリソースでスタックを作成します。

スタックの作成が完了したら、[**出力**] タブを確認して VPC ID およびサブネット ID を探します。これらを使用して、新規の環境ウィザード[ネットワーク設定カテゴリ](environments-create-wizard.md#environments-create-wizard-network)で VPC を設定します。

**Topics**
+ [パブリック VPC](#services-vpc-public)
+ [パブリック/プライベート VPC](#services-vpc-privatepublic)
+ [プライベート VPC](#services-vpc-private)
+ [例: 拠点ホストを持つ VPC で Elastic Beanstalk アプリケーションを起動する](vpc-bastion-host.md)
+ [例: Amazon RDS を使用して VPC で Elastic Beanstalk を起動する](vpc-rds.md)
+ [VPC エンドポイントでの Elastic Beanstalk の使用](vpc-vpce.md)
+ [エンドポイントポリシーを使用して VPC エンドポイントでアクセスを制御する](vpc-vpce.policy.md)

## パブリック VPC
<a name="services-vpc-public"></a>

**CloudFormation テンプレート** – [vpc-public.yaml](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/vpc-public.yaml)

**設定 (ロードバランサー)**
+ **ロードバランサーの可視性** – 公開
+ **ロードバランサーのサブネット** – どちらもパブリックサブネット
+ **インスタンスのパブリック IP** – 有効
+ **インスタンスのサブネット** – どちらもパブリックサブネット
+ **インスタンスのセキュリティグループ** – デフォルトのセキュリティグループを追加

**設定 (単一インスタンス)**
+ **インスタンスのサブネット** – どちらかのパブリックサブネット
+ **インスタンスのセキュリティグループ** – デフォルトのセキュリティグループを追加

基本的な *パブリックのみ* の VPC レイアウトには、1 つ以上のパブリックサブネット、1 つのインターネットゲートウェイ、VPC 内のリソース間でのトラフィックを許可するデフォルトの 1 つのセキュリティグループが含まれています。VPC で環境を作成すると、Elastic Beanstalk は環境タイプによって異なる追加のリソースを作成します。

**VPC リソース**
+ **単一インスタンス** – Elastic Beanstalk は、インターネットからポート 80 へのトラフィックを許可するセキュリティグループをアプリケーションインスタンスに作成し、Elastic IP をそのインスタンスに割り当てて、パブリック IP アドレスを付与します。環境のドメイン名はインスタンスのパブリック IP アドレスを解決します。
+ **負荷分散** – Elastic Beanstalk は、インターネットからポート 80 へのトラフィックを許可するセキュリティグループ、およびロードバランサーのセキュリティグループからのトラフィックを許可するセキュリティグループをアプリケーションインスタンスに作成します。環境のドメイン名は、ロードバランサーのパブリックドメイン名を解決します。

これは、デフォルト VPC を使用する場合に Elastic Beanstalk がネットワークを管理する方法と類似しています。パブリックサブネットのセキュリティは、Elastic Beanstalk が作成するロードバランサーとインスタンスのセキュリティグループに依存します。これには NAT ゲートウェイが必要ではないため、最もコストが低い設定です。

## パブリック/プライベート VPC
<a name="services-vpc-privatepublic"></a>

**CloudFormation テンプレート** – [vpc-privatepublic.yaml](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/vpc-privatepublic.yaml)

**設定 (ロードバランサー)**
+ **ロードバランサーの可視性** – 公開
+ **ロードバランサーのサブネット** – どちらもパブリックサブネット
+ **インスタンスのパブリック IP** – 無効
+ **インスタンスのサブネット** – どちらもプライベートサブネット
+ **インスタンスのセキュリティグループ** – デフォルトのセキュリティグループを追加

セキュリティを高めるには、追加のプライベートサブネットを VPC に追加して、*パブリック/プライベート*レイアウトを作成します。このレイアウトではパブリックサブネットのロードバランサーおよび NAT ゲートウェイが必要であり、プライベートサブネットでアプリケーションインスタンス、データベースや他のリソースを実行することができるようになります。プライベートサブネットのインスタンスは、ロードバランサーおよび NAT ゲートウェイを介したインターネットのみと通信できます。

## プライベート VPC
<a name="services-vpc-private"></a>

**CloudFormation テンプレート** – [vpc-private.yaml](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/vpc-private.yaml)

**設定 (ロードバランサー)**
+ **ロードバランサーの可視性** – プライベート
+ **ロードバランサーサブネット** – 両方のプライベートサブネット
+ **インスタンスのパブリック IP** – 無効
+ **インスタンスのサブネット** – どちらもプライベートサブネット
+ **インスタンスのセキュリティグループ** – デフォルトのセキュリティグループを追加

インターネットからのアクセスを希望しない内部アプリケーションについては、すべてをプライベートサブネットで実行し、ロードバランサーを内部用に設定します ([**ロードバランサーの可視性**] を [**内部**] に変更します)。このテンプレートは、パブリックサブネットとインターネットゲートウェイを持たない VPC を作成します。このレイアウトは、同じ VPC あるいはアタッチされた VPN からのみアクセスできる必要があるアプリケーションに使用します。

### プライベート VPC で Elastic Beanstalk 環境を実行する
<a name="services-vpc-private-beanstalk"></a>

プライベート VPC で Elastic Beanstalk 環境を作成する場合、その環境ではインターネットにアクセスできません。アプリケーションは、Elastic Beanstalk サービスまたはその他のサービスへのアクセスを必要とする場合があります。環境で拡張ヘルスレポートを使用する場合があります。この場合、環境インスタンスによって拡張ヘルスサービスにヘルス情報が送信されます。また、環境インスタンスの Elastic Beanstalk コードは、トラフィックを他の AWS サービスに送信し、その他のトラフィックをAWS エンドポイント以外に送信します (アプリケーションの依存関係パッケージをダウンロードするなど）。ここでは、環境が正しく動作するようにするため、この場合に実行する必要がある手順をいくつか示します。
+ *Elastic Beanstalk の VPC エンドポイントを設定する* – Elastic Beanstalk および拡張ヘルスサービスは、VPC エンドポイントをサポートします。これにより、これらのサービスへのトラフィックは Amazon ネットワーク内に留まり、インターネットアクセスが不要になります。詳細については、「[VPC エンドポイントでの Elastic Beanstalk の使用](vpc-vpce.md)」を参照してください。
+ *追加サービスの VPC エンドポイントを設定する* – Elastic Beanstalk インスタンスは AWS 、ユーザーに代わって Amazon Simple Storage Service (Amazon S3)、Amazon Simple Queue Service (Amazon SQS) AWS CloudFormation、Amazon CloudWatch Logs などの他のサービスにトラフィックを送信します。これらのサービスの VPC エンドポイントも設定する必要があります。サービスごとのリンクなど、VPC エンドポイントの詳細については、「Amazon VPC ユーザーガイド」の「[VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)」を参照してください。
**注記**  
Elastic Beanstalk を含む一部の AWS サービスは、限られた数の AWS リージョンで VPC エンドポイントをサポートしています。プライベート VPC ソリューションを設計するときは、ここで説明する Elastic Beanstalk およびその他の依存サービスが、選択した AWS リージョンの VPC エンドポイントをサポートしていることを確認します。
+ *プライベート Docker イメージを提供する* – [Docker](create_deploy_docker.md) 環境では、環境のインスタンスのコードが、環境の作成中にインターネットから設定済みの Docker イメージを取得しようとして失敗することがあります。この問題を回避するには、環境に[カスタム Docker イメージをビルド](single-container-docker-configuration.md#single-container-docker-configuration.dockerfile)するか、[Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/) に保存された Docker イメージを使用して、[Amazon ECR サービスの VPC エンドポイントを設定します](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)。
+ *DNS 名を有効にする* – 環境インスタンスの Elastic Beanstalk コードは、パブリックエンドポイントを使用してすべての AWS サービスにトラフィックを送信します。このトラフィックを確実に通過させるには、すべてのインターフェイス VPC エンドポイントを設定する際に、[**Enable DNS name (DNS 名を有効にする)**] オプションを選択します。これにより、パブリックサービスエンドポイントをインターフェイス VPC エンドポイントにマップする DNS エントリが VPC に追加されます。
**重要**  
VPC がプライベートではなく、パブリックインターネットにアクセスできる場合、および VPC エンドポイントで [**Enable DNS name (DNS 名を有効にする)**] が無効になっている場合は、それぞれのサービスへのトラフィックはパブリックインターネットを経由します。これは意図した動作ではない場合があります。プライベート VPC でこの問題を検出するのは簡単です。トラフィックが通過するのを防ぎ、エラーを受信できるためです。ただし、パブリック向け VPC では何も表示されません。
+ *アプリケーションの依存関係を含める* – アプリケーションに言語ランタイムパッケージなどの依存関係がある場合、環境の作成中にインターネットからダウンロードおよびインストールしようとして失敗する可能性があります。このエラーを回避するには、アプリケーションのソースバンドルにすべての依存関係パッケージを含めます。
+ *現在のプラットフォームバージョンを使用する* – ご使用の環境で、2020 年 2 月 24 日以降にリリースされたプラットフォームバージョンが使用されていることを確認してください。具体的には、[Linux 更新プログラム 2020-02-28](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2020-02-28-linux.html)、[Windows 更新プログラム 2020-02-24](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2020-02-24-windows.html) の 2 つの更新プログラムのいずれか後にリリースされたプラットフォームのバージョンを使用します。
**注記**  
プラットフォームのバージョンを更新する必要がある理由は、古いバージョンに [**Enable DNS name (DNS 名を有効にする)**] オプションで作成された DNS エントリが Amazon SQS で正しく機能しないという問題があったためです。