対象
やってみる
$ sudo curl -o /usr/local/bin/ecs-cli https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-linux-amd64-latest
$ sudo chmod +x /usr/local/bin/ecs-cli
$ which ecs-cli
- credentialはdirenvで環境変数にセット
- ecs-cliの確認
$ ecs-cli --version
ecs-cli version 1.3.0 (*UNKNOWN)
- キーペアを事前に作っておく
- region/clusterオプションは環境変数にセットでいけた
- region: AWS_DEFAULT_REGION
- cluster: ECS_CLUSTER
- ecs-cliでECSクラスタ起動
$ ecs-cli up --keypair [キーペア名] --capability-iam --size 2 --instance-type t2.micro
INFO[0000] Created cluster cluster=test-cluster region=ap-northeast-1
INFO[0001] Waiting for your cluster resources to be created...
INFO[0001] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS"
INFO[0063] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS"
INFO[0124] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS"
VPC created: vpc-xxxxxxxx
Security Group created: sg-xxxxxxxx
Subnet created: subnet-xxxxxxx1
Subnet created: subnet-xxxxxxx2
Cluster creation succeeded.
Composeでタスクを動かす
$ vi wordpress.yml
wordpress:
image: wordpress
ports:
- "80:80"
links:
- mysql
mysql:
image: mysql
mem_limit: 268435456
environment:
MYSQL_ROOT_PASSWORD: password
$ ecs-cli compose --file wordpress.yml up
INFO[0000] Using ECS task definition TaskDefinition="ecs:2"
INFO[0000] Starting container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress"
INFO[0000] Starting container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql"
INFO[0000] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0000] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0012] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0012] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0025] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0025] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0037] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0037] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0043] Started container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecs:2"
INFO[0043] Started container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecs:2"
- AWSコンソールでタスクを確認
- コンテナ確認
$ ecs-cli ps
Name State Ports TaskDefinition
60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress RUNNING 54.95.194.136:80->80/tcp ecs:2
60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql RUNNING ecs:2
タスクをスケールさせる
$ ecs-cli compose --file wordpress.yml scale 2
INFO[0000] Starting container... container="13dba493-325d-49b6-8493-890621830da4/wordpress"
INFO[0000] Starting container... container="13dba493-325d-49b6-8493-890621830da4/mysql"
INFO[0000] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0000] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0012] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0012] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0024] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0024] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0037] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0037] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecs:2"
INFO[0043] Started container... container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecs:2"
INFO[0043] Started container... container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecs:2"
$ ecs-cli ps
Name State Ports TaskDefinition
13dba493-325d-49b6-8493-890621830da4/mysql RUNNING ecs:2
13dba493-325d-49b6-8493-890621830da4/wordpress RUNNING 54.249.30.126:80->80/tcp ecs:2
60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress RUNNING 54.95.194.136:80->80/tcp ecs:2
60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql RUNNING ecs:2
ECSサービスとして定義する
- ECSサービスとして登録する前に、今上がっているタスクをダウンさせる
$ ecs-cli compose --file wordpress.yml down
INFO[0000] Stopping container... container="13dba493-325d-49b6-8493-890621830da4/mysql"
INFO[0000] Stopping container... container="13dba493-325d-49b6-8493-890621830da4/wordpress"
INFO[0000] Stopping container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress"
INFO[0000] Stopping container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql"
INFO[0000] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=STOPPED lastStatus=RUNNING taskDefinition="ecs:2"
INFO[0000] Describe ECS container status container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=STOPPED lastStatus=RUNNING taskDefinition="ecs:2"
INFO[0000] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=STOPPED lastStatus=RUNNING taskDefinition="ecs:2"
INFO[0000] Describe ECS container status container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=STOPPED lastStatus=RUNNING taskDefinition="ecs:2"
INFO[0006] Stopped container... container="13dba493-325d-49b6-8493-890621830da4/mysql" desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecs:2"
INFO[0006] Stopped container... container="13dba493-325d-49b6-8493-890621830da4/wordpress" desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecs:2"
INFO[0006] Stopped container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress" desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecs:2"
INFO[0006] Stopped container... container="60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql" desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecs:2"
$ ecs-cli ps
Name State Ports TaskDefinition
13dba493-325d-49b6-8493-890621830da4/mysql STOPPED ExitCode: 0 ecs:2
13dba493-325d-49b6-8493-890621830da4/wordpress STOPPED ExitCode: 0 54.249.30.126:80->80/tcp ecs:2
60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/wordpress STOPPED ExitCode: 0 54.95.194.136:80->80/tcp ecs:2
60ca60aa-c320-43e2-8659-ad7d4e8d9cf2/mysql STOPPED ExitCode: 0 ecs:2
$ ecs-cli compose --file wordpress.yml service up
INFO[0000] Using ECS task definition TaskDefinition="ecs:3"
INFO[0000] Created an ECS service service=ecs taskDefinition="ecs:3"
INFO[0000] Updated ECS service successfully desiredCount=1 serviceName=ecs
INFO[0015] Service status desiredCount=1 runningCount=1 serviceName=ecs
INFO[0015] (service ecs) has started 1 tasks: (task 1f26eaa3-940a-4482-8c03-334621156a05). timestamp=2018-02-26 17:09:54 +0000 UTC
INFO[0015] ECS Service has reached a stable state desiredCount=1 runningCount=1 serviceName=ecs
$ ecs-cli ps
Name State Ports TaskDefinition
1f26eaa3-940a-4482-8c03-334621156a05/mysql RUNNING ecs:3
1f26eaa3-940a-4482-8c03-334621156a05/wordpress RUNNING 54.249.30.126:80->80/tcp ecs:3
ECSサービスを削除する
$ ecs-cli compose --file wordpress.yml service rm
INFO[0000] Updated ECS service successfully desiredCount=0 serviceName=ecs
INFO[0000] Service status desiredCount=0 runningCount=1 serviceName=ecs
INFO[0030] Service status desiredCount=0 runningCount=0 serviceName=ecs
INFO[0030] (service ecs) has stopped 1 running tasks: (task 1f26eaa3-940a-4482-8c03-334621156a05). timestamp=2018-02-26 17:13:16 +0000 UTC
INFO[0030] (service ecs) has reached a steady state. timestamp=2018-02-26 17:13:26 +0000 UTC
INFO[0030] ECS Service has reached a stable state desiredCount=0 runningCount=0 serviceName=ecs
INFO[0030] Deleted ECS service service=ecs
INFO[0030] ECS Service has reached a stable state desiredCount=0 runningCount=0 serviceName=ecs
- サービス削除確認
$ ecs-cli down --force
INFO[0000] Waiting for your cluster resources to be deleted...
INFO[0000] Cloudformation stack status stackStatus="DELETE_IN_PROGRESS"
INFO[0066] Cloudformation stack status stackStatus="DELETE_IN_PROGRESS"
INFO[0126] Cloudformation stack status stackStatus="DELETE_IN_PROGRESS"
INFO[0187] Deleted cluster cluster=test-cluster