継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

ECS Fargate の AutoScaling 設定に関するコマンドをまとめておく

タダです.

AWS CLI で ECS Fargate の AutoScaling 設定をしているのですが,都度調べていたりしたのでよく使うコマンドをまとめておきます.

AutoScaling ポリシーを定義・更新する

AutoScaling ポリシーを定義・更新する時のコマンドとしてput-scaling-policyを使います.ECS の AutoScaling は CPU,メモリ,ターゲットグループごとのリクエスト数を追跡してスケーリングのトリガーにできます.下記のはターゲットグループごとのリクエスト数をベースにしています.そして,AutoScaling のポリシーを参照するには describe-scaling-policies を使い,誤って作ってしまったポリシーを削除するには delete-scaling-policyを使います.

※定義・更新
aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/クラスター名/サービス名 \
--policy-name ポリシー名 \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration file://config.json

※参照
aws application-autoscaling describe-scaling-policies --service-namespace ecs

※削除
aws application-autoscaling delete-scaling-policy --policy-name ポリシー名 --scalable-dimension ecs:service:DesiredCount --resource-id service/クラスター名/サービス名 --service-namespace ecs

なお,put-scaling-policyで指定しているconfig.jsonは次のような定義をいれます.

{
     "TargetValue": 1000.0,
     "PredefinedMetricSpecification": {
         "PredefinedMetricType": "ALBRequestCountPerTarget",
         "ResourceLabel": "app/ELB 名/xxx/targetgroup/ターゲットグループ名/xxx"
     },
     "ScaleOutCooldown": 60,
    "ScaleInCooldown": 60
}

関連情報

awscli.amazonaws.com

awscli.amazonaws.com

awscli.amazonaws.com

スケジューリングで AutoScaling のスケールアウト・スケールインを設定する

AutoScaling をスケジュール設定を入れたい場合があります.特定のイベントやメディア露出が分かっているような時に予めコンテナを増やしたいと言った要求向けの作業です.スケールアウトさせたい時間とスケールインさせたい時間でput-scheduled-actionを使ってMinCapacityの値を変更するスケジュールを登録しておく設定になっています.なお,cronで指定する時間は UTC 時間です.スケーリングの設定の参照はdescribe-scheduled-actionsを使い,削除にはdelete-scheduled-actionを使います.

※スケールアウト
aws application-autoscaling put-scheduled-action \
--service-namespace ecs \
--resource-id service/クラスター名/サービス名 \
--scheduled-action-name スケジューリングの名前 \
--schedule "cron(00 10 ? * * *)" \
--scalable-dimension ecs:service:DesiredCount \
--scalable-target-action MinCapacity=4,MaxCapacity=10

※スケールイン
aws application-autoscaling put-scheduled-action \
--service-namespace ecs \
--resource-id service/クラスター名/サービス名 \
--scheduled-action-name スケジューリングの名前 \
--schedule "cron(00 13 ? * * *)" \
--scalable-dimension ecs:service:DesiredCount \
--scalable-target-action MinCapacity=2,MaxCapacity=10

※スケジュールアクションの参照
aws application-autoscaling describe-scheduled-actions --service-namespace ecs

※削除
aws application-autoscaling delete-scheduled-action \
    --service-namespace ecs \
    --scalable-dimension ecs:service:DesiredCount \
    --resource-id service/クラスター名/サービス名 \
    --scheduled-action-name スケジューリングの名前

関連情報

awscli.amazonaws.com

awscli.amazonaws.com

awscli.amazonaws.com

まとめ

小ネタですが,ECS Fargate の AutoScaling 設定に関するコマンドについて都度調べていたのをまとめておきたくて記事にしました.