ECS サービスのデプロイ可用性設定の確認

ECS のデプロイ時に必要な正常タスク数と余剰容量を併せて確認してください。

説明

ECS サービスは、デプロイや置き換え中も必要な数の正常なタスクを維持することで、サービス停止を抑えられます。デプロイ設定、ヘルスチェック、実行容量が合わないと、タスクが不足したりデプロイが進まなくなったりする場合があります。deployment_configuration を省略してもサービスの既定値が適用されるため、省略だけで実行中のタスクがないとは判断できません。

想定される影響

  • デプロイ中に処理容量が減ったり、サービスが一時的に停止したりする可能性があります。
  • 新しいタスクを配置する余裕がないと、デプロイや障害復旧が遅れる場合があります。

対処方法

  • サービスのデプロイ方式に合わせて desired_count、minimum_healthy_percent、maximum_percent を確認してください。割合を実際のタスク数に換算し、必要な正常タスク数と置き換え用の容量を確保してください。
  • 配置制約、クラスター容量、ヘルスチェックを併せて確認し、運用条件でデプロイを試してください。

例

EC2 上で動くレプリカサービスのローリングデプロイを想定しています。クラスター、タスク定義、配置制約を満たすインスタンスが必要です。

変更前

yaml
- name: ECS 서비스 생성
  community.aws.ecs_service:
    state: present
    name: test-service
    cluster: test-cluster
    task_definition: test-task-definition
    desired_count: 3
    placement_constraints:
      - type: memberOf
        expression: "attribute:flavor==test"
    placement_strategy:
      - type: binpack
        field: memory

タスク数は 3 を要求し、デプロイの割合は明示していません。実際の既定値と利用できる容量を確認してください。

変更後

yaml
- name: ECS 서비스 생성
  community.aws.ecs_service:
    state: present
    name: test-service
    cluster: test-cluster
    task_definition: test-task-definition
    desired_count: 3
    deployment_configuration:
      minimum_healthy_percent: 75
      maximum_percent: 150
    placement_constraints:
      - type: memberOf
        expression: "attribute:flavor==test"
    placement_strategy:
      - type: binpack
        field: memory

希望タスク数が 3 の場合、最小値 75% は切り上げて 3、最大値 150% は切り捨てて 4 になります。この設定を利用するには、タスクを 1 つ追加できる容量が必要です。

参考資料