Elastic Beanstalk を使用してコンテナをデプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Elastic Beanstalk を使用してコンテナをデプロイする

作成者: Thomas Scott (AWS) と Jean-Baptiste Guillois (AWS)

概要

Amazon Web Services (AWS) クラウドでは、AWSElastic Beanstalk は Docker を利用可能なプラットフォームとしてサポートしているため、コンテナは作成された環境で実行できます。このパターンは、Elastic Beanstalk サービスを使用してコンテナをデプロイする方法を示しています。このパターンのデプロイでは、Docker プラットフォームベースのウェブサーバー環境が使用されます。

ウェブアプリケーションやサービスをデプロイ、スケーリングするために Elastic Beanstalk を使用する場合、コードをアップロードすると、デプロイが自動的に処理されます。キャパシティのプロビジョニング、ロードバランシング、自動スケーリング、アプリケーションのヘルスモニタリングも含まれます。Elastic Beanstalk を使用すると、ユーザーに代わって作成するAWSリソースを完全に制御できます。Elastic Beanstalk に対する追加料金はありません。アプリケーションの保存と実行に使用されるAWSリソースに対してのみ料金が発生します。

このパターンには、AWSElastic Beanstalk コマンドラインインターフェイス (EB CLI) と AWSマネジメントコンソールを使用したデプロイの手順が含まれています。

ユースケース

以下に、Elastic Beanstalk ラベルの一般的なユースケースを示します。 

  • プロトタイプ環境をデプロイして、フロントエンドアプリケーションのデモを行います。(このパターンでは Dockerfile を例として使用しています)。

  • をデプロイAPIして、特定のドメインのAPIリクエストを処理します。

  • Docker-Compose を使用して、オーケストレーションソリューションをデプロイします(このモードでは、docker-compose.yml は実際の例として使用されません)。

前提条件と制限

前提条件

  • AWS アカウント。

  • AWS CLIローカルにインストールされた EB

  • Docker がローカルマシンにインストールされています

機能制限

  • 無料プランでは、Docker のプル制限は IP アドレスごとに 6 時間あたり 100 回までです。

アーキテクチャ

ターゲットテクノロジースタック

  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンス

  • セキュリティグループ

  • Application Load Balancer

  • Auto Scaling グループ

ターゲット アーキテクチャ

Elastic Beanstalk でコンテナをデプロイするためのアーキテクチャ。

自動化とスケール

AWS Elastic Beanstalk は、行われたリクエストの数に基づいて自動的にスケーリングできます。環境用に作成された AWSリソースには、1 つの Application Load Balancer、Auto Scaling グループ、および 1 つ以上の Amazon EC2インスタンスが含まれます。 

ロードバランサーは、Auto Scaling グループの一部である Amazon EC2インスタンスの前に配置されます。Amazon EC2 Auto Scaling は、アプリケーションの負荷の増加に対応するため、追加の Amazon EC2インスタンスを自動的に起動します。アプリケーションの負荷が減ると、Amazon EC2 Auto Scaling はインスタンスを停止しますが、少なくとも 1 つのインスタンスは実行されたままになります。

自動スケーリングトリガー

Elastic Beanstalk 環境の Auto Scaling グループは、2 つの Amazon CloudWatch アラームを使用してスケーリングオペレーションを開始します。各インスタンスの 5 分間の平均アウトバウンドネットワークトラフィックが 6 MB 以上または 2 MB 以下の場合は、デフォルトのトリガーがスケーリングされます。Amazon EC2 Auto Scaling を効果的に使用するには、アプリケーション、インスタンスタイプ、サービス要件に適したトリガーを設定します。レイテンシー、ディスク I/O、CPU使用率、リクエスト数など、いくつかの統計に基づいてスケーリングできます。詳細については、「自動スケーリングトリガー」を参照してください。

ツール

AWS サービス

  • AWS コマンドラインインターフェイス (AWS CLI) は、コマンドラインシェルのコマンドを使用して AWSサービスとやり取りするのに役立つオープンソースツールです。

  • AWS EB コマンドラインインターフェイス (EB CLI) は、Elastic Beanstalk 環境の作成、設定、管理に使用できるコマンドラインクライアントです。

  • 受信したアプリケーションまたはネットワークトラフィックを複数のターゲットに分散するには、Elastic Load Balancing を使用します。例えば、1 つ以上のアベイラビリティーゾーンの Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、コンテナ、IP アドレスにトラフィックを分散できます。

その他のサービス

  • Docker は、ライブラリ、システムツール、コード、ランタイムを含むコンテナと呼ばれる、標準化されたユニットにソフトウェアをパッケージ化します。

コード

このパターンのコードは、 GitHub クラスターサンプルアプリケーションリポジトリにあります。

エピック

タスク説明必要なスキル

リモートリポジトリをクローンを作成します。

  • リポジトリのクローンを作成するには、git clone https://github.com/aws-samples/cluster-sample-app.git コマンドを実行します。< /p>

アプリ開発者、AWS管理者、 AWS DevOps

Elastic Beanstalk Docker プロジェクトを初期化します。

  1. ルートディレクトリに aws.json という名前のファイルを作成します。

  2. aws.json のファイルに次のコードを追加します。

    {    "AWSEBDockerrunVersion":"1",    "Image":{       "Name":"cluster-sample-app"    },    "Ports":[       {          "ContainerPort":80,          "HostPort":8080       }    ] }
  3. プロジェクトのルートディレクトリで eb init -p docker コマンドを実行します。

アプリ開発者、AWS管理者、 AWS DevOps

プロジェクトをローカルでテストします。

  1. プロジェクトのルートディレクトリで eb local run コマンドを実行します。

  2. http://localhost に移動して、アプリケーションをテストします。

アプリ開発者、AWS管理者、 AWS DevOps
タスク説明必要なスキル

デプロイコマンドの実行

  1. プロジェクトのルートディレクトリで eb create docker-sample-cluster-app コマンドを実行します。

アプリ開発者、AWS管理者、 AWS DevOps

デプロイされたバージョンにアクセスします。

デプロイコマンドの終了後、eb open コマンドを使用してプロジェクトにアクセスします。

アプリ開発者、AWS管理者、 AWS DevOps
タスク説明必要なスキル

ブラウザを使用してアプリケーションをデプロイします。

  1. コンソールを開きます。

  2. Elastic Beanstalk コンソールに移動します。

  3. [アプリケーションの作成] を選択します。

  4. [アプリケーション名] には、Cluster-Sample-App と入力します。

  5. Docker をプラットフォームとして選択します。

  6. [コードのアップロード] を選択します。

  7. ローカルの .zip ファイル (クローンされたプロジェクトのルート内) またはパブリック Amazon Simple Storage Service (Amazon S3) を選択しますURL。

アプリ開発者、AWS管理者、 AWS DevOps

デプロイされたバージョンにアクセスします。

デプロイ後、デプロイされたアプリケーションにアクセスし、URL提供された を選択します。

アプリ開発者、AWS管理者、 AWS DevOps

関連リソース

追加情報

Elastic Beanstalk を使用するメリット

  • インフラストラクチャの自動プロビジョニング

  • 基盤となるプラットフォームの自動管理

  • アプリケーションをサポートするための自動パッチ適用とアップデート

  • アプリケーションの自動スケーリング

  • ノード数のカスタマイズが可能

  • 必要に応じて、インフラストラクチャーコンポーネントにアクセス可能

  • 他のコンテナデプロイのソリューションよりもデプロイが簡単