ECS オートスケーリング
記事
Terraform の設定
オートスケーリングの設定をTerraformで記述する例を以下に示します。この例では、CPU使用率に基づいてECS Fargateサービスのタスク数を自動的にスケーリングするように設定します。
必要なリソース
TerraformでECSサービスのオートスケーリングを設定するには、以下のリソースを定義します。
aws_appautoscaling_target: スケーリングの対象となるECSサービスとタスク数を指定します。aws_appautoscaling_policy: 実際のスケーリングロジック(CPU使用率、目標値など)を定義します。aws_cloudwatch_metric_alarm: (オプション) 詳細な条件でスケーリングを制御する場合に使用します。ターゲット追跡スケーリングポリシーは内部でこれを生成するため、通常は明示的に定義する必要はありません。
Terraform コード例
以下のコードブロックは、aws_ecs_serviceリソースで定義されたECSサービスに対して、CPU使用率が50%になるようにタスク数を調整するオートスケーリング設定の例です。
| |
コードの解説
aws_appautoscaling_target:service_namespace: オートスケーリング対象のAWSサービスを指定します。ECSの場合はecsです。resource_id:service/クラスター名/サービス名の形式で指定します。scalable_dimension: スケーリングする対象のプロパティを指定します。ECSサービスのタスク数の場合はecs:service:DesiredCountです。min_capacity,max_capacity: サービスのタスク数の最小値と最大値を設定します。
aws_appautoscaling_policy:policy_type: スケーリングポリシーのタイプをTargetTrackingScalingに設定します。target_tracking_scaling_policy_configuration: ターゲット追跡スケーリングの詳細設定を記述します。predefined_metric_specification: あらかじめ定義されたCloudWatchメトリクスを指定します。CPU使用率の場合はECSServiceAverageCPUUtilizationを使います。target_value: 目標とするCPU使用率をパーセントで指定します。scale_in_cooldown,scale_out_cooldown: タスクの増減が頻繁に起こるのを防ぐためのクールダウン期間を秒単位で設定します。
このコードをmain.tfなどのファイルに記述し、terraform applyを実行することで、ECSサービスに自動スケーリング設定が適用されます。