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

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

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

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

コードリポジトリ: クラスターサンプルアプリ

環境:本稼働

テクノロジー: コンテナとマイクロサービス CloudNative; モダナイゼーション

AWS サービス: AWS Elastic Beanstalk

[概要]

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 EB CLIがローカルにインストールされている

  • 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 を使用するメリット

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

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

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

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

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

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

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