コンテンツにスキップ
Classmethod Scp Limit Fargate CPU Memory

SCPでECS Fargateタスク定義のCPU・メモリ上限を制限してみた

詳細

背景

  • 2024年11月にFargate上限が最大16vCPU/120GiBに拡張
  • 意図しない高スペックなタスク定義登録によるコスト増リスク

SCPポリシー設計

{
  "Sid": "DenyLargeFargateCPU",
  "Effect": "Deny",
  "Action": "ecs:RegisterTaskDefinition",
  "Condition": {
    "NumericGreaterThan": {
      "ecs:task-cpu": "4096"
    }
  }
}

(メモリ側も同様にDenyLargeFargateMemory)

設計ポイント

  • ecs:RegisterTaskDefinitionに限定: タスク定義はイミュータブルなので登録時点で制御
  • NumericGreaterThan: しきい値一致は許可、超過のみDeny。条件キー不存在時はマッチしない
  • 条件キー型: ecs:task-cpuはCPU units(1024=1vCPU)、ecs:task-memoryはMiB

検証結果

テストcpumemory結果
しきい値以下10242048✅ 許可
CPU超過81922048❌ Deny
メモリ超過102416384❌ Deny
境界値40968192✅ 許可

SCPの条件評価がECSのパラメータ検証より先に行われることも確認(有効なcpu/memory組み合わせでなくてもDenyが返る)