Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

インスタンスの休止

インスタンスを休止すると、オペレーティングシステムに休止を実行するように合図します (ディスクの停止)。これにより、内容がインスタンスのメモリ (RAM) から Amazon EBS ルートボリュームに保存されます。インスタンスの Amazon EBS ルートボリュームとアタッチされた Amazon EBS データボリュームは保持されます。インスタンスを再開すると、Amazon EBS ルートボリュームは以前の状態に復元され、RAM の内容が再ロードされて、過去にインスタンスで実行されていたプロセスが再開されます。以前にアタッチされたデータボリュームは再アタッチされ、インスタンスはそのインスタンス ID を保持します。

インスタンスは、休止が有効になっており休止の前提条件を満たしている場合のみ、休止状態にすることができます。現在、休止がサポートされているのは Amazon Linux のみです。

インスタンスまたはアプリケーションが、ブートストラップし、メモリフットプリントを構築して完全に生産性を発揮するのに時間がかかる場合は、休止を使用してインスタンスを「事前ウォーミング」できます。インスタンスを「事前ウォーミング」するには、インスタンスを起動し、目的の状態にしてから、必要に応じて同じ状態で再開できるようにして、休止します。

インスタンスが stopped 状態にあるときは、休止されているインスタンスの使用料は課金しません。RAM の内容が Amazon EBS ルートボリュームに転送されるときは (休止せずにインスタンスを停止するときとは異なり)、インスタンスが stopping 状態にある間、インスタンスの使用量に対して課金します。データ転送料金に対して使用料を課金しませんが、RAM の内容のストレージを含め、Amazon EBS ボリュームのストレージに対しては課金します。

インスタンスが必要なくなった場合、stopped (休止) 状態にある場合を含め、いつでも終了することができます。詳細については、「インスタンスの終了」を参照してください。

重要

現在、休止は Windows インスタンスではサポートされていません。

休止の概要

次の図は、休止処理の基本的な概要を示しています。


    			休止フローの概要

実行中のインスタンスを休止すると、次の処理が実行されます。

  • 休止プロセスを開始すると、インスタンスは stopping 状態に移行します。オペレーティングシステムに休止を実行するように合図します (ディスクの停止)。これにより、すべての処理をフリーズし、RAM の内容を Amazon EBS ルートボリュームに保存してから、通常のシャットダウンを実行します。

  • シャットダウンプロセスが完了した後、インスタンスは stopped 状態に移行します。

  • Amazon EBS ボリュームはインスタンスに接続されたままとなり、保存された RAM の内容を含め、データは保持されます。

  • ほとんどの場合、インスタンスを再起動すると、インスタンスを停止して再起動するときと同様に、新しい基盤となるホストコンピュータに移行されます。

  • インスタンスを再開すると、インスタンスが起動し、オペレーティングシステムが Amazon EBS ルートボリュームから RAM の内容を読み取り、プロセスのフリーズを解除してから以前の状態に復元します。

  • インスタンスの休止および再起動時に、インスタンスにはプライベート IPv4 アドレスと任意の IPv6 アドレスが保持されます。インスタンスの再起動時に、パブリック IPv4 アドレスを解放し、新しいアドレスを割り当てます。

  • インスタンスには関連付けられた Elastic IP アドレスが保持されます。休止されているインスタンスに関連付けられた Elastic IP アドレスに対して課金されます。EC2-Classic を利用した場合、インスタンスを休止すると、Elastic IP アドレスとインスタンスの関連付けが解除されます。詳細については、「EC2-Classic」を参照してください。

  • ClassicLink インスタンスを休止すると、今までリンクされていた VPC とのリンクが解除されます。インスタンスを再起動した後に再び VPC にリンクする必要があります。詳細については、「ClassicLink」を参照してください。

休止と再起動、停止、および終了の違いについては、「再起動、停止、休止、終了の違い」を参照してください。

休止の前提条件

インスタンスを休止するには、以下の前提条件を設定する必要があります。

  • インスタンスファミリー: 次のインスタンスファミリーがサポートされます。C3、C4、C5、M3、M4、M5、R3、R4、および R5 (RAM が 150 GB 未満)。*.metal インスタンスでは休止はサポートされません。

  • インスタンス RAM サイズ: インスタンスの RAM サイズは 150 GB 未満である必要があります。

  • サポート対象の AMI: 次の AMI は休止をサポートします。2018 年 11 月 16 日以降にリリースされた Amazon Linux AMI 2018.03。

    Amazon Linux 2 は間もなくサポートされるようになります。休止は HVM AMI でのみサポートされています。独自の AMI が休止をサポートするように設定するには、「休止をサポートするように既存の AMI を設定する」を参照してください。

  • ルートボリュームタイプ: インスタンスのルートボリュームは、インスタンスストアボリュームではなく Amazon EBS ボリュームである必要があります。

  • Amazon EBS ルートボリュームサイズ: ルートボリュームは、RAM の内容を保存し、OS またはアプリケーションなど、予想される使用量に対応できる大きさである必要があります。休止を有効にすると、RAM を保存するために起動時にルートボリュームでスペースが割り当てられます。

  • Amazon EBS ルートボリュームの暗号化: 休止を使用するには、休止時にメモリにある機密性の高いコンテンツを保護するため、ルートボリュームを暗号化する必要があります。RAM データが Amazon EBS のルートボリュームに移動されるときは、常に暗号化されます。ルートボリュームの暗号化は、インスタンスの起動時に適用されます。ルートボリュームが暗号化された Amazon EBS ボリュームであるように、インスタンスを起動するために使用する AMI を暗号化する必要があります。詳細については、「コピー時に暗号化されていないイメージを暗号化する」を参照してください。

  • 起動時に休止を有効にする: 起動時に、Amazon EC2 コンソールまたは AWS CLI を使用して休止を有効にします。既存のインスタンス (実行中または停止状態) で休止を有効にすることはできません。詳細については、「インスタンスの休止の有効化」を参照してください。

  • 購入オプション: この機能は オンデマンドインスタンス および リザーブドインスタンス でのみ使用できます。詳細については、「中断した スポットインスタンス の休止」を参照してください。

