Elastic Beanstalk 環境の Amazon EC2 インスタンス - AWS Elastic Beanstalk

Elastic Beanstalk 環境の Amazon EC2 インスタンス

ウェブサーバー環境を作成すると、AWS Elastic Beanstalk は、インスタンスと呼ばれる 1 つ以上の Amazon Elastic Compute Cloud (Amazon EC2) 仮想マシンを作成します。

環境内のインスタンスは、選択したプラットフォームでウェブアプリケーションを実行するように設定されます。環境の作成中、または既に実行を開始してから、環境のインスタンスのさまざまなプロパティと動作を変更できます。これらの変更は、環境にデプロイするソースコードを変更することでも、行うことができます。詳細については、「設定オプション」を参照してください。

注記

環境内の Auto Scaling グループは、アプリケーションを実行する Amazon EC2 インスタンスを管理します。このページで説明されている設定変更をすると、起動設定 (Amazon EC2 起動テンプレートまたは Auto Scaling グループ起動設定リソース) も変更されます。この変更には、すべてのインスタンスの置換が必要で、ローリング更新またはイミュータブルな更新がトリガーされます(どちらがトリガーされるかは設定により異なります)。

新しい環境の作成時に、インスタンスタイプを選択して、インスタンスの実行に使用するホストコンピュータのハードウェアを決定します。Amazon EC2 がインスタンスタイプを導入すると、Elastic Beanstalk は互換性のあるインスタンスタイプをサポートします。使用可能なインスタンスタイプの詳細については、Amazon EC2 Linux インスタンス用ユーザーガイドの「インスタンスタイプ」または Amazon EC2 Windows インスタンス用ユーザーガイドの「インスタンスタイプ」を参照してください。

注記

Elastic Beanstalk は、現時点では Amazon EC2 Mac および Amazon EC2 Graviton (ARM ベース) インスタンスタイプをサポートしていません。

Elastic Beanstalk は、オンデマンドインスタンスリザーブドインスタンススポットインスタンスという複数の Amazon EC2 インスタンス購入オプションをサポートしています。オンデマンドインスタンスは、従量制料金のリソースであり、使用時に長期的な契約は必要ありません。リザーブドインスタンスは、お客様の環境で一致するオンデマンドインスタンスに自動的に適用される事前購入請求割引です。スポットインスタンスは、オンデマンド価格より低価で利用できる未使用の Amazon EC2 インスタンスです。1 つのオプションを設定することで、環境内のスポットインスタンスを有効にすることができます。追加のオプションを使用して、オンデマンドインスタンスとスポットインスタンスの混在を含め、スポットインスタンスの使用量を設定できます。詳細については、「Auto Scaling グループ」を参照してください。

環境内にある Amazon EC2 インスタンスを設定する

Elastic Beanstalk コンソールで、Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を変更できます。

Elastic Beanstalk コンソールで Amazon EC2 インスタンスを設定するには

  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

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

  4. [インスタンス] 設定カテゴリで、[編集] を選択します。このカテゴリの設定を変更し、[Apply (適用)] を選択します。設定の説明については、このページのセクション インスタンスカテゴリの設定 を参照してください。

  5. [キャパシティー] 設定カテゴリで、[編集] を選択します。このカテゴリの設定を変更し、[Continue (続行)] を選択します。設定の説明については、このページのセクション キャパシティーカテゴリの設定 を参照してください。

インスタンスカテゴリの設定

Amazon EC2 インスタンスに関連する次の設定は、[Instances (インスタンス)] 設定カテゴリで使用できます。


          Elastic Beanstalk インスタンス設定ウィンドウの Amazon EC2 インスタンス設定

間隔のモニタリング

デフォルトでは、環境内のインスタンスは、ベーシックヘルスメトリクスを 5 分間隔で Amazon CloudWatch に公開します (追加料金は発生しません)。

より詳細なレポートを実行するには、[Monitoring interval] (モニタリング間隔) を [1 minute] (1 分) に設定し、環境内のリソースがベーシックヘルスのメトリクスを CloudWatch に公開する頻度を高めます。この場合、CloudWatch の利用料金は、1 分間隔のメトリクスに適用されます。詳細については、「Amazon CloudWatch」を参照してください。

