本文へスキップ
hdknr blog
戻る

AWS: ECS

更新日:

ECS オートスケーリング

記事

Terraform の設定

オートスケーリングの設定をTerraformで記述する例を以下に示します。この例では、CPU使用率に基づいてECS Fargateサービスのタスク数を自動的にスケーリングするように設定します。


必要なリソース

TerraformでECSサービスのオートスケーリングを設定するには、以下のリソースを定義します。


Terraform コード例

以下のコードブロックは、aws_ecs_serviceリソースで定義されたECSサービスに対して、CPU使用率が50%になるようにタスク数を調整するオートスケーリング設定の例です。

# ECSサービスを定義 (この例では、既存サービスを想定)
# resource "aws_ecs_service" "main" {
#   name = "my-ecs-service"
#   ...
# }

# 1. オートスケーリングの対象を定義
resource "aws_appautoscaling_target" "ecs_target" {
  service_namespace  = "ecs"
  resource_id        = "service/my-cluster/my-ecs-service" # サービス名に合わせて変更
  scalable_dimension = "ecs:service:DesiredCount"
  min_capacity       = 1  # 最小タスク数
  max_capacity       = 10 # 最大タスク数
}

# 2. ターゲット追跡スケーリングポリシーを定義
resource "aws_appautoscaling_policy" "cpu_scaling_policy" {
  name               = "cpu-utilization-scaling-policy"
  service_namespace  = "ecs"
  resource_id        = aws_appautoscaling_target.ecs_target.resource_id
  scalable_dimension = aws_appautoscaling_target.ecs_target.scalable_dimension
  policy_type        = "TargetTrackingScaling"

  target_tracking_scaling_policy_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ECSServiceAverageCPUUtilization"
    }

    target_value = 50.0 # CPU使用率の目標値(%)
    scale_in_cooldown  = 300 # スケールイン(タスク減少)のクールダウン期間(秒)
    scale_out_cooldown = 60  # スケールアウト(タスク増加)のクールダウン期間(秒)
  }
}

コードの解説

このコードをmain.tfなどのファイルに記述し、terraform applyを実行することで、ECSサービスに自動スケーリング設定が適用されます。



前の記事
Django: asgiref
次の記事
Terraform