hero_picture
Cover Image for ECSのスケジュールされたスケールアウト・イン設定

ECSのスケジュールされたスケールアウト・イン設定

2025/01/09

こんにちはクラウドソリューション事業部の本田です。2025年1発目のブログです。
本年もどうぞよろしくお願いいたします。

今日はECSでスケジュールされた日時で、台数を増やすスケールアウトと台数を減らすスケールインの設定を書いていきます。

背景

ECサイトのセールなどで特定の時間からアクセスが増えるなどがわかっていれば事前に、サーバー側のリソースを増やしておくことが有効です。Autoscalingで対応はできますが、アクセスの集中にリソースがスケールアウトが間に合わず、ということがありますので、事前に予定がわかっていれば増やしておくのが良いです。今回はECSですので、そちらの設定をしていきます。

スケールアウトとスケールインを、AWSコンソールとAWS CLIそれぞれで設定する方法を説明します。

AWSコンソールから設定する

コンソールからの設定は以下の場所にあります。以前はAWS CLIやEventBridgeを使用する必要がありましたが、現在はECSのコンソールから直接設定可能です。

設定箇所は、Amazon Elastic Container Service > クラスター > 対象クラスター >サービス >対象サービス >サービスの自動スケーリング > スケジュールされたアクションを作成から作成します。

スケールアウト

指定した時間に最小タスクと、タスクの最大数を変更します。タイムゾーンの設定ができるのでわかりやすいですね。この設定で時間になると、サービスの設定にある、サービスの自動スケーリングの最小タスクと最大タスクが変わります。画像の例でいくと、最小タスクが2、最大タスクが10になります。

繰り返しの設定を入れるとcronでの定期実行が可能です。

スケールイン

お次はスケールインの設定で、最低台数を減らします。時間になると最小タスクが1、最大タスクが2になります。共に0にして稼働するタスク0にしてしまい、テスト環境などで夜間・休日はコストを減らすという使い方もできますね。

AWS CLIで設定する

AWS CLIでの設定も書いておきます。こちらECSの設定ではありますが、利用するのはApplication Auto Scalingのコマンドになります。

スケールアウト

1aws application-autoscaling put-scheduled-action \
2--service-namespace ecs \
3--resource-id service/対象クラスター/対象サービス \
4--scheduled-action-name test-scale-out-at-once \
5--schedule "at(2025-01-10T23:00:00)" \
6--timezone "Asia/Tokyo" \
7--scalable-dimension ecs:service:DesiredCount \
8--scalable-target-action MinCapacity=2,MaxCapacity=10

この設定では、2025年1月10日23時に最小タスク数と最大タスク数が変更されます。timezoneをつけ忘れると、UTCの時間で設定されます。コマンドの例でいくと、2025年1月10日23時の9時間後、2025年1月11日8時の設定になりますので要注意です。

スケールインの設定は、MinCapacityとMaxCapacityの値を変えるだけです。

スケールアウト(cron式)

cronでの設定方法も残しておきます。

1aws application-autoscaling put-scheduled-action \
2--service-namespace ecs \
3--resource-id service/対象クラスター/対象サービス \
4--scheduled-action-name test-scale-out-cron \
5--schedule "cron(00 19 * * ? *)" \
6--timezone "Asia/Tokyo" \
7--start-time 2025-01-10T19:00+09:00 \
8--scalable-dimension ecs:service:DesiredCount \
9--scalable-target-action MinCapacity=2,MaxCapacity=3

毎日19時に最小タスクと最大タスクを変更するような設定です。start-timeを入れておかないと、初回実行がされませんので、後から初回実行も追加できますが注意が必要です。

最後に

夜間、休日は停止をさせてコストの最適化、またはサービスの特性上、日中は利用者が多いなどわかっていれば最小タスク数を増やしておくなどの使い方もできますので、これらの設定を活用して、ぜひ運用効率を向上させてみてください!


👉️ AWS Graviton のことなら acCloud にお任せください!
👉️ AWS Graviton のことなら acCloud にお任せください!