ECS サービスで設定項目がない Auto Scaling 条件を変更したいときの対処方法

2021.12.24

困っていた内容

ECS サービスに平均CPU使用率を基準とした Auto Scaling を設定していますが、閾値を一回超えただけだとスケールしないようです。一回でも超えたらスケールしたいので、スケール条件の設定項目を確認しましたが該当しそうなものが見当たりません。作った覚えはないのですが、トリガーのような CloudWatch アラームがありました。これを編集すれば良いでのしょうか。

どう対応すればいいの?

ステップスケーリングのご利用をご検討ください。

基本的に Auto Scaling は CloudWatch アラームをトリガーとするため、 編集することでスケール条件(例:閾値の超過数)を変更できます。

しかしながら、利用者が CloudWatch アラームを作成不要なポリシー(ターゲット追跡スケーリング)の場合、CloudWatch アラームは自動作成、管理されるため編集はできません。CloudWatch アラームの条件(スケール条件)部分を編集したい場合は、利用者が CloudWatch アラームを作成し、管理するポリシー「ステップスケーリング」を選択してください。

ターゲット追跡スケーリングポリシー - Amazon Elastic Container Service

ターゲット追跡スケーリングポリシーのために Service Auto Scaling が管理する CloudWatch アラームを編集または削除しないでください。

ECS サービスのスケーリングポリシー

ECS サービスのスケーリングは3種類あります。

  • ターゲット追跡スケーリング
    • 特定のメトリクスのターゲット値に基づいて、サービスが実行するタスク数を増減させます。
    • CloudWatch アラームの作成および管理は Service Auto Scaling が実施します。
  • ステップスケーリング
    • アラーム超過のサイズに応じて変動する一連のスケーリング調整値 (ステップ調整値) に基づいて、サービスが実行するタスク数を増減させます。
    • CloudWatch アラームの作成および管理は利用者が実施します。
  • スケジュールに基づくスケーリング
    • 日付と時刻に基づいてサービスが実行するタスクの数を増減させます。

CPU使用率を基準とする Auto Scaling を設定する場合、ターゲット追跡スケーリングポリシーもしくはステップスケーリングポリシーが選択肢となり、多くのワークロードでは CloudWatch アラームの作成、管理が不要なターゲット追跡スケーリングポリシーが推奨とされています。

しかしながら、ターゲット追跡スケーリングポリシーの場合、CloudWatch アラーム自体は自動的に作成されますが Auto Scaling が管理しているため、編集はサポートされません。

そのため、スケール条件(例:閾値の超過数)を細かく設定したい場合は、CloudWatch アラームの作成、管理が利用者となるステップスケーリングポリシーをご選択ください。

参考資料