AWS Elastic Beanstalk
開発者ガイド

Amazon Virtual Private Cloud で Elastic Beanstalk を使用する

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

VPC の要件

  • インターネットアクセス – インスタンスには次のいずれかのメソッドを介したインターネットアクセスがあることが必要です。

    • パブリックサブネット – インスタンスにはパブリック IP アドレスがあり、インターネットゲートウェイを使用してインターネットにアクセスしています。

    • プライベートサブネット– インスタンスは NAT デバイスを使用してインターネットにアクセスしています。

    Elastic Beanstalk は、ウェブプロキシの設定に HTTPS_PROXY のようなプロキシ設定をサポートしていません。

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

elastic-beanstalk-samples リポジトリは、Elastic Beanstalk 環境で使用するための VPC を作成するために使用できる AWS CloudFormation テンプレートを提供します。

AWS CloudFormation テンプレートでリソースを作成するには

  1. サンプルリポジトリをクローンするか、または README にあるリンクを使用してテンプレートをダウンロードします。

  2. AWS CloudFormation コンソールを開きます。

  3. [Create stack] を選択します。

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

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

  6. [Next (次)] を選択し、手順どおりにテンプレート内のリソースでスタックを作成します。

スタックの作成が完了したら、[出力] タブを確認して VPC ID および サブネット ID を探します。これらを使用して、新規の環境ウィザードネットワークカードで VPC を設定します。

パブリックサブネットの VPC

AWS CloudFormation テンプレート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

AWS CloudFormation テンプレートvpc-privatepublic.yaml

設定 (ロードバランサー)

  • ロードバランサーの可視性 – パブリック

  • ロードバランサーのサブネット – どちらもパブリックサブネット

  • インスタンスのパブリック IP – 無効

  • インスタンスのサブネット – どちらもプライベートサブネット

  • インスタンスのセキュリティグループ – デフォルトのセキュリティグループを追加

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

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