AWS Elastic Beanstalk よくある質問

全般

AWS Elastic Beanstalk により、開発者は AWS クラウドのアプリケーションを迅速にデプロイし管理することがより簡単になります。開発者は単にそのアプリケーションをアップロードするだけで、Elastic Beanstalk が自動的に容量のプロビジョニング、負荷分散、Auto-Scaling、およびアプリケーション状態モニタリングといったデプロイの詳細を処理します。

アプリケーションを短時間で AWS クラウド内にデプロイして管理したいという方です。クラウドコンピューティングの経験がなくても利用を開始できます。AWS Elastic Beanstalk では Java、.NET、PHP、Node.js、Python、Ruby、Go、Docker のウェブアプリケーションがサポートされます。

AWS Elastic Beanstalk は次の言語と開発スタックをサポートしています。

Apache Tomcat for Java アプリケーション

Apache HTTP Server for PHP アプリケーション

Apache HTTP Server for Python アプリケーション

Nginx or Apache HTTP Server for Node.js アプリケーション

Passenger or Puma for Ruby アプリケーション

Microsoft IIS 7.5, 8.0, and 8.5 for .NET アプリケーション

Java SE

Docker

Go

サポートされている言語および開発スタックの最新の完全なリストについては、サポートされているプラットフォームをご覧ください。

はい。AWS Elastic Beanstalk は拡張できるように設計されており、将来的には複数の開発スタックやプログラミング言語をサポートします。AWS では、Elastic Beanstalk の追加サービスを作成するのに必要な API および機能のソリューションプロバイダーと連携しています。

AWS Elastic Beanstalk によって、容量のプロビジョニング、負荷分散、Auto Scaling、およびアプリケーションデプロイの詳細が自動化され、アプリケーションの特定のバージョンを実行する環境が作成されます。デプロイ可能なコード (WAR ファイルなど) をアップロードすれば、後はすべて AWS Elastic Beanstalk によって処理されます。AWS Toolkit for Visual Studio や AWS Toolkit for Eclipse を利用すると、アプリケーションを AWS Elastic Beanstalk にデプロイして管理する作業を IDE の中から行えます。アプリケーションが稼働を開始した後は、Elastic Beanstalk によって管理タスク (モニタリング、アプリケーションバージョンのデプロイ、基本的なヘルスチェック) が自動的に実行されます。ログファイルへのアクセスも容易です。Elastic Beanstalk を使用すると、開発者はアプリケーション開発に集中でき、デプロイ関連タスク (サーバーのプロビジョニング、負荷分散の設定、スケーリングの管理など) から解放されます。

サービスソリューションとして存在するほとんどのアプリケーションコンテナやプラットフォームでは、必要なプログラミングの量は減少するものの、開発者の柔軟性とコントロールが大幅に低下しています。開発者はベンダーが事前決定したものに従うしかなく、アプリケーションのインフラストラクチャのさまざまな部分のコントロールを取り戻す機会はほとんどありません。しかし、AWS Elastic Beanstalk では、開発者はアプリケーションを実行している AWS リソースのあらゆる面をコントロールできます。開発者がインフラストラクチャの要素を自身で管理したいという場合は、Elastic Beanstalk の管理機能を使ってシームレスに行うことができます。

AWS Elastic Beanstalk では、以下が可能です。

アプリケーションの要件に応じてオペレーティングシステム (Amazon Linux、Windows Server 2016 など) を選択できます。

オンデマンド、リザーブドインスタンス、スポットインスタンスなどのいくつかの Amazon EC2 インスタンスから選択します。 

いくつかの利用可能なデータベースとストレージのオプションから選択することができます。

即時かつ直接的なトラブルシューティングのために Amazon EC2 インスタンスにログインできます。

複数の利用可能ゾーンで実行することで、迅速にアプリケーションの信頼性を向上させることができます。

ロードバランサーに HTTPS プロトコルを有効化することによって、アプリケーションのセキュリティを強化できます

内蔵の Amazon CloudWatch モニタリング機能を通して、アプリケーションの状態やその他の重要なイベントに関する通知を受け取ることができます。

アプリケーションサーバー設定 (JVM 設定など) を調整して環境変数を渡します。

