たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【AWS】ECS FargateのAutoScalingの設定値をCLIから変更する

f:id:c_taquna:20200728213252p:plain

概要・Index

ECS Fargateでタスクを停止する方法を探していました。これは、Desired Count(タスクをクラスターに配置して実行状態に保つための数)を0に変更することで達成できます。

要件として、AutoScalingをOnにすること業務時間は稼働が保証されていることを考える必要がありました。

稼働を保証するためには、AutoScalingの設定値にあるタスク最小数を 同時に1以上にしておけばよいのですがこれだとタスクの完全な停止ができません。Desired Countを0にしてもタスクが復活します。そのため、CLIタスク最小数を0にしたり1以上にしたりする方法を調べました。

前提

  • AWS CLI v2を使用
  • デプロイ自体はマネジメントコンソールから実施
  • アカウントは作成して、必要な権限しかつけていない

権限

権限を付与するために、下記ポリシーを作成してください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "application-autoscaling:*"
            ],
            "Resource": "*"
        }
    ]
}

docs.aws.amazon.com

使用する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}

awscli.amazonaws.com

結果

実行コマンド

$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

変更前

f:id:c_taquna:20200912020040p:plain

変更後

f:id:c_taquna:20200912015804p:plain