0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[Cloudformation]ECSのServiceを更新したらタスク数が0になった件

Last updated at Posted at 2024-06-25

現状の管理方法

ECSのServiceをCloudformaitonで管理しており、
デプロイ時にaws cloudformation deployを実行しています。

具体的には以下のようなイメージです。

aws cloudformation deploy \
    --template-file template/sample.yml \
    --stack-name sample-ecs-service \
    --parameter-overrides ImageTag=${image_tag} EnvName=${env} DesiredCount=1 \
    --capabilities CAPABILITY_NAMED_IAM \
    --no-fail-on-empty-changeset

発生経緯

元々はECSのタスクは以下のように固定で起動していました。

AutoScalingの導入をするときにスケールアウト中にデプロイすることで
タスク数が変動してしまうことを懸念しDesiredCountのオプションを削除しました。

AutoScaling設定で最小を1 にしているので1は起動する認識でいました。

尚かつデフォルトパラメータで1を指定しているため問題ないだろうと考えてました。

  DesiredCount:
    Type: String
    Default: '1'

事象発生

再度デプロイするとタスク数が0になってしまいました。

切り分けのためCloudformationのStackパラメータ値を確認したところ、
DesiredCountが0になっていました。

cfn0001.png

原因

ECSのService定義でDesiredCountを指定しており、
それが原因のようでした。

     Properties:
       Cluster: !ImportValue
         Fn::Sub: sample-ecs-cluster
-      DesiredCount: !Ref DesiredCount
       LaunchType: 'FARGATE'
       EnableExecuteCommand: true
       PropagateTags: 'TASK_DEFINITION'

Cloudformationのオプション削除だけでは不足しており、
テンプレートファイルの修正も必要でした。

ただ、Default値は1を指定しているため
1が指定されると思ったのですが、
以前のStackの値が引き継がれてしまうような仕様に思えます。
(元々は0指定でした)

まとめ

同じ役割をもつパラメータが複数箇所にあると想定しない挙動することがあるという
ケースでした。

Cloudformaitonの仕様把握不足な部分もありますが、
パラメータ管理は一元管理するようにしていくようにし運用の負担を減らしていきたいですね。

0
0
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
0
0