Auto Scaling グループのスタンバイを利用した EC2 停止→起動の手順を確認してみた

Auto Scaling グループのスタンバイを利用した EC2 停止→起動の手順を確認してみた

Auto Scaling グループのインスタンスをスタンバイから復旧する際、操作の順序を誤ると意図しない新規インスタンスが起動されてしまう場合があります。今回、この挙動を実際に検証し、正しい復旧手順をご紹介します。
2026.08.19

はじめに

Auto Scaling グループ(以下、ASG)配下の EC2 インスタンスをメンテナンスする際、一時的にスタンバイ状態にして作業し、終わったら InService に戻すという運用があります。

AWS re:Post のナレッジセンターにも基本的な手順が紹介されています。

https://repost.aws/ja/knowledge-center/reboot-autoscaling-group-instance

このとき、スタンバイから元に戻す手順の順序を誤ると、意図しない新規インスタンスが起動されてしまい、元のインスタンスを戻せなくなるケースがあります。今回はこの挙動を実際に検証してみました。

前提:スタンバイ状態にするまでの準備

検証に入る前に、スタンバイ状態にするまでの準備と前提知識を整理します。

環境

ASG test-standby-asg を以下の設定で作成し、EC2 インスタンスが 1 台 InService で起動している状態からスタートします。

  • 希望するキャパシティ(以下、希望容量):1
  • 最小キャパシティ:1
  • 最大キャパシティ:1

ASGのインスタンス管理タブ InService 1台の初期状態

最小キャパシティの変更が必要

インスタンスをスタンバイに設定する際、希望容量は自動的にデクリメントされます。デクリメント後の希望容量が最小キャパシティを下回る場合はエラーになるため、最小=1・希望=1 の状態ではスタンバイにできません。

スタンバイ設定時のエラーメッセージ min-size制約違反

AutoScalingGroup test-standby-asg has min-size=1, max-size=1, and desired-size=1. To place into standby 1 instance, please update the AutoScaling sizes appropriately.

そのため、あらかじめ最小キャパシティを 0 に変更してからスタンバイに設定します。

ASGのグループサイズ編集画面 最小を0に変更

最小=0 に変更後、スタンバイに設定すると正常に EnteringStandby になりました。

インスタンス管理タブ EnteringStandby状態

スタンバイ中に EC2 を停止しても新規インスタンスは起動されない

スタンバイ中のインスタンスはヘルスチェックの対象外です。EC2 コンソールから停止しても、ASG は新規インスタンスを起動しません。

EC2コンソール インスタンス停止操作

ASGキャパシティの概要 希望0 スケーリング制限0-1

メンテナンス作業(停止→起動等)を終え、EC2 のステータスチェックに合格した状態から、復旧手順の検証に進みます。

検証:復旧手順の順序で挙動が変わるか

スタンバイから元の状態に戻すには、以下の 2 つの操作が必要です。

  1. インスタンスを InService に戻す
  2. ASG の最小キャパシティを 1 に戻す

この順序の違いで挙動がどう変わるかを検証しました。

パターンA:ASG 設定変更を先にする(NG)

先に ASG のグループサイズを元に戻します。希望容量が 0 のままだと最小を 1 にできない(バリデーションエラー)ため、希望容量も 1 にして更新します。

グループサイズ編集画面 バリデーションエラー

グループサイズ編集画面 希望1 最小1 最大1に更新

更新した結果、インスタンスが 2 台になってしまいました。元のインスタンスは Standby のまま、新たに Pending 状態のインスタンスが起動されています。

インスタンス管理タブ Standbyと新規Pendingの2台

スタンバイのインスタンスは ASG のメンバーではありますが、希望容量のカウントには含まれません。そのため ASG は「InService が 0 台」と判断し、希望容量=1 を満たすために新規インスタンスを起動したわけです。

さらに、元のインスタンスを InService に戻そうとしてもエラーになります。

InService設定時のエラーメッセージ max-size制約違反

AutoScalingGroup test-standby-asg has min-size=1, max-size=1, and desired-size=1. To place in service 1 instance, please update the AutoScaling sizes appropriately.

新しいインスタンスが InService として存在しているため、最大=1 の制約に引っかかり、元のインスタンスを戻せません。

パターンA の結果:意図しない新規インスタンスが起動され、元のインスタンスを InService に戻せなくなった。


パターンB:InService に戻すのを先にする(OK)

環境をリセットし、同じスタンバイ状態(希望容量=0、スケーリング制限 0-1、インスタンス 1 台が Standby)から開始します。

ASGキャパシティの概要 希望0 Standby1台の初期状態

先にインスタンスを InService に戻します。

InServiceに設定する操作

インスタンス管理タブ Pending状態

InService に戻りました。注目すべき点は、希望容量が自動的に 0 → 1 にインクリメントされていることです。

ASGキャパシティの概要 希望するキャパシティが自動的に1に復帰

公式ドキュメントにも、InService に戻すと希望容量がインクリメントされると記載されています。

https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-enter-exit-standby.html

After you put the instance back in service, the desired capacity is incremented to reflect how many instances are in the Auto Scaling group.

その後、グループサイズの編集から最小キャパシティを 1 に戻します。

グループサイズ編集画面 最小キャパシティを1に変更

最終状態:希望容量=1、スケーリング制限 1-1、元のインスタンス 1 台が InService で正常に復旧できました。

最終状態 希望1 最小1 最大1 InService1台で正常復旧

パターンB の結果:元のインスタンスのまま正常に復旧できた。

まとめ

手順 結果
ASG 設定変更(希望容量+最小を 1 に戻す)→ InService NG:新規インスタンスが起動され、元のインスタンスを戻せなくなる
InService → ASG 設定変更(最小を 1 に戻す) OK:元のインスタンスのまま正常復旧

ポイントは以下の通りです。

  • スタンバイのインスタンスは ASG の希望容量にカウントされない
  • 希望容量を先に上げると、ASG は InService が足りないと判断して新規インスタンスを起動する
  • InService に戻す操作は希望容量を自動でインクリメントするため、先に実行すれば新規起動は発生しない

参考になれば幸いです。

参考情報

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事