メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

例: VPC 内のパブリックリソースとプライベートリソースで構成される負荷分散型オートスケーリング環境の起動

パブリック/プライベートサブネットを持つ VPC 内の負荷分散型オートスケーリング環境に Elastic Beanstalk アプリケーションをデプロイできます。Elastic Beanstalk が Amazon EC2 インスタンスにプライベート IP アドレスを割り当てるようにする場合は、この設定を使用します。この設定では、プライベートサブネットの Amazon EC2 インスタンスは、パブリックサブネット内のロードバランサーとネットワークアドレス変換(NAT)ゲートウェイを必要とします。ロードバランサーは、インターネットからのインバウンドトラフィックを Amazon EC2 インスタンスにルーティングします。Amazon EC2 インスタンスからのアウトバウンドトラフィックをインターネットにルーティングするには、NAT ゲートウェイを作成する必要があります。インフラストラクチャは次の図と似ています。

 Elastic Beanstalk および VPC トポロジ

注記

この設定では、インスタンスがプライベートサブネットに配置されているため、インスタンスに接続できません。インスタンスに接続する必要があり、インスタンスがプライベートサブネットにある場合は、「Example: 拠点ホストを使用して VPC で Elastic Beanstalk アプリケーションを起動する」で説明されているように、拠点ホストを実装する必要があります。

NAT ゲートウェイを使用して VPC 内で Elastic Beanstalk アプリケーションをデプロイするには、次の操作を行う必要があります。

パブリックサブネットとプライベートサブネットでの VPC の作成

Amazon VPC コンソールを使用して VPC を作成します。

VPC を作成するには

  1. [Amazon VPC console] にサインインします。

  2. ナビゲーションペインで、[VPC ダッシュボード] を選択します。次に、[VPC ウィザードの起動] を選択します。

  3. [VPC with Public and Private Subnets]、[Select] の順に選択します。

    ウィザードでオプション 2 を選択
  4. Elastic Load Balancing ロードバランサーと Amazon EC2 インスタンスが通信できるようにするには、これらが同じアベイラビリティーゾーンにある必要があります。各 [Availability Zone] リストから同じアベイラビリティーゾーンを選択します。

     オプション 2 の確認ページ
  5. NAT ゲートウェイの Elastic IP アドレスを選択します。

  6. [VPC の作成] を選択します。

    ウィザードが、VPC、サブネット、インターネットゲートウェイの作成を開始します。また、メインルートテーブルを更新して、カスタムルートテーブルを作成します。最後に、ウィザードはパブリックサブネットで NAT ゲートウェイを作成します。

    注記

    NAT ゲートウェイの代わりにパブリックサブネットで NATインスタンスを起動することを選択できます。 詳細については、『Amazon VPC ユーザーガイド』の「シナリオ 2: パブリックサブネットとプライベートサブネットを持つ VPC (NAT) 」を参照してください。

  7. VPC が正しく作成されると、VPC ID が発行されます。この値は、次のステップで必要になります。VPC ID を表示するには、[Amazon VPC console] の左ペインで [Your VPCs] を選択します。

     VPC ID

インスタンスのセキュリティグループを作成する

オプションで、Elastic Beanstalk インスタンスのセキュリティグループを作成できます。セキュリティグループに関連するインスタンスとの送受信トラフィックを制御するルールを、各セキュリティグループに追加できます。セキュリティグループを作成するには、以下の手順を実行します。後でセキュリティグループを識別できるように、このセキュリティグループに Instance Group のような有効な名前を付ける必要があります。セキュリティグループの詳細については、『Amazon VPC ユーザーガイド』の 「VPC のセキュリティグループ」を参照してください。

新しいセキュリティグループを作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

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

  4. [Create Security Group] ダイアログボックスで、次の内容を入力して [Yes, Create] を選択します。

    Name tag (オプション)

    セキュリティグループの名前タグを入力します。

    グループ名

    セキュリティグループの名前を入力します。

    説明

    セキュリティグループの説明を入力します。

    VPC

    VPC を選択します。

    セキュリティグループが作成され、[セキュリティグループ] ページに表示されます。ID (sg-xxxxxxxx など) が付いている点に注目してください。ページの右上にある [Show/Hide] をクリックして、[Group ID] の列をオンにする必要がある場合があります。

Elastic Beanstalk へのデプロイ

