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

Amazon ECS CLI チュートリアル

この簡単なチュートリアルでは、Amazon ECS CLI のいくつかの異なるコマンドおよび機能を示します。このチュートリアルを開始するまえに、Amazon ECS CLI をインストールして設定する必要があります。詳細については、「Amazon ECS CLI のインストール」を参照してください。

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

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

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

Copy
ecs-cli up --keypair id_rsa --capability-iam --size 2 --instance-type t2.medium

出力:


INFO[0000] Created cluster                               cluster=ecs-cli-demo
INFO[0000] Waiting for your cluster resources to be created
INFO[0001] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
INFO[0061] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
INFO[0121] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
INFO[0182] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS

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

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

このステップでは、ウェブサーバーおよび MySQL データベースで構成される WordPress アプリケーションを作成するシンプルな Docker 構成ファイルを作成します。現時点で、Amazon ECS CLI では、Docker 構成ファイル構文のバージョン 1 と 2 がサポートされています。

以下のパラメーターが、Amazon ECS CLI 用の構成ファイルでサポートされています。

  • command

  • cpu_shares

  • dns

  • dns_search

  • entrypoint

  • environment: 構成ファイルで環境変数値が指定されていないが、シェル環境に存在する場合、シェル環境変数値が、関連付けられたタスクまたはサービス用に作成されたタスク定義に渡されます。

    重要

    認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。

  • env_file

    重要

    認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。

  • extra_hosts

  • hostname

  • image

  • labels

  • links

  • log_driver (構成ファイルバージョン 1 のみ)

  • log_opt (構成ファイルバージョン 1 のみ)

  • logging (構成ファイルバージョン 2 のみ)

    • driver

    • options

  • mem_limit (バイト単位)

  • mem_reservation (バイト単位)

  • ports

  • privileged

  • read_only

  • security_opt

  • ulimits

  • user

  • volumes

  • volumes_from

  • working_dir

重要

build ディレクティブは現在サポートされていません。

Docker 構成ファイル構文の詳細については、Docker ドキュメントの構成ファイルのリファレンスを参照してください。

これが hello-world.yml という構成ファイルです。各コンテナには 100 CPU ユニットおよび 500 MiB のメモリがあります。wordpress コンテナはウェブサーバーへのインバウンドトラフィックようにポート 80 を開いてコンテナインスタンスに接続します。

Copy
version: '2' services: wordpress: image: wordpress cpu_shares: 100 mem_limit: 524288000 ports: - "80:80" links: - mysql mysql: image: mysql cpu_shares: 100 mem_limit: 524288000 environment: MYSQL_ROOT_PASSWORD: password

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

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

Copy
ecs-cli compose --file hello-world.yml up

出力:

INFO[0000] Using ECS task definition                     TaskDefinition=ecscompose-docker-compose:2
INFO[0000] Starting container...                         container=340488e0-a307-4322-b41c-99f1b70e97f9/wordpress
INFO[0000] Starting container...                         container=340488e0-a307-4322-b41c-99f1b70e97f9/mysql
INFO[0000] Describe ECS container status                 container=340488e0-a307-4322-b41c-99f1b70e97f9/wordpress desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-docker-compose:2
INFO[0000] Describe ECS container status                 container=340488e0-a307-4322-b41c-99f1b70e97f9/mysql desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-docker-compose:2
INFO[0054] Started container...                          container=340488e0-a307-4322-b41c-99f1b70e97f9/wordpress desiredStatus=RUNNING lastStatus=RUNNING taskDefinition=ecscompose-docker-compose:2
INFO[0054] Started container...                          container=340488e0-a307-4322-b41c-99f1b70e97f9/mysql desiredStatus=RUNNING lastStatus=RUNNING taskDefinition=ecscompose-docker-compose:2

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

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

Copy
ecs-cli ps

出力:

Name                                            State    Ports                     TaskDefinition
340488e0-a307-4322-b41c-99f1b70e97f9/wordpress  RUNNING  52.89.204.137:80->80/tcp  ecscompose-docker-compose:2
340488e0-a307-4322-b41c-99f1b70e97f9/mysql      RUNNING                            ecscompose-docker-compose:2

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

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

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

Copy
ecs-cli compose --file hello-world.yml scale 2

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

Copy
ecs-cli ps

出力:

