Amazon Elastic Container Service (Amazon ECS)

Amazon Elastic Container Service (Amazon ECS) は、Docker アプリケーションをスケーラブルなクラスターで実行するために使用するアマゾン ウェブ サービスです。このチュートリアルでは、ロードバランサーの後方に配置した Amazon ECS クラスターで Docker 対応サンプルアプリケーションを実行し、サンプルアプリケーションをテストし、課金を避けるためにリソースを削除する方法について学びます。

このチュートリアルはすべて無料利用枠の範囲で実行できます。

AWS リソース管理を始めましょう

コンソールにサインイン

Amazon ECS の初回実行ウィザードのガイドにしたがってクラスターを作成し、サンプルウェブアプリケーションを起動します。このステップでは、Amazon ECS コンソールからウィザードを起動します。



b. Amazon ECS には、Amazon Elastic Container Registry (Amazon ECR) を使用してイメージリポジトリを作成し、初回実行ウィザードの一部としてリポジトリにイメージをプッシュするオプションがあります (右側のスクリーンショットを参照)。現時点で、この機能は一部のリージョンのみで利用可能です。 

  • Amazon ECR オプションが利用できない場合はステップ 2 にジャンプします。
  • Amazon ECR オプションが利用できる場合は、[Amazon ECS クラスターにサンプルアプリケーションをデプロイする] 横のチェックボックスをオフにし、[継続] を選択します。
deploy-docker-container-1

(クリックして拡大)

deploy-docker-container-1

"タスク定義" はアプリケーションの設計図のようなものです。このステップでは、コンテナにどの Docker イメージを使用するか、タスクで何個のコンテナを使用するか、および各コンテナへのリソース割り当てについて、タスク定義を指定して Amazon ECS に知らせます。


タスク定義には、デフォルト設定値が事前にロードされています。

  • デフォルト値を確認してから、[次のステップ] をクリックします。

設定を変更したい場合、または詳細について知りたい場合は、「タスク定義パラメータ」を参照してください。

deploy-docker-container-2

(クリックして拡大)

deploy-docker-container-2

タスク定義が作成されました。次に、Amazon ECS サービスを設定します。サービスによって、タスク定義のコピーがクラスターに起動され、維持されます。例えば、あるアプリケーションをサービスとして実行し、停止したタスクがある場合、停止したタスクは Amazon ECS によって自動的に回復され、指定した数のコピーが維持されます。


a. サービスオプションを設定します。

  • サービス名: デフォルトの sample-webapp は、AWS によって作成されたウェブベースの "Hello World" アプリケーションです。無限に実行することを意図しているため、これをサービスとして実行することにより、タスクに異常や予期しない停止が発生した場合にタスクが再起動されます。
  • タスクの必要数: AWS 無料利用枠を超えないよう、デフォルト値の「1」のままにしておきます。タスクのコピーが 1 つ作成されることになります。
deploy-docker-container-3

(クリックして拡大)

deploy-docker-container-3

b. Elastic load balancing: サービスには、任意でロードバランサーを使用できます。Amazon ECS では、Elastic Load Balancing (ELB) ロードバランサーを作成して、タスクが起動している複数のコンテナインスタンスにトラフィックを分散させることができます。

  • コンテナ名: ホストポート: [Simple-app:80] を選択します。
  • サンプルアプリケーションには、[ELB リスナープロトコル]、[ELB リスナーポート]、[ELB ヘルスチェック] のデフォルト値が設定されています。ロードバランシング設定の詳細については、「Service Load Balancing」を参照してください。
deploy-docker-container-3b

(クリックして拡大)

deploy-docker-container-3b

c. ロードバランサーを Amazon ECS サービスにアタッチする前に、使用するサービス用の Identity and Access Management (IAM) ロールを作成しておく必要があります。これにより、インスタンスのロードバランサーへの登録と登録解除のため、Amazon ECS から Amazon EC2 と Elastic Load Balancing の API に対する呼び出しを実行できるようになります。

  • サービス IAM ロールが存在していない場合、Amazon ECS によって ecsServiceRole というロールが作成されます。
  • Amazon ECS サービスロールが既に存在する場合、ドロップダウンから選択します。
deploy-docker-container-3c

(クリックして拡大)

deploy-docker-container-3c

d. 設定を確認し、[次のステップ] を選択します。

deploy-docker-container-3d

(クリックして拡大)

deploy-docker-container-3d

Amazon ECS タスクは、A,mazon ECS コンテナエージェントが実行されているコンテナインスタンスのセットである "クラスター" で実行されます。このステップでは、クラスターを設定し、セキュリティ設定を確認し、IAM ロールを設定します。


a. 以下のように設定します。

  • クラスター名: 「sample-cluster」と入力します。
  • EC2 インスタンスタイプ: デフォルトの [t2.micro] インスタンスタイプを使用すれば、無料利用枠を超えずにすみます。大きな CPU とメモリリソースの容量を持つインスタンスタイプでは、処理できるタスクが増加します。さまざまなインスタンスタイプの詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。
  • インスタンス数: デフォルト値の「1」のままにしておき、タスクの実行されるクラスター内に作成される Amazon EC2 インスタンスの数を 1 つにします。クラスター内のインスタンスが増えれば、より多くのタスクを実行させることができます。
  • キーペア: インスタンスに SSH で接続する場合は、キーペアが必要になります。[なし – SSH で接続不可] を選択するか、既存のキーペアを選択するか、または Amazon EC2 コンソールでキーペアを新規作成します。