制約事項

以下のアクションは、休止ではサポートされません。

  • 休止したインスタンスのタイプまたはサイズを変更する

  • 休止が有効にされているインスタンスからスナップショットまたは AMI を作成する

  • 休止したインスタンスからスナップショットまたは AMI を作成する

instance store-backed インスタンスは停止または休止できません。*

RAM が 150 GB を超えるインスタンスを休止することはできません。

Auto Scaling グループであるインスタンスまたは Amazon ECS が使用中のインスタンスを休止することはできません。インスタンスが Auto Scalingグループにあり、そのインスタンスを休止しようとしている場合、Amazon EC2 Auto Scaling サービスは停止したインスタンスを異常と判断し、そのインスタンスを終了して代わりのインスタンスを起動する場合があります。詳細については、『Amazon EC2 Auto Scaling User Guide』の「Auto Scaling インスタンスのヘルスチェック」を参照してください。

60 日間以上にわたる休止はサポートしていません。60 日より長くインスタンスを保持するには、休止したインスタンスを再起動し、インスタンスを停止して、再起動する必要があります。

当社では、継続的にプラットフォームをアップグレードやセキュリティパッチで更新しており、休止されている既存のインスタンスと競合する可能性があります。シャットダウンまたは再起動を実行して、必要なアップグレードやセキュリティパッチを適用できるように、休止されているインスタンスの再起動が必要な重要な更新については通知します。

*休止が有効にされている C3 および R3 インスタンスには、インスタンスストアボリュームを使用しないでください。

休止をサポートするように既存の AMI を設定する

独自の AMI を使用して起動したインスタンスを休止するには、最初に休止を有効にするように AMI を設定する必要があります。詳細については、「インスタンスソフトウェアの更新」を参照してください。

いずれかの 対応 AMI を使用している場合、またはいずれかの 対応AMI に基づいて AMI を作成する場合は、休止をサポートするように設定する必要はありません。サポートされる AMI は、休止をサポートするように事前に設定されています。

Amazon Linux AMI が休止をサポートするように設定するには (AWS CLI)

  1. 次のコマンドを使用して、最新のカーネル 4.14.77-70.59 以降に更新します。

    sudo yum update kernel
  2. 次のコマンドを使用してリポジトリから ec2-hibinit-agent パッケージをインストールします。

    sudo yum install ec2-hibinit-agent
  3. インスタンスを再起動します。

  4. 次のコマンドを実行して、カーネルバージョンが 4.14.77-70.59 以降に更新されていることを確認します。

    uname -a
  5. インスタンスを停止し、AMI を作成します。詳細については、「インスタンスからの Linux AMI の作成」を参照してください。

インスタンスの休止の有効化

インスタンスを休止するには、最初に休止を有効にする必要があります。起動時に、コンソールまたはコマンドラインを使用して休止を有効にします。既存のインスタンス (実行中または停止状態) の休止を有効にすることはできません。

休止を有効にするには (コンソール)

  1. インスタンス起動ウィザードを使用してインスタンスを起動する」の手順に従います。

  2. [Amazon マシンイメージ (AMI)] ページで、休止をサポートする AMI を選択します。サポート対象の AMI の詳細については、「休止の前提条件」を参照してください。

  3. [インスタンスタイプの選択] ページで、サポート対象のインスタンスタイプを選択し、[次の手順: インスタンスの詳細の設定] を選択します。サポート対象のインスタンスタイプの詳細については、「休止の前提条件」を参照してください。

  4. [インスタンスの詳細設定] ページの [Stop - Hibernate Behavior (停止 - 休止動作)] で、[Enable hibernation as an additional stop behavior (追加の停止動作として休止を有効にする)] チェックボックスをオンにします。

  5. ウィザードに従って続行します。[Review Instance Launch (インスタンス作成の確認)] ページでオプションの確認が終了したら、[Launch (起動)] を選択します。詳細については、「インスタンス起動ウィザードを使用してインスタンスを起動する」を参照してください。