Name                                            State    Ports                     TaskDefinition
340488e0-a307-4322-b41c-99f1b70e97f9/wordpress  RUNNING  52.89.204.137:80->80/tcp  ecscompose-docker-compose:2
340488e0-a307-4322-b41c-99f1b70e97f9/mysql      RUNNING                            ecscompose-docker-compose:2
f80d82d5-3724-4f2f-86b1-5ee5891ce995/mysql      RUNNING                            ecscompose-docker-compose:2
f80d82d5-3724-4f2f-86b1-5ee5891ce995/wordpress  RUNNING  52.89.205.89:80->80/tcp   ecscompose-docker-compose:2

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

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

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

Copy
ecs-cli compose --file hello-world.yml down

出力:

INFO[0000] Stopping container...                         container=340488e0-a307-4322-b41c-99f1b70e97f9/wordpress
INFO[0000] Stopping container...                         container=340488e0-a307-4322-b41c-99f1b70e97f9/mysql
INFO[0000] Stopping container...                         container=f80d82d5-3724-4f2f-86b1-5ee5891ce995/mysql
INFO[0000] Stopping container...                         container=f80d82d5-3724-4f2f-86b1-5ee5891ce995/wordpress
INFO[0000] Describe ECS container status                 container=f80d82d5-3724-4f2f-86b1-5ee5891ce995/mysql desiredStatus=STOPPED lastStatus=RUNNING taskDefinition=ecscompose-docker-compose:2
INFO[0000] Describe ECS container status                 container=f80d82d5-3724-4f2f-86b1-5ee5891ce995/wordpress desiredStatus=STOPPED lastStatus=RUNNING taskDefinition=ecscompose-docker-compose:2
INFO[0000] Describe ECS container status                 container=340488e0-a307-4322-b41c-99f1b70e97f9/wordpress desiredStatus=STOPPED lastStatus=RUNNING taskDefinition=ecscompose-docker-compose:2
INFO[0000] Describe ECS container status                 container=340488e0-a307-4322-b41c-99f1b70e97f9/mysql desiredStatus=STOPPED lastStatus=RUNNING taskDefinition=ecscompose-docker-compose:2
INFO[0006] Stopped container...                          container=340488e0-a307-4322-b41c-99f1b70e97f9/wordpress desiredStatus=STOPPED lastStatus=STOPPED taskDefinition=ecscompose-docker-compose:2
INFO[0006] Stopped container...                          container=340488e0-a307-4322-b41c-99f1b70e97f9/mysql desiredStatus=STOPPED lastStatus=STOPPED taskDefinition=ecscompose-docker-compose:2
INFO[0006] Stopped container...                          container=f80d82d5-3724-4f2f-86b1-5ee5891ce995/mysql desiredStatus=STOPPED lastStatus=STOPPED taskDefinition=ecscompose-docker-compose:2
INFO[0006] Stopped container...                          container=f80d82d5-3724-4f2f-86b1-5ee5891ce995/wordpress desiredStatus=STOPPED lastStatus=STOPPED taskDefinition=ecscompose-docker-compose:2

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

Copy
ecs-cli compose --file hello-world.yml service up

出力:

INFO[0000] Using ECS task definition                     TaskDefinition=ecscompose-docker-compose:2
INFO[0000] Created an ECS Service                        serviceName=ecscompose-service-docker-compose taskDefinition=ecscompose-docker-compose:2
INFO[0000] Updated ECS service successfully              desiredCount=1 serviceName=ecscompose-service-docker-compose
INFO[0000] Describe ECS Service status                   desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker-compose
INFO[0015] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=ecscompose-service-docker-compose

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

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

Copy
ecs-cli compose --file hello-world.yml service rm

出力:

INFO[0000] Updated ECS service successfully              desiredCount=0 serviceName=ecscompose-service-docker-compose
INFO[0000] Describe ECS Service status                   desiredCount=0 runningCount=1 serviceName=ecscompose-service-docker-compose
INFO[0015] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=ecscompose-service-docker-compose
INFO[0015] Deleted ECS service                           service=ecscompose-service-docker-compose
INFO[0015] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=ecscompose-service-docker-compose

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

Copy
ecs-cli down --force

出力:

INFO[0000] Waiting for your cluster resources to be deleted
INFO[0000] Cloudformation stack status                   stackStatus=DELETE_IN_PROGRESS
INFO[0061] Cloudformation stack status                   stackStatus=DELETE_IN_PROGRESS
INFO[0121] Deleted cluster                               cluster=ecs-cli-demo