【AWS】ECS FargateのAutoScalingの設定値をCLIから変更する
概要・Index
ECS Fargateでタスクを停止する方法を探していました。これは、Desired Count(タスクをクラスターに配置して実行状態に保つための数)を0に変更することで達成できます。
要件として、AutoScalingをOnにすること
、業務時間は稼働が保証されていること
を考える必要がありました。
稼働を保証するためには、AutoScalingの設定値にあるタスク最小数
を 同時に1以上にしておけばよいのですがこれだとタスクの完全な停止ができません。Desired Countを0にしてもタスクが復活します。そのため、CLIでタスク最小数
を0にしたり1以上にしたりする方法を調べました。
前提
権限
権限を付与するために、下記ポリシーを作成してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*" ], "Resource": "*" } ] }
使用するCLIのコマンド
コマンドは下記です。
$ export ECS_CLUSTER_NAME={YOUR_ECS_CLUSTER_NAME} $ export ECS_SERVICE_NAME={YOUR_ECS_SERVICE_NAME} $ export MIN_NUM={YOUR_ECS_CLUSTER_NAME} $ export MAX_NUM={YOUR_ECS_SERVICE_NAME} $ aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/${ECS_CLUSTER_NAME}/${ECS_SERVICE_NAME} \ --min-capacity ${MIN_NUM} \ --max-capacity ${MAX_NUM}
結果
実行コマンド
$aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/${ECS_CLUSTER_NAME}/${ECS_SERVICE_NAME} \ --min-capacity 0\ --max-capacity 5
変更前
変更後