Classmethod Scp Limit Fargate CPU Memory
SCPでECS Fargateタスク定義のCPU・メモリ上限を制限してみた
- URL: https://dev.classmethod.jp/articles/scp-limit-fargate-task-definition-cpu-memory/
- 日付: 2026-06-10
- Tier: Tier 2
- 要旨: 2025年2月追加の新IAM条件キー
ecs:task-cpu/ecs:task-memoryを使い、SCPで高スペックなFargateタスク定義のRegisterTaskDefinitionをDenyする方法を検証。すべてのテストケースで期待通りの結果を確認。
詳細
背景
- 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
検証結果
| テスト | cpu | memory | 結果 |
|---|---|---|---|
| しきい値以下 | 1024 | 2048 | ✅ 許可 |
| CPU超過 | 8192 | 2048 | ❌ Deny |
| メモリ超過 | 1024 | 16384 | ❌ Deny |
| 境界値 | 4096 | 8192 | ✅ 許可 |
SCPの条件評価がECSのパラメータ検証より先に行われることも確認(有効なcpu/memory組み合わせでなくてもDenyが返る)