メモリキャッシングサービスなどの、他のアプリケーションのコンポーネントを、Amazon EC2 と同時に実行できます。

アプリケーションサーバーにログインせずに、ログファイルにアクセスできます。

AWS Elastic Beanstalk では、AWS の実績ある機能とサービス (Amazon EC2、Amazon RDS、Elastic Load Balancing、Auto Scaling、Amazon S3、および Amazon SNS など) を使用して、アプリケーションの実行環境が作成されます。最新バージョンの AWS Elastic Beanstalk では、Amazon Linux AMI または Windows Server 2019 が使用されます。

AWS Elastic Beanstalk では Java、.NET、PHP、Node.js、Python、Ruby、Go、および Docker がサポートされるので、ウェブアプリケーションに最適です。ただし、Elastic Beanstalk にはオープンなアーキテクチャが採用されているため、ウェブ以外のアプリケーションも Elastic Beanstalk を使用してデプロイできます。将来的には、他の種類のアプリケーションやプログラミング言語のサポートも予定しています。詳細については、サポートされているプラットフォームをご覧ください。

AWS Elastic Beanstalk は、Amazon Linux AMI および Windows Server AMI で実行されます。どちらの AMI もアマゾン ウェブ サービスによってサポートされ、管理されます。これらは、Amazon EC2 クラウドコンピューティングのための安定性、セキュリティ、およびパフォーマンスに優れた実行環境を作るように設計されています。

開始方法

AWS Elastic Beanstalk にサインアップするには、Elastic Beanstalk 詳細ページにある [今すぐサインアップ] ボタンを選択します。このサービスにアクセスするには、アマゾン ウェブ サービスアカウントが必要です。まだお持ちでない場合は、Elastic Beanstalk のプロセス開始時にアカウントの作成を求められます。サインアップが完了したら、AWS Elastic Beanstalk 入門ガイドをご覧ください。

AWS Elastic Beanstalk の登録には、有効な電話番号と E メールを AWS に提出することが必要です。これはお客様に連絡する必要が生じた場合のためです。電話番号の検証に要するのは数分のみです。ここでは登録プロセス中に電話を受信し、電話のキーパッドを使用して PIN 番号を入力します。

AWS Elastic Beanstalk をお使いになるのが初めての場合は、AWS 技術文書の一部である AWS Elastic Beanstalk 入門ガイドを通してお読みになることをお勧めします。数分で、サンプルアプリケーションのデプロイや使用、独自のアプリケーションのアップロードを実行できます。

はい。AWS Elastic Beanstalk にはサンプルアプリケーションが付属しているので、このサービスを試用しながら機能を体験することができます。

データベース & ストレージ

はい。AWS Elastic Beanstalk では、アプリケーションファイルと、オプションでサーバーログファイルが Amazon S3 に保存されます。AWS マネジメントコンソール、AWS Toolkit for Visual Studio、または AWS Toolkit for Eclipse を使用する場合は、Amazon S3 バケットが自動的にお客様のアカウントに作成され、お客様がアップロードしたファイルは自動的にローカルクライアントから Amazon S3 にコピーされます。必要に応じて、サーバーのログファイルを 1 時間おきに Amazon S3 にコピーするよう Elastic Beanstalk を設定することもできます。環境構成の設定を編集してこれを行うことができます。

はい。アプリケーションのストレージに Amazon S3 を使用することができます。このことを簡単に行うには、アプリケーションのデプロイ可能ファイルに AWS SDK を入れてください。例えば、AWS SDK for Java をアプリケーションの WAR ファイルに入れます。

AWS Elastic Beanstalk では、使用できるデータ永続性テクノロジーが限定されることはありません。Amazon Relational Database Service (Amazon RDS) または Amazon DynamoDB を使用するか、Amazon EC2 で実行されている Microsoft SQL Server、Oracle、またはその他のリレーショナルデータベースを使用できます。

Elastic Beanstalk は自動的に Amazon RDS DB インスタンスをプロビジョニングできます。DB インスタンスへの接続情報は環境変数によってアプリケーションに渡されます。環境に合わせた RDS DB インスタンスの構成方法の詳細については、Elastic Beanstalk 開発者ガイドをご覧ください。

