AWS Auto ScalingのターミネーションポリシーTermination Policyは、スケーリングイン(インスタンスの削減)が必要になったときに、どのインスタンスを終了させるかを決定するルールです。これをうまく設定することで、不要なコストやサービス停止のリスクを抑えられます。
✅ 主要なターミネーションポリシー
Auto Scalingは以下の順番でポリシーを評価します(複数指定可):
-
OldestInstance
→ 最も古いインスタンスから終了。Blue/Greenデプロイ後の旧インスタンスの削除などに有効。 -
NewestInstance
→ 最も新しいインスタンスを終了。テスト目的で新規起動したインスタンスを優先的に削除したいときなど。 -
OldestLaunchConfiguration
→ 最も古いLaunch Configurationを使用しているインスタンスを終了。Launch Configの切り替え後の整理などに。 -
ClosestToNextInstanceHour
→ 次の請求時間に最も近いインスタンスを終了。時間単位の料金が適用されるインスタンスタイプに有効。 -
Default(AZバランス)
→ 各アベイラビリティゾーンのバランスを維持しつつ、ランダムで選択される。 -
OldestLaunchTemplate
→ 最も古いLaunch Template(バージョン)を使っているインスタンスを終了。 -
AllocationStrategy(スポットFleet用)
→ スポットインスタンス使用時の割当戦略。
🎯 ポリシーの設定場所
Auto Scalingグループの作成または変更時に、CLI/コンソール/CloudFormationなどから以下のように設定します:
例(AWS CLI):
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name my-asg \
--termination-policies "OldestInstance" "ClosestToNextInstanceHour"
💡補足
- 複数ポリシーを設定した場合は、上から順に評価され、条件に合致するインスタンスが対象になります。
- ターミネーションポリシーはスケーリングイン時のみ有効です(スケーリングアウト=インスタンスの追加時には関係しません)。