Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

チュートリアル: Amazon ECS CLI を使用して EC2 タスクのクラスターを作成する

このチュートリアルでは、EC2 起動タイプを使用してクラスターをセットアップし、タスクをデプロイする方法を示します。

前提条件

以下の前提条件を満たしてください。

ステップ 1: Amazon ECS CLI; の設定

このチュートリアルを開始する前に、Amazon ECS CLI をインストールして設定する必要があります。詳細については、「Amazon ECS CLI のインストール」を参照してください。

Amazon ECS CLI では、ユーザーに代わって API リクエストを作成するために認証情報が必要です。これは、環境変数、AWS プロファイル、または Amazon ECS プロファイルから認証情報をプルできます。詳細については、「Amazon ECS CLI の設定」を参照してください。

Amazon ECS CLI 設定を作成するには

  1. クラスター設定を作成します。

    ecs-cli configure --cluster ec2-tutorial --default-launch-type EC2 --config-name ec2-tutorial --region us-west-2
  2. アクセスキーとシークレットキーを使用してプロファイルを作成します。

    ecs-cli configure profile --access-key AWS_ACCESS_KEY_ID --secret-key AWS_SECRET_ACCESS_KEY --profile-name ec2-tutorial-profile

ステップ 2: クラスターを作成する

最初に行うアクションは、ecs-cli up コマンドを使用して、コンテナを起動する Amazon ECS コンテナインスタンスのクラスターを作成することです。このコマンドでクラスターを設定する際に選択できるオプションはいろいろありますが、ほとんどは任意です。この例では、SSH アクセス用の id_rsa キーペア (お客様のキーペアに置き換えてください) を使用する 2 つの t2.medium コンテナインスタンスの簡単なクラスターを作成します。

デフォルトでは、コンテナインスタンス用に作成するセキュリティグループはインバウンドトラフィック用にポート 80 を開きます。--port オプションを使用して異なるポートを指定して開くか、より複雑なセキュリティグループが必要な場合は、--security-group オプションを使用して既存のセキュリティグループを使用するように指定できます。

ecs-cli up --keypair id_rsa --capability-iam --size 2 --instance-type t2.medium --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

このコマンドは、リソースが作成されるため、完了までに数分かかる場合があります。これでクラスターができたので、Docker 構成ファイルを作成してデプロイできます。

ステップ 3: 構成ファイルを作成する

このステップでは、シンプルな PHP ウェブアプリケーションを作成するシンプルな Docker 構成ファイルを作成します。現時点で、Amazon ECS CLI では、Docker 構成ファイル構文 のバージョン 1、2、3 がサポートされています。このチュートリアルでは、Docker Compose バージョン 3 を使用します。

これが docker-compose.yml という構成ファイルです。web コンテナはウェブサーバーへのインバウンドトラフィックようにポート 80 を開いてコンテナインスタンスに接続します。コンテナのログ記録設定も定義されます。

version: '3' services: web: image: amazon/amazon-ecs-sample ports: - "80:80" logging: driver: awslogs options: awslogs-group: ec2-tutorial awslogs-region: us-west-2 awslogs-stream-prefix: web

Docker Compose バージョン 3 形式を使用する場合は、CPU とメモリの仕様を別々に指定する必要があります。以下の内容で ecs-params.yml という名前のファイルを作成します。

version: 1 task_definition: services: web: cpu_shares: 100 mem_limit: 524288000

ステップ 4: クラスターに設定ファイルをデプロイする

構成ファイルを作成した後は、ecs-cli compose up コマンドを使用してクラスターにデプロイできます。デフォルトでは、このコマンドは現在のディレクトリで docker-compose.yml という名前の compose ファイルと ecs-params.yml という名前のオプションの ECS parameters ファイルを検索します。ただし、--file オプションを使用して、別のファイルを指定することもできます。デフォルトでは、このコマンドで作成されたリソースはタイトルに現在のディレクトリが入っています。ただし、--project-name project_name オプションを使用してこれを上書きできます。--create-log-groups オプションはコンテナログの CloudWatch ロググループを作成します。

ecs-cli compose up --create-log-groups --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

ステップ 5: クラスターの実行中のコンテナを確認する

設定ファイルをデプロイした後は、ecs-cli ps コマンドを使用してクラスターで実行されているコンテナを確認できます。

ecs-cli ps --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

出力:

Name State Ports TaskDefinition Health ec2-tutorial/53c943778bf048ce954a6cb96425adeb/web RUNNING 54.201.208.32:80->80/tcp ecscompose:1 UNKNOWN

上記の例では、構成ファイルから web コンテナ、およびウェブサーバーの IP アドレスとポートを確認できます。ウェブブラウザでそのアドレスを指定すると、PHP ウェブアプリケーションが表示されます。

ステップ 6: クラスターのタスクをスケーリングする

ecs-cli compose scale コマンドを使用してタスクの数をスケールアップし、アプリケーションのインスタンスを増やすことができます。この例では、アプリケーションの数を 2 に増やすことができます。

ecs-cli compose scale 2 --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

これでクラスターにさらに 2 つのコンテナが表示されます。

ecs-cli ps --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

出力:

Name State Ports TaskDefinition Health ec2-tutorial/53c943778bf048ce954a6cb96425adeb/web RUNNING 54.201.208.32:80->80/tcp ecscompose:1 UNKNOWN ec2-tutorial/9451480d53534a129fe6794941ad63dc/web RUNNING 52.43.118.109:80->80/tcp ecscompose:1 UNKNOWN

ステップ 7: 設定ファイルから ECS サービスを作成する

これで、コンテナが正常に動作し、障害が発生したり停止した場合は置き換えられることを確認できました。ecs-cli compose service up コマンドを使用して構成ファイルからサービスを作成することで、これを実行できます。このコマンドは、最新の構成ファイルからタスク定義を作成し (まだ存在しない場合)、それを使用して、必要な数を 1 とする ECS サービスを作成します。

サービスを開始する前に、ecs-cli compose down コマンドを使用して構成ファイルからコンテナを停止し、作業するクラスターを空にします。

ecs-cli compose down --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

これでサービスを作成できるようになります。

ecs-cli compose service up --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

ステップ 8: (オプション) ウェブアプリケーションを表示する

ウェブブラウザにタスクの IP アドレスを入力すると、シンプルな PHP App ウェブアプリケーションを表示するウェブページが表示されます。

ステップ 9: クリーンアップ

このチュートリアルを完了したら、余分な請求が発生しないようにリソースをクリーンアップします。まず、既存のコンテナを停止させてそれ以降のタスクを実行しないように、サービスを削除します。

ecs-cli compose service rm --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile

次に、クラスターを停止します。こうすることで、前に ecs-cli up コマンドで作成したリソースをクリーンアップします。

ecs-cli down --force --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile