LoginSignup
3
2

More than 3 years have passed since last update.

ecs-cli

Last updated at Posted at 2020-06-03

ただの作業メモ

ecs-cliインストール


$ sudo curl -o /usr/local/bin/ecs-cli https://amazon-ecs-cli.s3.amazonaws.com/ecs-cli-darwin-amd64-latest

$ sudo chmod +x /usr/local/bin/ecs-cli
$ ecs-cli --version
ecs-cli version 1.19.1 (a20cf74)

ecs-cli設定

既存クラスタの設定


$ ecs-cli configure --cluster tmp --default-launch-type FARGATE --config-name tmp --region  ap-northeast-1
INFO[0000] Saved ECS CLI cluster configuration tmp. 

$ ecs-cli ps
tmp/a84d9e85f592485093c3079c2f545731/log_router  RUNNING         example-firelens:5  UNKNOWN
tmp/a84d9e85f592485093c3079c2f545731/echoClient  RUNNING         example-firelens:5  UNKNOWN

その他手順

タスク定義変更

メモリを0.5GB->1.0GB


$ cat ecs-params.yml
version: 1
task_definition:
  task_execution_role: arn:aws:iam::380900262471:role/container-demo-ECSTaskExecutionRole-11E15F6FQ4LK0
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 1.0GB
    cpu_limit: 256
run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - "subnet-04ae449a78ae0e9db"
        - "subnet-0e78e9b63b1b5d766"
        - "subnet-0c799d4a80156b236"
      security_groups:
        - "sg-08c5535a1025d630f"
      assign_public_ip: DISABLED
$ecs-cli compose --project-name ecsdemo-frontend up     --cluster-config container-demo
INFO[0001] Using ECS task definition                     TaskDefinition="ecsdemo-frontend:2"
INFO[0002] Starting container...                         container=5079778a-b223-4560-97d6-d20e3a68a164/ecsdemo-frontend
INFO[0002] Describe ECS container status                 container=5079778a-b223-4560-97d6-d20e3a68a164/ecsdemo-frontend desiredStatus=RUNNING lastStatus=PROVISIONING taskDefinition="ecsdemo-frontend:2"
INFO[0015] Describe ECS container status                 container=5079778a-b223-4560-97d6-d20e3a68a164/ecsdemo-frontend desiredStatus=RUNNING lastStatus=PROVISIONING taskDefinition="ecsdemo-frontend:2"
INFO[0028] Describe ECS container status                 container=5079778a-b223-4560-97d6-d20e3a68a164/ecsdemo-frontend desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecsdemo-frontend:2"
INFO[0041] Started container...                          container=5079778a-b223-4560-97d6-d20e3a68a164/ecsdemo-frontend desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecsdemo-frontend:2"

タスク定義のrevision2が増えた

スクリーンショット 0002-06-05 9.14.04.png

タスク数変更

3->1に変更

$ ecs-cli compose --project-name ecsdemo-frontend service scale 1 --cluster-config container-demo
INFO[0001] Updated ECS service successfully              desiredCount=1 force-deployment=false service=ecsdemo-frontend
INFO[0001] Service status                                desiredCount=1 runningCount=3 serviceName=ecsdemo-frontend
INFO[0016] (service ecsdemo-frontend) has begun draining connections on 2 tasks.  timestamp="2020-06-05 00:21:40 +0000 UTC"
INFO[0016] (service ecsdemo-frontend) deregistered 2 targets in (target-group arn:aws:elasticloadbalancing:us-west-2:380900262471:targetgroup/conta-Dummy-1WSAQNY1HLA5Y/e3853fd9df7d3590)  timestamp="2020-06-05 00:21:40 +0000 UTC"
INFO[0022] Service status                                desiredCount=1 runningCount=1 serviceName=ecsdemo-frontend
INFO[0022] (service ecsdemo-frontend) has stopped 2 running tasks: (task deb83674-e824-47bc-81e2-5f2c6e78b627) (task 7bbb5734-e89f-4252-bd6e-668f42020cdb).  timestamp="2020-06-05 00:21:52 +0000 UTC"
INFO[0022] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=ecsdemo-frontend

タスク/コンテナ停止