VPC を設定したら、VPC 内部に環境を作成して、アプリケーションを Elastic Beanstalk にデプロイできます。インストールには、Elastic Beanstalk コンソールを使用するか、AWS ツールキット、AWS CLI、EB CLI、または Elastic Beanstalk API を使用できます。Elastic Beanstalk コンソールを使用する場合は、.war ファイルまたは .zip ファイルをアップロードして、ウィザード内で VPC 設定を選択するだけで済みます。その後、Elastic Beanstalk は VPC 内に環境を作成し、アプリケーションをデプロイします。または、AWS ツールキット、AWS CLI EB CLI、Elastic Beanstalk API を使用してアプリケーションをデプロイできます。その場合は、設定ファイルで VPC オプション設定を定義して、このファイルをソースバンドルと共にデプロイする必要があります。このトピックでは、両方の方法の手順を説明します。

Elastic Beanstalk コンソールでデプロイする

Elastic Beanstalk コンソールに、VPC 内部に新しい環境を作成する手順が表示されます。.war ファイル (Java アプリケーション)、または .zip ファイル (その他すべてのアプリケーション) を提供する必要があります。Elastic Beanstalk 環境ウィザードの [VPC 設定] ページで、次の選択を行う必要があります。

VPC

VPC を選択します。

VPC セキュリティグループ

上の手順で作成したインスタンスセキュリティグループを選択します。

ELB の可視性

ロードバランサーを公開する場合は External を選択し、ロードバランサーを VPC 内でのみ使用できるようにする場合は Internal を選択します。

ロードバランサーと EC2 インスタンスのサブネットを選択します。必ず、ロードバランサーのパブリックサブネットと Amazon EC2 インスタンスのプライベートサブネットを選択します。デフォルトでは、VPC 作成ウィザードにより 10.0.0.0/24 にパブリックサブネットが、10.0.1.0/24 にプライベートサブネットが作成されます。

サブネット ID を表示するには、[Amazon VPC console] で [Subnets] を選択します。

 VPC のサブネット ID

AWS ツールキット、AWS CLI、EB CLI、または Elastic Beanstalk API でデプロイする

AWS ツールキット、EB CLI、AWS CLI、または API を使用してアプリケーションを Elastic Beanstalk にデプロイする場合は、ファイルで VPC オプション設定を指定して、ソースバンドルと一緒にデプロイできます。詳細については、「設定ファイル (.ebextensions) による高度な環境のカスタマイズ」を参照してください。

オプション設定で設定ファイルを作成する場合は、次の設定オプションを指定する必要があります。

aws:autoscaling:launchconfiguration 名前空間:

EC2KeyName

インスタンスに適用する Amazon EC2 キーペアの名前。

InstanceType

環境でアプリケーションを実行するために使用されるインスタンスタイプ。

使用できるインスタンスタイプは、プラットフォーム、ソリューションスタック(設定)、リージョンによって異なります。選択したソリューションスタックで使用できるインスタンスタイプを取得するには、DescribeConfigurationOptions アクション(API の場合)、describe-configuration-options コマンド(AWS CLI の場合)を使用します。

SecurityGroups

インスタンスに適用されるセキュリティグループの識別子。この例では、「インスタンスのセキュリティグループを作成する」で作成したセキュリティグループの識別子となります。セキュリティグループを作成していない場合は、VPC のデフォルトのセキュリティグループを使用できます。

カンマで区切ることで、複数の識別子を指定できます。

aws:ec2:vpc 名前空間:

VPCId

VPC の識別子。

Subnets

インスタンスを起動するサブネットの識別子。この例では、これはプライベートサブネットの ID です。

カンマで区切ることで、複数の識別子を指定できます。

ELBSubnets

ロードバランサーのサブネットの識別子。この例では、これはパブリックサブネットの ID です。

カンマで区切ることで、複数の識別子を指定できます。

ELBScheme(オプション)

VPC 外部から Elastic Beanstalk アプリケーションにアクセスできないようにするために VPC 内に内部ロードバランサーを作成する場合は、internal を指定します。

DBSubnets(オプション)

Amazon RDS DB サブネットの識別子を含みます。Amazon RDS DB インスタンスをアプリケーションの一部として追加する場合にのみ使用します。例については、「例: Amazon RDS を使用して VPC で Elastic Beanstalk を起動する」を参照してください。

注記

DBSubnets を使用する場合は、VPC で追加のサブネットを作成し、リージョン内のすべてのアベイラビリティーゾーンを対象にする必要があります。

VPC 内で Elastic Beanstalk アプリケーションをデプロイするときに設定できるオプション設定の例を次に示します。

option_settings:
  aws:autoscaling:launchconfiguration:
    EC2KeyName: "ec2_key_name"
    InstanceType: "instance_type"
    SecurityGroups: "security_group_id, etc"
  aws:ec2:vpc:
    VPCId: "vpc_id"
    Subnets: "instance_subnet, etc"
    ELBSubnets: "elb_subnet, etc"