AWS Elastic Beanstalk では必要ありません。Elastic Beanstalk では、接続情報を環境構成で指定することができます。アプリケーションコードから接続文字列を抽出することで、簡単に異なるデータベースを使うよう Elastic Beanstalk 環境を設定できます。

セキュリティ

デフォルトでは、お客様のアプリケーションは myapp.elasticbeanstalk.com で公開され、誰でもアクセスすることができます。Amazon VPC を使用して、ユーザー定義の仮想ネットワークに、アプリケーションのプライベートで独立したセクションをプロビジョンできます。この仮想ネットワークは、特定のセキュリティグループルール、ネットワーク ACL、カスタムルートテーブルを使用して非公開にできます。また、EC2 セキュリティグループの設定を変更することによって、どの着信トラフィック (SSH など) がアプリケーションサーバーに配信されるかを簡単にコントロールすることもできます。

はい、VPC 内でアプリケーションを実行できます。詳細については、AWS Elastic Beanstalk 開発者ガイドをご覧ください。

AWS のセキュリティの詳細については、アマゾン ウェブ サービス: セキュリティプロセスの概要のドキュメントを参照し、セキュリティセンターにアクセスしてください。

はい。適切な権限を持つ IAM ユーザーは AWS Elastic Beanstalk の操作ができるようになりました。

IAM を利用すると、ユーザーとグループを一元管理できます。AWS Elastic Beanstalk へのアクセス権をどの IAM ユーザーに付与するかをコントロールできるほか、Elastic Beanstalk のリソースに対してアクションを実行する必要がないオペレータに対しては、Elastic Beanstalk へのアクセス許可を読み取りのみに制限することもできます。アカウント内のすべてのユーザーのアクティビティは、単一の AWS 請求書の下に集約されます。

IAM ユーザーをプロビジョンするには、IAM コンソール、IAM コマンドラインインターフェイス (CLI)、または IAM API を使用します。デフォルトでは、権限が付与されていない IAM ユーザーは AWS のサービスにアクセスできません。

IAM ユーザーにサービスへのアクセス権を付与するには、ポリシーを使用します。AWS Elastic Beanstalk へのアクセス権付与のプロセスを単純化できるように、IAM コンソールにポリシーテンプレートが用意されています。Elastic Beanstalk は、読み取り専用アクセステンプレート、およびフルアクセステンプレートの、2 つのテンプレートを提供しています。読み取り専用のテンプレートは、Elastic Beanstalk リソースへの読み取り専用アクセスを付与します。フルアクセステンプレートを使用すると、Elastic Beanstalk のすべての操作に対するフルアクセス権が付与され、さらに従属リソース (Elastic Load Balancing、Auto Scaling、Amazon S3 など) を管理する許可も付与されます。また、AWS ポリシージェネレータを使用してカスタムポリシーを作成することもできます。詳細については、AWS Elastic Beanstalk 開発者ガイドをご覧ください。

はい。アプリケーション、アプリケーションのバージョン、環境など、特定の AWS Elastic Beanstalk リソースへのアクセス権限を許可または拒否できます。

ルートアカウントの元にある IAM ユーザーが作成したリソースは、すべてルートアカウントの所有となり、ルートアカウントに請求されます。

ルートアカウントには、IAM ユーザーがそのアカウントで起動した AWS Elastic Beanstalk 環境すべてに対するフルアクセス権があります。Elastic Beanstalk テンプレートを使用して IAM ユーザーに読み取り専用アクセス権を付与した場合は、そのユーザーはそのアカウントのすべてのアプリケーション、アプリケーションバージョン、環境、および関連するリソースを見ることができます。Elastic Beanstalk テンプレートを使用して IAM ユーザーにフルアクセス権を付与した場合は、そのユーザーはそのアカウントの下で任意の Elastic Beanstalk リソースを作成、変更、終了することができます。

はい。IAM ユーザーは、自分のユーザー名とパスワードを使用して AWS Elastic Beanstalk コンソールにアクセスできます。

はい。IAM ユーザーは各自のアクセスキーとシークレットキーで、Elastic Beanstalk API を使用する操作を実行することができます。

はい。IAM ユーザーは、各自のアクセスキーと秘密キーを使用して、AWS Elastic Beanstalk コマンドラインインターフェイス (CLI) を使用する操作を実行できます。