$  ecs-cli compose --project-name ecsdemo-frontend service scale 0 --cluster-config container-demo
INFO[0001] Updated ECS service successfully              desiredCount=0 force-deployment=false service=ecsdemo-frontend
INFO[0001] Service status                                desiredCount=0 runningCount=3 serviceName=ecsdemo-frontend
INFO[0022] (service ecsdemo-frontend) has begun draining connections on 3 tasks.  timestamp="2020-06-05 23:27:17 +0000 UTC"
INFO[0022] (service ecsdemo-frontend) deregistered 3 targets in (target-group arn:aws:elasticloadbalancing:us-west-2:380900262471:targetgroup/conta-Dummy-1WSAQNY1HLA5Y/e3853fd9df7d3590)  timestamp="2020-06-05 23:27:17 +0000 UTC"
INFO[0033] Service status                                desiredCount=0 runningCount=0 serviceName=ecsdemo-frontend
INFO[0033] (service ecsdemo-frontend) has stopped 3 running tasks: (task e2fda2c5-7260-4938-b30f-1a6c114fabe4) (task 722bbc2c-0efb-489e-b040-7aedf2a52a43) (task a8d250bf-71f7-4b7f-ac09-9d0c40d811c2).  timestamp="2020-06-05 23:27:29 +0000 UTC"
INFO[0033] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=ecsdemo-frontend
f018984101a4:ecsdemo-frontend umakoto$ ecs-cli compose --project-name ecsdemo-frontend service ps \
>     --cluster-config container-demo
Name                                                   State                Ports                        TaskDefinition      Health
722bbc2c-0efb-489e-b040-7aedf2a52a43/ecsdemo-frontend  STOPPED ExitCode: 0  10.0.102.211:3000->3000/tcp  ecsdemo-frontend:4  UNKNOWN
a8d250bf-71f7-4b7f-ac09-9d0c40d811c2/ecsdemo-frontend  STOPPED ExitCode: 0  10.0.101.253:3000->3000/tcp  ecsdemo-frontend:4  UNKNOWN
e2fda2c5-7260-4938-b30f-1a6c114fabe4/ecsdemo-frontend  STOPPED ExitCode: 0  10.0.100.131:3000->3000/tcp  ecsdemo-frontend:4  UNKNOWN

タスク/コンテナ起動

$  ecs-cli compose --project-name ecsdemo-frontend service scale 3 --cluster-config container-demo
INFO[0001] Updated ECS service successfully              desiredCount=3 force-deployment=false service=ecsdemo-frontend
INFO[0006] (service ecsdemo-frontend) has started 3 tasks: (task 71408cb4-8d26-4967-93a6-1157f29a63fd) (task 4b76792c-07ce-413e-b573-dc27080d7489) (task a3ca5d35-2973-4080-aac9-3fee4dba1b3b).  timestamp="2020-06-05 23:29:11 +0000 UTC"
INFO[0064] Service status                                desiredCount=3 runningCount=2 serviceName=ecsdemo-frontend
INFO[0069] Service status                                desiredCount=3 runningCount=3 serviceName=ecsdemo-frontend
INFO[0069] ECS Service has reached a stable state        desiredCount=3 runningCount=3 serviceName=ecsdemo-frontend
f018984101a4:ecsdemo-frontend umakoto$ ecs-cli compose --project-name ecsdemo-frontend service ps     --cluster-config container-demo
Name                                                   State                Ports                        TaskDefinition      Health
4b76792c-07ce-413e-b573-dc27080d7489/ecsdemo-frontend  RUNNING              10.0.102.213:3000->3000/tcp  ecsdemo-frontend:4  UNKNOWN
71408cb4-8d26-4967-93a6-1157f29a63fd/ecsdemo-frontend  RUNNING              10.0.101.236:3000->3000/tcp  ecsdemo-frontend:4  UNKNOWN
a3ca5d35-2973-4080-aac9-3fee4dba1b3b/ecsdemo-frontend  RUNNING              10.0.100.126:3000->3000/tcp  ecsdemo-frontend:4  UNKNOWN
722bbc2c-0efb-489e-b040-7aedf2a52a43/ecsdemo-frontend  STOPPED ExitCode: 0  3000->3000/tcp               ecsdemo-frontend:4  UNKNOWN
a8d250bf-71f7-4b7f-ac09-9d0c40d811c2/ecsdemo-frontend  STOPPED ExitCode: 0  3000->3000/tcp               ecsdemo-frontend:4  UNKNOWN
e2fda2c5-7260-4938-b30f-1a6c114fabe4/ecsdemo-frontend  STOPPED ExitCode: 0  3000->3000/tcp               ecsdemo-frontend:4  UNKNOWN
f018984101a4:ecsdemo-frontend umakoto$ 

