AWS Elastic Beanstalk

AWS Elastic Beanstalk は、Java、.NET、PHP、Node.js、Python、Ruby、Go および Docker を使用して開発されたウェブアプリケーションやサービスを、Apache、Nginx、Passenger、IIS など使い慣れたサーバーでデプロイおよびスケーリングするためのサービス。

コードをアップロードするだけで、Elastic Beanstalk が、キャパシティのプロビジョニング、ロードバランシング、Auto Scaling からアプリケーションのヘルスモニタリングまで、デプロイを自動的に処理する。

Elastic Beanstalk には追加料金は必要ない。アプリケーションを格納および実行するために必要な AWS のリソースに対してのみ課金される。

Azure の App Service 相当

Elastic Beanstalk の概念

  • アプリケーション
    • Elastic Beanstalk コンポーネントの論理コレクション。環境、バージョン、環境設定などがある。アプリケーションは概念的にはフォルダと似ている。
  • アプリケーションバージョン
    • ウェブアプリケーションのデプロイ可能コードの特定のラベル付きイテレーションのこと。Java の WAR ファイルなどのデプロイ可能コードが含まれている Amazon S3 オブジェクトを指す。アプリケーションバージョンはアプリケーションの一部。アプリケーションは多数のバージョンを持つことができ、各アプリケーションバージョンは一意。実行中の環境では、アプリケーションに既にアップロードしてあるアプリケーションバージョンをデプロイしたり、新しいアプリケーションバージョンをアップロードしてすぐにデプロイしたりできる。複数のアプリケーションバージョンをアップロードして、ウェブアプリケーションのバージョン間の違いをテストすることもできる。
  • 環境
    • アプリケーションバージョンを実行している AWS リソースのコレクション。各環境が実行するのは一度に 1 つのアプリケーションバージョンだけが、同じアプリケーションバージョンや複数の異なるアプリケーションバージョンを多数の環境で同時に実行できる。環境を作成すると、指定したアプリケーションバージョンを実行するのに必要なリソースが Elastic Beanstalk でプロビジョニングされる。
  • 環境枠(Environment tier)
    • 環境で実行するアプリケーションのタイプを指定し、それをサポートするために Elastic Beanstalk でプロビジョニングするリソースを決定する。
      • HTTP リクエストを処理するアプリケーションは、ウェブサーバー環境枠で実行される。
      • Amazon SQS キューからタスクを取り出すバックエンド環境は、ワーカー環境枠で実行される。
  • 環境設定
    • 環境とその環境に関連付けられているリソースの動作を定義するパラメータと設定のコレクションを識別する。環境設定を更新すると、(変更の種類に応じて) Elastic Beanstalk が自動的に既存のリソースを変更または削除し、新しいリソースをデプロイする。
  • 保存された設定
    • 一意の環境設定を作成するための開始点として使用できるテンプレート。設定を作成するか、保存された設定を変更し、Elastic Beanstalk コンソール、EB CLI、AWS CLI、または API を使用して環境に適用できる。API および AWS CLI は、保存された設定を設定テンプレートとして参照する。
  • プラットフォーム
    • オペレーティングシステム、プログラミング言語ランタイム、ウェブサーバー、アプリケーションサーバー、および Elastic Beanstalk コンポーネントの組み合わせ。ウェブアプリケーションを設計し、プラットフォームをターゲットとする。

Elastic Beanstalk プラットフォームメンテナンスの責任共有モデル

  • Elastic Beanstalk でサポートされているプラットフォームのバージョンに対してパッチとマイナーな更新を自動的に適用する。
    • マネージド型の更新が失敗した場合、お客様がそれを確実に認識してすぐにアクションを実行できるように、Elastic Beanstalk は失敗について通知する。
  • 今後 12 か月のそのプラットフォームのサポートポリシーとリタイアのスケジュールを発行する。
  • OS、ランタイム、アプリケーションサーバー、ウェブサーバーコンポーネントのパッチ、マイナーな更新、およびメジャーな更新を、通常は利用可能になってから 30 日以内にリリースする。
    • サポートされているプラットフォームのバージョンに含まれている Elastic Beanstalk コンポーネントの更新を作成する。
    • その他のすべての更新は、サプライヤ (所有者またはコミュニティ) から直接取得される。

ユーザーは以下を行う必要がある:

  • 管理しているすべてのコンポーネント (AWS 責任共有モデルで [お客様] として識別されるもの) を更新する。
    • アプリケーションのセキュリティ、データ、アプリケーションに必要でお客様がダウンロードしたコンポーネントのセキュリティの確保。
  • Elastic Beanstalk 環境が、サポートされているプラットフォームバージョンで実行されていることを確認する。
    • リタイアしているプラットフォームバージョンで実行されている環境は、サポートされているバージョンに移行する。
  • 管理された更新で失敗したすべての問題を解決し、更新を再試行する。
  • Elastic Beanstalk で管理されている更新をオプトアウトした場合は、OS、ランタイム、アプリケーションサーバー、ウェブサーバーに自分でパッチを適用する。
    • これを行うには、手動でプラットフォームの更新を適用するか、関連するすべての環境リソースでコンポーネントに直接パッチを適用する。
  • AWS 責任共有モデルに従って、Elastic Beanstalk の外部で使用する AWS のサービスのセキュリティとコンプライアンスを管理する。