ルートボリューム (起動デバイス)

環境内の各インスタンスは、ルートボリュームを使用して設定されます。ルートボリュームは、オペレーティングシステムやライブラリ、スクリプト、アプリケーションのソースコードを保存するためにインスタンスにアタッチされる Amazon EBS ブロックデバイスです。デフォルトでは、すべてのプラットフォームでストレージ用の汎用 SSD ブロックデバイスが使用されます。

[ルートボリュームタイプ] を変更して、マグネティックストレージやプロビジョンド IOPS SSD ボリュームタイプを使用すれば、必要に応じてボリュームサイズを増大することが可能です。プロビジョンド IOPS ボリュームでは、プロビジョニングする IOPS の数を選択する必要があります。スループットは gp3 SSD ボリュームタイプにのみ適用されます。プロビジョニングに必要なスループットを入力できます。1 秒あたり 125 ~ 1000 メビバイト (MiB/s) の範囲にできます。必要なパフォーマンスと価格の要件を満たすボリュームタイプを選択します。

詳細については、Amazon EC2 Linux インスタンス用ユーザーガイドの「Amazon EBS ボリュームの種類」および Amazon EBS 製品の詳細を参照してください。

インスタンスメタデータサービス

インスタンスメタデータサービス (IMDS) は、インスタンス上のコードによって、インスタンスメタデータに安全にアクセスするために使用されるインスタンス上のコンポーネントです。コードは、手法としてインスタンスメタデータサービスバージョン 1 (IMDSv1) またはインスタンスメタデータサービスバージョン 2 (IMDSv2) のいずれかを使用して、実行中のインスタンスからインスタンスメタデータにアクセスできます。IMDSv2 の方が安全性に優れています。IMDSv1 を無効にして、IMDSv2 を適用します。詳細については、「環境のインスタンスでのインスタンスメタデータサービスの設定」を参照してください。

注記

この設定ページの IMDS セクションは、IMDSv2 をサポートするプラットフォームバージョンに対してのみ表示されます。

セキュリティグループ

インスタンスにアタッチされているセキュリティグループによって、インスタンスに進入できるトラフィックと、インスタンスから送出できるトラフィックが決まります。Elastic Beanstalk は、HTTP (80) および HTTPS (443) の標準ポートのロードバランサーからのトラフィックを許可するセキュリティグループを作成します。

追加のセキュリティグループを指定し、他のポート上にあるトラフィックやその他のソースからのトラフィックを許可することも可能です。例えば、制限された IP アドレス範囲から (または、さらにセキュリティを強化するために自分だけがアクセス権限を持っている踏み台ホストから) ポート 22 に着信したトラフィックを許可する SSH アクセス用セキュリティグループを作成できます。

注記

環境 A のインスタンスと環境 B のインスタンス間のトラフィックを許可するには、Elastic Beanstalk が環境 B にアタッチしたセキュリティグループにルールを追加します。そうすると、Elastic Beanstalk が環境 A にアタッチしたセキュリティグループを指定できます。これにより、環境 A のインスタンスとの間で着信または送信されるトラフィックが許可されます。ただし、これを行うことで 2 つのセキュリティグループ間に依存性が生じます。後で環境 A を終了しようとすると、環境 B のセキュリティグループは環境 A のセキュリティグループに依存するため、Elastic Beanstalk は環境 A のセキュリティグループを削除できなくなります。

したがって、別のセキュリティグループを作成し、環境 A にアタッチして、環境 B のセキュリティグループのルールでそのセキュリティグループを指定することをお勧めします。

Amazon EC2 セキュリティグループの詳細については、Linux インスタンス用の Amazon EC2 ユーザーガイドの「Amazon EC2 セキュリティグループ」を参照してください。

キャパシティーカテゴリの設定

Amazon EC2 インスタンスに関連する次の設定は、[Capacity (キャパシティー)] 設定カテゴリで使用できます。


          Elastic Beanstalk 容量設定ウィンドウでの Amazon EC2 インスタンス設定

インスタンスタイプ