params.ymlの更新

params.ymlの中のタスク定義部分を更新
そのあとで以下のcompose service upを実施すると、タスク定義のrevisionが4->5になり、ECSのサービスが新しいタスク定義で更新されます。古いコンテナーは自動的に停止され、新しいコンテナーに置き換えられます

ecs-cli compose --project-name ecsdemo-frontend service up   --private-dns-namespace service       --cluster-config container-demo     --vpc $vpc
config container-demo     --vpc $vpc
INFO[0001] Using ECS task definition                     TaskDefinition="ecsdemo-frontend:5"
INFO[0002] Updated the ECS service with a new task definition. Old containers will be stopped automatically, and replaced with new ones  desiredCount=3 force-deployment=false service=ecsdemo-frontend
INFO[0002] Service status                                desiredCount=3 runningCount=3 serviceName=ecsdemo-frontend
INFO[0018] (service ecsdemo-frontend) has started 3 tasks: (task 0a423400-fdd8-446f-b056-a7a462a07e72) (task 21430037-5b4f-45e3-a1b5-4dae69c01f16) (task 2fde5c1f-2f29-4ee2-b3e3-4bd698156851).  timestamp="2020-06-05 23:40:11 +0000 UTC"
INFO[0075] Service status                                desiredCount=3 runningCount=5 serviceName=ecsdemo-frontend
INFO[0081] Service status                                desiredCount=3 runningCount=6 serviceName=ecsdemo-frontend
INFO[0081] (service ecsdemo-frontend) registered 1 targets in (target-group arn:aws:elasticloadbalancing:us-west-2:380900262471:targetgroup/conta-Dummy-1WSAQNY1HLA5Y/e3853fd9df7d3590)  timestamp="2020-06-05 23:41:13 +0000 UTC"
INFO[0091] (service ecsdemo-frontend) registered 2 targets in (target-group arn:aws:elasticloadbalancing:us-west-2:380900262471:targetgroup/conta-Dummy-1WSAQNY1HLA5Y/e3853fd9df7d3590)  timestamp="2020-06-05 23:41:26 +0000 UTC"
INFO[0117] (service ecsdemo-frontend) deregistered 3 targets in (target-group arn:aws:elasticloadbalancing:us-west-2:380900262471:targetgroup/conta-Dummy-1WSAQNY1HLA5Y/e3853fd9df7d3590)  timestamp="2020-06-05 23:41:57 +0000 UTC"
INFO[0117] (service ecsdemo-frontend) has begun draining connections on 3 tasks.  timestamp="2020-06-05 23:41:57 +0000 UTC"
INFO[0128] Service status                                desiredCount=3 runningCount=3 serviceName=ecsdemo-frontend
INFO[0133] (service ecsdemo-frontend) has stopped 3 running tasks: (task 4b76792c-07ce-413e-b573-dc27080d7489) (task a3ca5d35-2973-4080-aac9-3fee4dba1b3b) (task 71408cb4-8d26-4967-93a6-1157f29a63fd).  timestamp="2020-06-05 23:42:07 +0000 UTC"
INFO[0144] ECS Service has reached a stable state        desiredCount=3 runningCount=3 serviceName=ecsdemo-frontend

リビジョン指定(タスク)

リビジョン4

$ cat ecs-params-4.yml 
version: 7
task_definition:
  task_execution_role: arn:aws:iam::380900262471:role/container-demo-ECSTaskExecutionRole-11E15F6FQ4LK0
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 1.0GB
    cpu_limit: 256
run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - "subnet-04ae449a78ae0e9db"
        - "subnet-0e78e9b63b1b5d766"
        - "subnet-0c799d4a80156b236"
      security_groups:
        - "sg-08c5535a1025d630f"
      assign_public_ip: DISABLED