deploy-docker-container-5a

(クリックして拡大)

deploy-docker-container-5a

b. (任意) セキュリティグループ: デフォルト値の [(任意の場所)] にしておき、インターネット全体からのアクセスを許可します。インスタンスへのアクセスを制限するために CIDR ブロックを選択することも可能です。

deploy-docker-container-5b

(クリックして拡大)

deploy-docker-container-5b

c. コンテナインスタンスの IAM ロール:

  • IAM ロールが作成されていない場合、Amazon ECS ウィザードによって作成されます。
  • コンテナインスタンスの IAM ロールが既に存在する場合、ドロップダウンリストから選択します。
deploy-docker-container-5c

(クリックして拡大)

deploy-docker-container-5c

d. [確認と作成] を選択します。

deploy-docker-container-5d

(クリックして拡大)

deploy-docker-container-5d

ここまでのステップで、タスク定義 (アプリケーションの設計図) を設定し、Amazon ECS サービス (タスク定義のコピーを起動し、維持する) を設定し、クラスター (コンテナエージェントを実行するコンテナインスタンスのセット) を設定しました。このステップでは、作成したリソースの確認、起動、表示を行います。


a. 起動する前にタスク定義、タスク設定およびクラスター設定を確認する最後のチャンスになります。

  • [インスタンスの起動とサービスの実行] を選択します。
deploy-docker-container-6

(クリックして拡大)

deploy-docker-container-6

b. 起動状況を表示し、プロセスの各ステップについて説明する [作成ステータス] ページが表示されています。

  • 起動が完了したら、[サービスの表示] を選択します。
deploy-docker-container-7

(クリックして拡大)

deploy-docker-container-7

このステップでは、ブラウザにロードバランサーの DNS 名を指示することにより、サンプルアプリケーションが動作していることを確認します。


a. sample-webapp ページで、[ロードバランサー名] をクリックします。

deploy-docker-container-10

(クリックして拡大)

deploy-docker-container-10

b. サンプルアプリケーションのテストを始めます。

  • ELB DNS 名をコピーします。
  • 新しいブラウザウィンドウにペーストします。
  • Enter キーを押し、サンプルアプリケーションを表示させます (この場合は静的ウェブページ)。
deploy-docker-container-12a

(クリックして拡大)

deploy-docker-container-12a

このチュートリアルでは、Amazon ECS クラスター、Amazon EC2 インスタンスおよびロードバランサーという 3 つのリソースを起動しました。このステップでは、不要な課金を避けるためにリソースをクリーンアップします。


a. Amazon ECS コンソールページに戻ります。

  • クラスター名 ([sample-cluster]) をクリックします。
deploy-docker-container-13

(クリックして拡大)

deploy-docker-container-13

b. [sample-webapp] 横のチェックボックスをオンにしてから、[更新] をクリックします。

deploy-docker-container-15

(クリックして拡大)

deploy-docker-container-15

c. アクティブなタスクを実行中のサービスを誤って削除しないよう、Amazon ECS でのサービス削除前にすべてのタスクを停止しておく必要があります。 

  • [タスクの数] を「0」に設定し、[サービスの更新] を選択します。
  • サービスが更新された後、[削除] を選択します。
deploy-docker-container-14

(クリックして拡大)

deploy-docker-container-14

d. クラスターに起動していた Amazon EC2 インスタンスを削除します。

  • Amazon EC2 コンソールに入ります
  • 左側のパネルから [インスタンス] を選択します。
  • [ECS Instance – EC2ContainerService-default] という名前のインスタンスの横にあるチェックボックスをオンにします。
  • [アクション] > [インスタンスの状態] > [削除] と選択します。

 

 

deploy-docker-container-17

(クリックして拡大)

deploy-docker-container-17

e. ロードバランサーを削除します。

  • 左側のパネルから [ロードバランサー] を選択します。
  • サービスのために作成したロードバランサー (「EC2Contai-EcsElast」で始まる名前) の横にあるチェックボックスをオンにします
  • 右クリックして [削除] を選択します。

 

deploy-docker-container-19a

(クリックして拡大)

deploy-docker-container-19a

おめでとうございます。Amazon Elastic Container Service (Amazon ECS) で Docker 対応アプリケーションの設定、デプロイ、削除を行う方法を学びました。Amazon ECS は非常にスケーラブルかつ高性能なコンテナ管理サービスで、Docker コンテナに対応しており、Amazon EC2 インスタンスのマネージド型クラスターでアプリケーションを簡単に実行できます。

Docker 対応アプリケーションを Amazon ECS にデプロイする方法を学びました。次のチュートリアルに進み、Docker Registry を作成してコンテナイメージを保存する方法を学ぶことができます。チュートリアルでは、Docker イメージを構築し、リポジトリにプッシュし、イメージを使用してアプリケーションを Amazon ECS にデプロイします。

Docker レジストリを作成する

はい
いいえ