[Instance type] (インスタンスタイプ) の設定によって、アプリケーションの実行時に起動する Amazon EC2 インスタンスのタイプが決まります。インスタンスは、負荷がかかった状態でもアプリケーションを実行できる性能があるものを選択します。ただし、性能が高すぎて、ほとんどの時間アイドル状態になるようなインスタンスは避けてください。開発目的のため、t2 インスタンスファミリーは、短期間のバーストが可能な中程度の強度を備えています。

大規模なアプリケーションの可用性を高くするには、インスタンスプールを使用して、インスタンスの 1 つが停止しても容量が大きな影響を受けないようにします。まず、平常時に中程度の負荷下で 5 つのインスタンスを実行できるインスタンスタイプから開始します。いずれかのインスタンスが失敗した場合は、残りのインスタンスがその他のトラフィックを吸収します。また、ピーク時間帯のトラフィック上昇に対応するため、環境を拡張する時間としてキャパシティーバッファが設けられています。

Elastic Beanstalk は、現時点では Amazon EC2 Mac および Amazon EC2 Graviton (ARM ベース) インスタンスタイプをサポートしていません。Amazon EC2 インスタンスファミリーとタイプの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスタイプ」または Windows インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスタイプ」を参照してください。要件を満たすインスタンスタイプと、サポートされるリージョンを決定するには、Linux インスタンス用 Amazon EC2 ユーザーガイドの「利用可能なインスタンスタイプ」または Windows インスタンス用 Amazon EC2 ユーザーガイドの「利用可能なインスタンスタイプ」を参照してください。

環境でスポットインスタンスリクエストを有効にすると、この設定ページには 1 つの設定ではなく、[インスタンスタイプ] のリストが表示されます。スポットインスタンスの 1 つ以上のインスタンスタイプを選択できます。詳細については、「スポットインスタンスのサポート」を参照してください。

AMI ID

Amazon マシンイメージ (AMI) は、Amazon Linux または Windows Server のマシンイメージで、環境で Amazon EC2 インスタンスを起動する目的で Elastic Beanstalk が使用します。Elastic Beanstalk は、アプリケーションの実行に必要なツールとリソースを含むマシンイメージを提供します。

Elastic Beanstalk は、選択されるリージョン、プラットフォーム、インスタンスタイプに基づいて、環境のデフォルト AMI を選択します。カスタム AMI を作成した場合は、デフォルトの AMI ID と置き換えます。

aws:autoscaling:launchconfiguration 名前空間

aws:autoscaling:launchconfiguration 名前空間の設定オプションを使用して、コンソールで使用できない追加のオプションを含め、環境のインスタンスを設定できます。

次の設定ファイルの例では、このトピックに示す基本的な設定オプションを使用します。例えば、DisableIMDSv1 オプションを使用しています。これについては、「IMDS」を参照してください。セキュリティ で説明されている EC2KeyName および IamInstanceProfile というオプションも使用しています。また、BlockDeviceMappings オプションも使用していますが、これはコンソールでは使用できません。

option_settings: aws:autoscaling:launchconfiguration: InstanceType: m1.small SecurityGroups: my-securitygroup MonitoringInterval: "1 minute" DisableIMDSv1: false EC2KeyName: my-keypair IamInstanceProfile: "aws-elasticbeanstalk-ec2-role" BlockDeviceMappings: "/dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0"

BlockDeviceMappings では、インスタンス用の追加のブロックデバイスを設定できます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「ブロックデバイスマッピング」を参照してください。

注記

InstanceType オプションはサポートされなくなりました。InstanceTypes 名前空間のより新しく強力な aws:ec2:instances オプションに置き換わりました。この新しいオプションを使用して、環境で 1 つ以上のインスタンスタイプのリストを指定することができます。このリストの最初の値は、ここで説明する aws:autoscaling:launchconfiguration 名前空間に含まれる InstanceType オプションの値に等しくなります。新しいオプションを使用してインスタンスタイプを指定することをお勧めします。指定した場合、新しいオプションは古いオプションよりも優先されます。詳細については、「aws:ec2:instances 名前空間 」を参照してください。

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