リビジョン5

$ cat ecs-params-5.yml 
version: 7
task_definition:
  task_execution_role: arn:aws:iam::380900262471:role/container-demo-ECSTaskExecutionRole-11E15F6FQ4LK0
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 0.5GB
    cpu_limit: 256
run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - "subnet-04ae449a78ae0e9db"
        - "subnet-0e78e9b63b1b5d766"
        - "subnet-0c799d4a80156b236"
      security_groups:
        - "sg-08c5535a1025d630f"
      assign_public_ip: DISABLED

ecs-cli compose --project-name ecsdemo-frontend --ecs-params ecs-params-5.yml up     --cluster-config container-demo 

revition5, revision6は作った。次にecs-params-6.ymlを作り上記コマンド実行。revition7が出来た。(一度revision6を作ってしまってrevisionの解除をしてたので1つ飛んでしまった。まぁいいや)

$ ecs-cli compose --project-name ecsdemo-frontend --ecs-params ecs-params-6.yml up     --cluster-config container-demo 
INFO[0001] Using ECS task definition                     TaskDefinition="ecsdemo-frontend:7"
INFO[0001] Found existing ECS tasks for project          CountOfTasks=1 ProjectName=ecsdemo-frontend
INFO[0001] Updating to new task definition               taskDefinition="arn:aws:ecs:us-west-2:380900262471:task-definition/ecsdemo-frontend:7"
INFO[0002] Describe ECS container status                 container=8a13bb04-6605-4d1c-b9b6-205b039665a0/ecsdemo-frontend desiredStatus=STOPPED lastStatus=RUNNING taskDefinition="ecsdemo-frontend:4"
INFO[0002] Describe ECS container status                 container=e235f2a5-491a-4dc3-8a79-0e549d125fd9/ecsdemo-frontend desiredStatus=RUNNING lastStatus=PROVISIONING taskDefinition="ecsdemo-frontend:7"
INFO[0016] Describe ECS container status                 container=8a13bb04-6605-4d1c-b9b6-205b039665a0/ecsdemo-frontend desiredStatus=STOPPED lastStatus=DEPROVISIONING taskDefinition="ecsdemo-frontend:4"
INFO[0016] Describe ECS container status                 container=e235f2a5-491a-4dc3-8a79-0e549d125fd9/ecsdemo-frontend desiredStatus=RUNNING lastStatus=PROVISIONING taskDefinition="ecsdemo-frontend:7"
INFO[0029] Describe ECS container status                 container=e235f2a5-491a-4dc3-8a79-0e549d125fd9/ecsdemo-frontend desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecsdemo-frontend:7"
INFO[0029] Stopped container...                          container=8a13bb04-6605-4d1c-b9b6-205b039665a0/ecsdemo-frontend desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecsdemo-frontend:4"
INFO[0041] Started container...                          container=e235f2a5-491a-4dc3-8a79-0e549d125fd9/ecsdemo-frontend desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecsdemo-frontend:7"

revision4に戻す

$ ecs-cli compose --project-name ecsdemo-frontend --ecs-params ecs-params-4.yml up     --cluster-config container-demo 

リビジョン指定(サービス)

タスクの時と同様にリビジョンごとのecs-params.ymlを用意した。ecs-cli compose service upにそれぞれ引数として渡せればいいができない。

ドキュメントにはないが、以下のコマンドはecs-params.ymlがないと Error registering task definitionとエラーが出る。ecs-params.ymlに書かれたタスク定義をロードしようとしてるっぽいことは確認できた。

明示的に引数でecs-params.ymlの指定できないので、指定したいリビジョンのファイルのシンボリックリンクをecs-params.ymlの名前にしておく。それで指定したリビジョンのタスク定義でECSサービスを更新できる。

ecs-cli compose --project-name ecsdemo-frontend service up   --private-dns-namespace service       --cluster-config container-demo     --vpc $vpc

コマンド

ecs-cli compose up

Amazon ECS タスク定義が存在しない場合は、Compose ファイルから作成し、そのタスクの 1 つのインスタンスをクラスターで実行します

AWS公式のecs-cliハンズオン

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2