管理されたプラットフォームの更新

AWS Elastic Beanstalk 環境により、指定のメンテナンスウィンドウでアプリケーションが実行されている基盤となるプラットフォームの最新バージョンに更新するオプトインを選択することができます。Elastic Beanstalk では、サポートされているプラットフォーム (Java、PHP、Ruby、Node.js、Python、.NET、Go、および Docker) の新しいバージョンが、オペレーティングシステム、ウェブサーバーおよびアプリケーションサーバー、言語とフレームワークの更新と共に定期的にリリースされます。

Elastic Beanstalk でプラットフォームの更新を自動的に管理できるようにするには、Elastic Beanstalk コンソールの [設定] タブで管理プラットフォームの更新を有効化するか、EB CLI または API を使用する必要があります。この機能を有効にすると、更新を許可するタイプや更新を実行するタイミングを設定できます。

AWS Elastic Beanstalk では、新しいパッチとマイナープラットフォームバージョンのプラットフォーム更新を自動的に実行できます。Elastic Beanstalk では、メジャープラットフォームバージョンの更新 (Java 7 Tomcat 7 から Java 8 Tomcat 8 への更新など) には、下位互換性のない変更が含まれており、追加テストが必要なため、自動実行されません。これらのケースでは、手動で更新を実施する必要があります。

AWS Elastic Beanstalk プラットフォームは、MAJOR.MINOR.PATCH (e.g. 2.0.0) パターンを使用してバージョン管理されています。各部分は、次のように増分されます。

MAJOR バージョン。互換性のない変更があります。

MINOR バージョンには、下位互換性のある方法で追加された追加機能があります。

PATCH バージョンには、下位互換性のあるバグ修正があります。

AWS Elastic Beanstalk マネジメントコンソール、API または CLI を使用していつでもメジャーバージョンの更新を実行することができます。メジャーバージョンの更新を実行するには、次のオプションがあります。

既存の環境にインプレース更新を適用します。Elastic Beanstalk 環境のプラットフォームバージョンの更新をご覧ください。

新しいプラットフォームバージョンで既存の環境のクローンを作成します。詳細は環境のクローンを作成するをご覧ください。

更新はイミュータブルなデプロイメカニズムを使用して適用されます。このメカニズムにより、Amazon EC2 インスタンスの並列フリートに更新がインストールされ、既存のインスタンスとのスワップの準備が整い、インスタンスが終了するまで、既存の環境に変更が行われないことが保証されます。また、Elastic Beanstalk ヘルスシステムで更新中に何らかの問題が検出された場合は、トラフィックはインスタンスの既存のフリートにリダイレクトされ、アプリケーションのエンドユーザーへの影響を最小限に抑えます。

管理プラットフォームの更新ではイミュータブルなデプロイメカニズムを使用して更新が実行されるため、アプリケーションはメンテナンスウィンドウ中に使用できます。また、アプリケーションの消費者が更新により影響されることはありません。

管理プラットフォームの更新機能に追加料金はかかりません。更新期間中に更新を実行する必要のある追加の EC2 インスタンスに対する支払いを行うのみです。

メンテナンスウィンドウは、管理プラットフォームの更新が有効化されており、プラットフォームの新バージョンが公開されている場合に、AWS Elastic Beanstalk でプラットフォームの更新が開始される毎週 2 時間の時間帯です。例えば、毎週日曜日の午前 2 時に開始するメンテナンスウィンドウを選択した場合、AWS Elastic Beanstalk では毎週日曜日午前 2 時~4 時までの間の任意の時間にプラットフォームの更新が始まります。重要な注意点として、アプリケーションの設定によっては、更新の完了時間がメンテナンスウィンドウから外れる場合があります。

メンテナンスウィンドウは環境ごとに設定されるため、さまざまなアプリケーションコンポーネントまたはアプリケーションごとに異なるメンテナンスウィンドウを設定することができます。このことにより、複数のアプリケーションの同時更新を希望しない場合は、環境の各更新をずらすことができます。管理プラットフォームの更新を有効にしているものの、メンテナンスウィンドウを指定していない場合は、デフォルトの毎週 2 時間のウィンドウが環境に割り当てられます。メンテナンスの実行時間を自分で変更する場合、AWS マネジメントコンソールで管理された更新の設定を変更するか、または UpdateEnvironment API を使用して実施できます。

