ECSでのデプロイでコケる原因ざっくりまとめ

5881 ワード

前提知識もそこそこにチャレンジした結果
ハマって色々勉強になったので簡単にまとめます。
自分がはまったところ、主にタスク周り中心です。

環境

イメージとしては以下のような感じです。

docker-compose

GitHubActions→ESR
+
ecspresso

ALB

ECS
+
EC2

RDS

awsの管理はterraformで行なっています。

ECSのタスク入れ替えが落ち着く時間

自分がはまったポイントとしてはecspresso deploy実行時なぜか以下のように
タスク定義の入れ替えがループして落ちるというものでした。

2022/05/02 09:25:49 test-service/sample-ecs-cluster Registering a new task definition...
2022/05/02 09:25:49 test-service/sample-ecs-cluster Task definition is registered test-service:98
2022/05/02 09:25:49 test-service/sample-ecs-cluster service attributes will not change
2022/05/02 09:25:49 test-service/sample-ecs-cluster desired count: 1
2022/05/02 09:25:49 test-service/sample-ecs-cluster Updating service tasks...
2022/05/02 09:25:52 test-service/sample-ecs-cluster Waiting for service stable...(it will take a few minutes)
2022/05/02 09:26:03 test-service/sample-ecs-cluster  PRIMARY test-service:98 desired:1 pending:0 running:1
2022/05/02 09:26:03 test-service/sample-ecs-cluster   ACTIVE test-service:89 desired:1 pending:0 running:1
2022/05/02 09:25:54 (service test-service) has started 1 tasks: (task xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx).
2022/05/02 09:26:13 test-service/sample-ecs-cluster  PRIMARY test-service:98 desired:1 pending:0 running:1
2022/05/02 09:26:13 test-service/sample-ecs-cluster   ACTIVE test-service:89 desired:1 pending:0 running:1
2022/05/02 09:26:04 (service test-service) registered 1 targets in (target-group arn:aws
:elasticloadbalancing:ap-northeast-1:***:targetgroup/sample-http/xxxxxxxxxxxxxxx
)
2022/05/02 09:25:54 (service test-service) has started 1 tasks: (task xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx).
2022/05/02 09:26:23 test-service/sample-ecs-cluster  PRIMARY test-service:98 desired:1 pending:0 running:1
2022/05/02 09:26:23 test-service/sample-ecs-cluster   ACTIVE test-service:89 desired:1 pending:0 running:1
2022/05/02 09:26:04 (service test-service) registered 1 targets in (target-group arn:aws
:elasticloadbalancing:ap-northeast-1:***:targetgroup/sample-http/xxxxxxxxxxxxxxx
)

解決法

単純にecspressoのconfig.yamlのtimeoutをデフォルトの10分に伸ばしたら
6分30秒くらいでエラーなく通りました。

原因

おそらく他にも原因を色々探っていたのでどこかのタイミングでtimeoutをいじってしまっていたのがこのループの原因でした。
ecspresso deployの解説ページに詳細を書いてくださっていたので助かりました。