メニュー
Amazon EC2 Container Service
開発者ガイド (API Version 2014-11-13)

Amazon ECS の使用開始

Amazon ECS コンソールを使用してタスク定義を作成し、タスクをスケジューリングして、クラスターを設定するところから Amazon EC2 Container Service (Amazon ECS) を始めましょう。

オプションで Amazon EC2 Container Registry (Amazon ECR) イメージリポジトリを作成してそこにイメージをプッシュできます。Amazon ECR の詳細については、Amazon EC2 Container Registry ユーザーガイドを参照してください。

まず、Amazon ECS は Amazon ECS で開始するプロセスをガイドするウィザードを実行します。ウィザードはクラスター作成のオプションを提供し、サンプルのウェブアプリケーションを起動します。Amazon ECS で起動する Docker イメージが既にある場合は、代わりにそのイメージを使用してタスク定義を作成し、クラスターで使用することもできます。

重要

開始する前に、「Amazon ECS でのセットアップ」のステップを完了したこと、および AWS ユーザーに「Amazon ECS 初回実行ウィザード」の IAM ポリシー例で指定されている必要なアクセス権限があることを確認します。

Amazon ECS 初回実行ウィザードの設定オプションを選択します。

  1. Amazon ECS コンソールの初回実行ウィザード (https://console.aws.amazon.com/ecs/home#/firstRun) を開きます。

  2. Amazon ECS 初回実行オプションを選択します。

     設定オプションを選択する

    Amazon ECS クラスターを作成して、そこにコンテナアプリケーションをデプロイするには、一番上のオプションを選択します。Amazon ECR リポジトリを作成し、そこにイメージをプッシュして Amazon ECS タスク定義で使用するには、一番下のオプションを選択します。続行するには、[Continue] を選択します。

  3. Amazon ECR リポジトリの作成を選択している場合、初回実行ウィザードの次の 2 つのセクション、[Configure repository] および [Build, tag, and push Docker image] を完了させます。Amazon ECR リポジトリを作成しない場合は、スキップして「タスク定義を作成する」に進んでください。

リポジトリの設定

リポジトリは Amazon ECR で Docker イメージを保存する場所です。Amazon ECR からイメージをプッシュまたはプルするたびに、Docker にイメージをプッシュまたはプルするレジストリおよびリポジトリの場所を指定します。

  • [Repository name] に、リポジトリの一意の名前を入力し、[Next step] を選択します。

Docker イメージの構築、タグ付け、プッシュ

ウィザードのこのセクションでは、Docker CLI を使用して既存のローカルイメージ (Dockerfile から構築したもの、または Docker Hub などの別のレジストリから取得したもの) にタグを付け、そのタグ付きイメージを Amazon ECR レジストリにプッシュします。

  1. コンソールからターミナルウィンドウに aws ecr get-login コマンドを貼り付けて、Docker クライアントをレジストリに対して認証するために使用できる docker login コマンドを取得します。

    注記

    get-login コマンドは AWS CLI のバージョン 1.9.15 以降で利用できます。ただし、Docker の最新バージョン (17.06 以降) を使用している場合は、バージョン 1.11.91 以降をお勧めします。AWS CLI のバージョンは、aws --version コマンドを使用して確認できます。Docker のバージョン 17.06 以降を使用している場合は、get-login の後に --no-include-email オプションを含めます。Unknown options: --no-include-email エラーが返された場合は、AWS CLI の最新バージョンをインストールします。詳細については、AWS Command Line Interface ユーザーガイド の「AWS コマンドラインインターフェイスのインストール」を参照してください。

  2. 前のステップで返された docker login コマンドを実行します。このコマンドは、12 時間有効な認証トークンを提供します。

    重要

    docker login コマンドを実行すると、システムの他のユーザーがプロセスリスト表示 (ps -e) でコマンド文字列を確認できるようになります。docker login コマンドには認証情報が含まれているため、システムの他のユーザーがこのようにして認証情報を表示し、それを使ってレポジトリへのプッシュおよびプル権限を取得するリスクがあります。安全なシステムを使用していない場合は、このリスクを考慮してください。-p password オプションを省略してインタラクティブにログインし、求められたときにパスワードを入力することを検討してください。

  3. (オプション) イメージがプッシュする Dockerfile がある場合、コンソールからターミナルウィンドウに docker build コマンドを貼り付けてイメージを構築し、新しいレポジトリ用にタグを付けます。Dockerfile と同じディレクトリであることを確認します。

  4. コンソールからターミナルウィンドウに docker tag コマンドを貼り付けて、ECR レジストリと新しいレポジトリ用のイメージにタグを付けます。コンソールコマンドでは、前のステップの Dockerfile からイメージが構築されたことを前提とします。Dockerfile からイメージを構築していない場合は、repository:latest の最初のインスタンスを、プッシュするローカルイメージのイメージ ID またはイメージ名と置き換えます。

  5. docker push コマンドをターミナルウィンドウに貼り付けて、新しくタグ付けされたイメージを ECR レポジトリにプッシュします。

  6. [Done] を選択します。

タスク定義を作成する

タスク定義は、アプリケーションの設計図のようなものです。Amazon ECS でタスクを起動するたびにタスク定義を指定して、コンテナで使用する Docker イメージ、タスクに使用するコンテナ数、各コンテナへのリソース割り当てをサービスが理解できるようにします。

  1. タスク定義パラメーターを設定します。

    初回実行ウィザードがタスク定義とともに事前ロードされ、コンソールに定義された simple-app コンテナが表示されます。オプションで、コンテナ名を選択して表示された値を編集することで、タスク定義の名前の変更、またはコンテナで使用されているリソース (CPU ユニットやメモリ制限など) の確認および編集ができます (CPU ユニットは [Advanced container configuration] メニューの中にあります)。初回実行ウィザードで作成されるタスク定義は、単純化するために単一コンテナに限定されています。後で Amazon ECS コンソールで複数コンテナタスク定義を作成できます。

    注記

    タスク定義に Amazon ECR イメージを使用している場合、Amazon ECR イメージには完全 registry/repository:tag 名前付けを使用してください。たとえば、aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest です。

    これらのタスク定義パラメーターがそれぞれ実行する内容の詳細については、「タスク定義パラメーター」を参照してください。

  2. [Next step] を選択して続行します。

サービスを設定する

ウィザードのこのセクションでは、タスク定義から作成された Amazon ECS サービスをどのように設定するか選択します。サービスはクラスターのタスク定義のコピーを指定数分起動し、維持します。[Amazon ECS sample] アプリケーションは、ウェブベースの「Hello World」スタイルのアプリケーションです。つまり無限に実行され続けるため、これをサービスとして実行すると、タスクに異常があったり予期せずに停止した場合は再起動します。

  1. [Service Name] フィールドで、サービスの名前を選択します。

  2. [Desired number of tasks] フィールドに、指定したタスク定義で起動するタスクの数を入力します。

    注記

    タスク定義に静的ポートマッピングが含まれている場合、ウィザードの次のセクションで起動するコンテナインスタンス数はここで指定するタスク数以上である必要があります。

  3. (オプション) サービスでアプリケーションロードバランサーを使用するように選択できます。ロードバランサーを使用するように設定されたサービスからタスクを起動すると、タスクが起動されたコンテナインスタンスがロードバランサーとともに登録され、ロードバランサーからのトラフィックがロードバランサー内のインスタンスに分散されます。詳細については、「アプリケーションロードバランサーの概要」を参照してください。

    重要

    Application Load Balancer が AWS リソースに存在する間、コストが発生します。Application Load Balancer の料金の詳細については、Application Load Balancer 料金表を参照してください。

    次のステップを完了して、サービスでロードバランサーを使用します。

    1. [Application load balancing] セクションで [Container name : container port : protocol] メニューを選択してから、[simple-app:80:tcp] を選択します。ここでのデフォルト値は、サンプルアプリケーション用にセットアップされていますが、ロードバランサー用に異なるリスナーオプションを設定できます。詳細については、「サービスロードバランシング」を参照してください。

    2. [Service IAM Role] セクションで [Select IAM role for service] メニューを選択し、作成済みの既存の Amazon ECS サービス (ecsServiceRole) ロールを選択するか、[Create new role] をクリックしてサービスに必要な IAM ロールを作成します。

  4. ロードバランサーの設定を確認して、[Next Step] をクリックします。

クラスターを設定する

ウィザードのこのセクションでは、クラスターに命名し、タスクを配置できるコンテナインスタンス、インスタンスおよびロードバランサーに到達できるアドレス範囲、および IAM ロールを設定し、コンテナインスタンスで使用して Amazon ECS がこの設定を管理できるようにします。

  1. [Cluster name] フィールドで、クラスターの名前を選択します。

  2. [EC2 instance type] フィールドで、コンテナインスタンスで使用するインスタンスタイプを選択します。より多くの CPU およびメモリリソースを持つインスタンスタイプは、より多くのタスクを処理できます。異なるインスタンスタイプの詳細については、Amazon EC2 インスタンスを参照してください。

  3. [Number of instances] フィールドに、タスクを配置するためにクラスターで起動する Amazon EC2 インスタンスの数を入力します。クラスターにインスタンスが多いほど、配置できるタスクも多くなります。Amazon EC2 インスタンスが AWS リソースに存在する間は、料金が発生します。詳細については、「Amazon EC2 料金表」を参照してください。

    注記

    Amazon ECS sample アプリケーションのように、コンテナポートをコンテナインスタンスポートで開く必要タスクを複数持つサービスを作成した場合、ここで少なくともその数のインスタンスを指定する必要があります。

  4. コンテナインスタンスで使用するキーペアの名前を選択します。これはインスタンスに SSH でログインするために必要です。キーペアをここで指定しない場合、SSH を使用してコンテナインスタンスに接続できません。キーペアがない場合は、https://console.aws.amazon.com/ec2/ の Amazon EC2 コンソールで作成できます。

  5. (オプション) [Security Group] セクションで、インスタンスへのアクセスを制限できる CIDR ブロックを選択できます。デフォルト値 (Anywhere) では、インターネット全体からアクセスできます。

  6. [Container instance IAM role] セクションで、作成済みの既存の Amazon ECS サービス (ecsInstanceRole) ロールを選択するか、[Create new role] を選択してコンテナインスタンスに必要な IAM ロールを作成します。

  7. [Review and Launch] をクリックして続行します。

確認

  1. タスク定義、タスク設定、およびクラスター設定を確認して、[Launch Instance & Run Service] をクリックすると完了です。[Launch Status] ページに進みます。このページでは、起動ステータスが示され、プロセスの各ステップについて説明されます (Auto Scaling グループが作成されて入力されるまでに数分かかる場合があります)。

  2. 起動が完了すると、[View service] を選択して Amazon ECS コンソールにサービスを表示できます。