プラットフォームの新バージョン、フォーラムのお知らせ、リリースノートの公開については、新しい AWS マネジメントコンソールを通じて通知されます。

プラットフォームバージョン間の変更の詳細は、AWS Elastic Beanstalk のリリースノートページに記載されます。

管理プラットフォームの更新の実行中に使用できる唯一のアクションは、"中止" です。このアクションにより、更新を直ちに停止し、以前のバージョンにロールバックすることができます。

環境は、常に、選択したレベル (マイナーとパッチまたはパッチのみ) に基づいて使用可能な最新バージョンに更新されます。

すべての管理プラットフォームの更新の詳細はイベントページにあり、"MAINTENANCE" イベントタイプでタグ付けされています。

毎年のバージョンリリースの数は、言語/フレームワークのベンダーやコアチームからのリリースやパッチの頻度とコンテンツ、および当社のプラットフォーム技術チームのリリースおよびパッチの診断結果により異なります。

AWS Graviton のサポート

Elastic Beanstalk コンソールで arm64 ベースのプロセッサでアプリケーションをデプロイするには、Configure more options settings にある容量タブからプロセッサアーキテクチャとインスタンスタイプを選択します。

Elastic Beanstalk CLI、AWS CLI、CFN、または AWS CDK を使用してアプリケーションをデプロイするには、「Elastic Beanstalk デベロッパーガイド」をご覧ください。

ワークロードが Node.js、Python、Tomcat、PHP、Ruby などのインタプリタ型プログラム言語にある場合は、Graviton を使用するためにワークロードを再コンパイルする必要はありません。ワークロードに Go や .Net Core を使用している場合は、arm64 インスタンスタイプ用のビルドコマンドを更新する必要があります。また、バイナリ依存性を再コンパイルするか、arm64 互換リリースのバイナリ依存性を使用する必要があります。Docker を使用している場合は、Docker イメージがマルチアーキテクチャで、x86 と arm64 の両方へのデプロイをサポートしている必要があります。

Elastic Beanstalk は 64 ビット Amazon Linux 2 の Graviton をさまざまなプラットフォーム、ブランチでサポートしています。詳細なリストについては、ドキュメントをご覧ください。

以下のようなユースケースでは、ワークロードを容易に Graviton に移行し、パフォーマンスやコスト面での利点を享受することができます。主にオープンソース技術で構築された Linux ベースのワークロード、Docker や MC Docker などのコンテナ化されたマイクロサービスベースのアプリケーション、Java、Python、.NET Core、node.js、PHP などの可搬性の高いプログラミング言語で書かれたアプリケーション、コンパイルされた C/C++、Rust、Go アプリケーション、Linux で動作する .NET Core (v3.1+) ワークロード、マルチスレッドワークロード、不均等メモリアクセス (NUMA) に敏感なワークロード、arm64 ネイティブのソフトウェア開発やテストなど。

請求

AWS Elastic Beanstalk には追加料金は発生しません。アプリケーションの保存と実行に実際に使用した AWS リソースに対してのみお支払いいただきます。

使用した分のみにお支払いいただきます。どんな AWS リソースを使用するのにも最低料金はありません。Amazon EC2 の料金情報については、EC2 詳細ページの料金表のセクションをご覧ください。Amazon S3 の料金情報については、S3 詳細ページの料金表のセクションをご覧ください。AWS Simple Calculator を使って、異なるアプリケーションサイズの請求見積もりを計算することができます。

現在の請求期間の請求額はいつでもアマゾン ウェブ サービスのウェブサイトで確認できます。アマゾン ウェブ サービスのアカウントにログインして、ご自分のウェブサービスアカウントの下の [アカウントアクティビティ] をクリックしてください。

サポート

はい。AWS Elastic Beanstalk の使用に関連する問題が発生したときに AWS サポートをご利用いただけます。詳細と料金については、AWS サポートのページをご覧ください。

AWS Elastic Beanstalk フォーラムを通じて、幅広い既存の AWS コミュニティの知識を活用し、開発に役立てていただけます。