休止を有効にする (AWS CLI)

  • run-instances コマンドを使用して、インスタンスを起動します。--hibernation-options Configured=true パラメータを使用して休止を有効にします。

    aws ec2 run-instances --image-id ami-abc12345 --count 1 --instance-type m5.large --key-name MyKeyPair --hibernation-options Configured=true

インスタンスが休止に対して有効かどうかを表示するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択し、詳細ペインの [Stop - Hibernation behavior (停止 - 休止動作)] を確認します。[有効] は、インスタンスが休止に対して有効であることを示します。

    注記

    起動後に休止を有効化または無効化することはできません。

インスタンスが休止に対して有効かどうかを表示するには (AWS CLI)

  • describe-instances コマンドを使用して、--filters "Name=hibernation-options.configured,Values=true" パラメータを指定し、休止に対して有効なインスタンスをフィルタリングします。

    aws --region us-east-1 ec2 describe-instances --filters "Name=hibernation-options.configured,Values=true"

    出力の次のフィールドは、そのインスタンスが休止に対して有効であることを示しています。

    "HibernationOptions": { "Configured": true }

インスタンスを休止する

インスタンスは、休止が有効になっており休止の前提条件を満たしている場合、コンソールまたはコマンドラインを使用して、休止することができます。インスタンスを休止できない場合、通常のシャットダウンが実行されます。

Amazon EBS-Backed インスタンスを休止するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択し、[操作]、[インスタンスの状態]、[停止] の順に選択します。[Stop - Hibernate (停止 - 休止)] が無効になっている場合は、インスタンスが既に休止または停止しているか、休止できません。詳細については、「休止の前提条件」を参照してください。

  4. 確認ダイアログボックスで [Yes, Stop - Hibernate (停止する - 休止)] を選択します。インスタンスが休止するまで、数分かかる場合があります。インスタンスが休止に入るとき、インスタンスの状態が [停止中] に変わり、インスタンスが休止すると [停止] になります。

Amazon EBS-Backed インスタンスを休止するには (AWS CLI)

  • stop-instances コマンドを使用して --hibernate パラメータを指定します。

    aws ec2 stop-instances --instance-ids i-1234567890abcdef0 --hibernate

インスタンスで休止が開始されたかどうかを表示するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択し、詳細ペインの [状態遷移の理由メッセージ] を確認します。Client.UserInitiatedHibernate: User initiated hibernate は、休止がインスタンスで開始されたことを示します。

インスタンスで休止が開始されたかどうかを表示するには (AWS CLI)

  • describe-instances コマンドを使用して、--filters "Name=state-reason-code,Values=Client.UserInitiatedHibernate" パラメータを指定し、休止が開始されたインスタンスをフィルタリングします。

    aws --region us-east-1 ec2 describe-instances --filters "Name=state-reason-code,Values=Client.UserInitiatedHibernate"

    出力の次のフィールドは、そのインスタンスで休止が開始されたことを示しています。

    "StateReason": { "Code": Client.UserInitiatedHibernate }

休止したインスタンスを再開する

休止したインスタンスは、停止したインスタンスを開始するのと同じ方法で開始して、再開します。

休止したインスタンスを再開するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. 休止したインスタンスを選択し、[操作]、[インスタンスの状態]、[開始] の順に選択します。インスタンスが running 状態になるまで、数分かかる場合があります。この間、インスタンスの ステータスチェック では、インスタンスが再起動するまで、インスタンスは失敗状態にあるように表示されます。

休止したインスタンスを再開するには (AWS CLI)

休止のトラブルシューティング

この情報を使用して、インスタンスを休止するときに発生する可能性がある一般的な問題の診断や修復を行います。

起動直後に休止できません

インスタンスを起動した後、休止しようとするのが早すぎる場合、エラーが発生します。

起動後、休止するまで約 2 分待つ必要があります。

stopping から stopped への移行に時間がかかりすぎ、起動後にメモリ状態が復元されません

休止しているインスタンスが stopping 状態から stopped に移行するのに時間がかかり過ぎ、メモリの状態が起動後に復元されない場合、休止が正しく設定されていないことを示している可能性があります。

インスタンスのシステムログをチェックして、休止に関連するメッセージを探します。システムログにアクセスするには、インスタンスに接続するか、get-console-output コマンドを使用します。hibinit-agentからログの行を見つけます。ログ行が失敗を示している場合、またはログ行がない場合、起動時に休止の設定に失敗している可能性が高いと思われます。

たとえば、メッセージ「hibinit-agent: Insufficient disk space. Cannot create setup for hibernation. Please allocate a larger root device.」は、ルートボリュームの大きさが十分ではないことを示します。

hibinit-agent の最後のログ行が hibinit-agent: Running: swapoff /swap である場合、休止は正しく設定されています。

これらのプロセスで何もログが表示されない場合、AMI が休止をサポートしていない可能性があります。サポート対象の AMI の詳細については、「休止の前提条件」を参照してください。独自の AMI を使用した場合は、休止をサポートするように既存の AMI を設定する に関する指示に従ったことを確認します。

インスタンスが stopping 状態で止まりました

インスタンスを休止し、stopping 状態で止まったように見える場合は、インスタンスを強制終了できます。詳細については、「インスタンスの停止に関するトラブルシューティング」を参照してください。