

# Amazon EC2 インスタンスの状態変更
<a name="ec2-instance-lifecycle"></a>

Amazon EC2 インスタンスは、起動時から終了まで、さまざまな状態に移行します。

次の図は、インスタンス状態の遷移を示しています。

![\[インスタンスのライフサイクル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/instance_lifecycle.png)


インスタンスの状態が変更されたときに通知を受け取ることができます。詳細については、「[Amazon EC2 インスタンスの状態変更イベント](monitoring-instance-state-changes.md)」を参照してください。

## インスタンスの状態別の請求
<a name="instance-billing-by-state"></a>

次の表は、各インスタンスの状態の概要と、インスタンスの使用量の請求有無を示しています。Amazon EBS ボリュームや Elastic IP アドレスなど一部の AWS リソースでは、インスタンスの状態に関係なく利用料金が発生します。詳細については、*AWS Billing ユーザーガイド*の[予想外の料金の回避](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/checklistforunwantedcharges.html)を参照してください。


| インスタンスの状態 | 説明 | インスタンス使用の請求 | 
| --- | --- | --- | 
|  `pending`  |  インスタンスは `running` 状態への移行準備中です。インスタンスは、起動時または `stopped` 状態になってから起動すると、`pending` 状態になります。  |  非請求対象  | 
|  `running`  |  インスタンスは実行中で、使用できる状態です。  |  請求済み付  | 
|  `stopping`  |  インスタンスは停止の準備中です。  |  非請求対象  インスタンスを休止すると、インスタンスが `stopping` 状態にある間は課金されます。   | 
|  `stopped`  |  インスタンスはシャットダウンされているため、使用できません。インスタンスはいつでも起動できます。  |  課金されない  | 
|  `shutting-down`  |  インスタンスは削除準備中です。  |  課金されない  | 
|  `terminated`  |  インスタンスは完全に削除されているため、起動することはできません。  |  課金されない  終了したインスタンスに適用されるリザーブドインスタンスは、支払いオプションに従って、契約期間末まで請求が発生します。詳細については、[Amazon EC2 のリザーブドインスタンスの概要](ec2-reserved-instances.md)を参照してください。   | 

## 保留中のインスタンス
<a name="instance-launch"></a>

インスタンスを起動すると、インスタンスは`pending`状態に移行します。起動時に指定したインスタンスタイプによって、インスタンスのホストコンピュータのハードウェアが決定します。起動時に指定されたAmazon Machine Image (AMI) を使って、インスタンスを再作成します。インスタンスの準備ができると、`running` 状態へ移行します。実行中のインスタンスに接続して、自分の前にあるコンピュータと同じように使用することができます。

インスタンスが `running` 状態に遷移するとすぐに、インスタンスの実行時間に応じて (インスタンスがアイドル状態のままで、接続されていなくても) 最低 1 分以上の秒単位で使用料金が発生します。

## 停止したインスタンス
<a name="instance-stop-start"></a>

インスタンスのステータスチェックに失敗するか、インスタンスでアプリケーションが想定通りに動作しておらず、インスタンスのルートボリュームが Amazon EBS である場合、インスタンスの停止と起動を行い、問題が解決するか試してみることができます。

インスタンスを停止した場合、インスタンスは`stopping`状態に移行してから、`stopped`状態になります。インスタンスの使用料やデータ転送料金は、`stopped` 時点では請求されません。どの Amazon EBS ボリュームのストレージにも料金が発生します。インスタンスが`stopped`状態の間、インスタンスタイプなど、インスタンスの特定の属性を変更できます。

インスタンスを起動して `pending` 状態になると、インスタンスは新しいホストコンピュータに移動します (ただし、場合によっては、インスタンスは現在のホストに残ることもあります)。インスタンスの停止と起動を行うと、以前のホストコンピュータに接続されていたインスタンスストアボリュームのすべてのデータが失われます。

インスタンスはプライベートIPv 4アドレスを保持します。つまり、プライベートIPv 4アドレスまたはネットワークインターフェイスに関連付けられた Elastic IPアドレスは、インスタンスに関連付けられたままになります。インスタンスに IPv6 アドレスがある場合、IPv6 アドレスは保持されます。

`stopped` から `running` に移行したインスタンスについては、その実行中に秒単位の料金が発生します。また、インスタンスの起動時には、1 分間分の最低料金が課金されます。

インスタンスの停止と開始の詳細については、「[Amazon EC2 インスタンスの停止と開始](Stop_Start.md)」を参照してください。

## 休止したインスタンス
<a name="instance-hibernate"></a>

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

インスタンスを休止した場合、インスタンスは `stopping` 状態に移行してから、`stopped` 状態になります。休止状態にあるインスタンスが `stopped` 状態にある間は料金は課金されませんが、(休止せずに[インスタンスを停止](#instance-stop-start)した場合とは異なり) `stopping` 状態にある間は料金が発生します。データ転送料金に対して使用料を課金しませんが、RAM データのストレージを含め、Amazon EBS ボリュームのストレージに対しては課金します。

休止状態のインスタンスを起動して `pending` 状態になると、インスタンスは新しいホストコンピュータに移動されます (ただし、場合によっては、インスタンスが現在のホストに残ることもあります)。

プライベート IPv4 アドレスは保持されます。つまり、プライベート IPv4 アドレスまたはネットワークインターフェイスに関連付けられていた Elastic IP アドレスは、インスタンスとの関連付けが継続されるということです。インスタンスに IPv6 アドレスがある場合、IPv6 アドレスは保持されます。

詳細については、「[Amazon EC2 インスタンスの休止](Hibernate.md)」を参照してください。

## インスタンスの再起動
<a name="instance-reboot"></a>

Amazon EC2 コンソール、コマンドラインツール、Amazon EC2 API を使って、インスタンスを再起動できます。インスタンスからオペレーティングシステムの再起動コマンドを実行する代わりに、Amazon EC2 を使ってインスタンスを再起動することをお勧めします。

インスタンスの再起動は、オペレーティングシステムの再起動と同等です。インスタンスは同じホストコンピュータに残り、そのパブリック DNS 名、プライベート IP アドレス、およびその他のデータをインスタンスストアボリュームに維持します。通常、再起動が完了するまでに数分かかりますが、再起動に必要な時間は、インスタンスの設定によって異なります。

インスタンスを再起動しても、新しいインスタンスの課金時間は開始されず、最低 1 分間分の料金はなしで秒単位の課金が継続します。

詳細については、「[Amazon EC2 インスタンスを再起動する](ec2-instance-reboot.md)」を参照してください。

## 終了したインスタンス
<a name="instance-termination"></a>

インスタンスが必要なくなったら、削除することができます。インスタンスのステータスが `shutting-down` または `terminated` に変わったら、そのインスタンスへの課金は停止します。

停止保護が有効な場合、コンソール、CLI、または API を使用してインスタンスを削除することはできません。

インスタンスの削除後、インスタンスはしばらくの間コンソールに表示されたままですが、エントリは自動的に削除されます。CLI および API を使って、削除したインスタンスを記述することもできます。(タグなどの) リソースは削除されたインスタンスから徐々に関連付けが解除されるため、しばらくすると、削除されたインスタンスで表示されなくなる可能性があります。削除したインスタンスへの接続や復旧はできません。

Amazon EBS-Backed インスタンスはそれぞれ、インスタンス自体からシャットダウンを開始したとき (Linux で **shutdown** コマンドを使用してなど)、インスタンスを停止するか終了するかを制御する `InstanceInitiatedShutdownBehavior` 属性をサポートしています。デフォルトの動作は、インスタンスの停止です。インスタンスの実行中または停止中に、この属性の設定を変更できます。

各 Amazon EBS ボリュームは `DeleteOnTermination` 属性をサポートします。この属性は、アタッチされたインスタンスを終了するときに、ボリュームの削除や保持を制御します。デフォルトでは、ルートボリュームを削除し、それ以外に EBS ボリュームがあれば保持します。

詳細については、「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。

## インスタンスの状態の違い
<a name="lifecycle-differences"></a>

次の表に、インスタンスの再起動、停止、休止、終了の主な違いをまとめました。


| 特徴 | 再起動 | 停止/開始 (Amazon EBS-Backed インスタンスのみ) | 休止 (Amazon EBS Backed インスタンスのみ) | 終了 | 
| --- | --- | --- | --- | --- | 
|  ホストコンピュータ  |  インスタンスは、同じホストコンピュータで保持される  |  インスタンスは新しいホストコンピュータに移動されます (ただし、場合によっては、インスタンスが現在のホストに残ることもあります) 。  |  インスタンスは新しいホストコンピュータに移動されます (ただし、場合によっては、インスタンスが現在のホストに残ることもあります）。  |  なし  | 
|  プライベート IPv4 アドレス  |  インスタンスはプライベート IPv4 アドレスを保持します。  |  インスタンスはプライベート IPv4 アドレスを保持します。  |  インスタンスはプライベート IPv4 アドレスを保持します。  |  なし  | 
|  パブリック IPv4 アドレス  |  インスタンスは、IPv4 アドレスを保持する  |  インスタンスは新しいパブリック IPv4 アドレスを取得します。ただし、セカンダリネットワークインターフェースがある場合、または Elastic IP アドレスに関連付けられたセカンダリプライベート IPv4 アドレスがある場合は除きます。  |  インスタンスは新しいパブリック IPv4 アドレスを取得します。ただし、セカンダリネットワークインターフェースがある場合、または Elastic IP アドレスに関連付けられたセカンダリプライベート IPv4 アドレスがある場合は除きます。  |  なし  | 
|  Elastic IP アドレス (IPv4)  |  Elastic IP アドレスは、インスタンスに関連付けられたまま維持される  |  Elastic IP アドレスは、インスタンスに関連付けられたまま維持される  |  Elastic IP アドレスは、インスタンスに関連付けられたまま維持される  |  Elastic IP アドレスはインスタンスの関連付けが解除される  | 
|  IPv6 アドレス  |  インスタンスは、IPv6 アドレスを保持する  |  インスタンスは、IPv6 アドレスを保持する  |  インスタンスは、IPv6 アドレスを保持する  |  なし  | 
|  インスタンスストアボリューム  |  データは保持される  |  データは消去される  |  データは消去される  |  データは消去される  | 
|  ルートボリューム  |  ボリュームは保持される  |  ボリュームは保持される  |  ボリュームは保持される  |  ボリュームはデフォルトで削除される  | 
|  RAM (メモリの内容)  |  RAM は消去される  |  RAM は消去される  |  RAM はルートボリュームにあるファイルに保存される  |  RAM は消去される  | 
|  請求  |  インスタンスの課金時間は変更されません。  |  インスタンスの状態が `stopping` に変わるとすぐに、そのインスタンスへの課金が停止されます。インスタンスが `stopped` 状態から `running` 状態に移行するたびに新しいインスタンスの課金時間が開始され、インスタンスの開始時には 1 分間の最低料金が発生します。  |  インスタンスが `stopping` 状態にある間は課金されますが、そのインスタンスが `stopped` 状態にある場合、課金は停止します。インスタンスが `stopped` 状態から `running` 状態に移行するたびに新しいインスタンスの課金時間が開始され、インスタンスの開始時には 1 分間の最低料金が発生します。  |  インスタンスの状態が `shutting-down` に変わるとすぐに、そのインスタンスに対して課金されなくなります。  | 

オペレーティングシステムのシャットダウンコマンドを実行すると、インスタンスストアのルートボリュームを持つインスタンスは必ず停止されます。オペレーティングシステムのシャットダウンコマンドによって EBS ルートボリュームを持つインスタンスを停止または終了するかどうかを制御できます。詳細については、「[インスタンスによるシャットダウン動作を変更する](Using_ChangingInstanceInitiatedShutdownBehavior.md)」を参照してください。

# Amazon EC2 インスタンスの停止と開始
<a name="Stop_Start"></a>

インスタンスにルートボリュームとして Amazon EBS ボリュームがある場合、そのインスタンスを停止して開始できます。ユーザーがインスタンスを停止すると、インスタンスはシャットダウンされます。インスタンスを開始すると、通常、インスタンスは基盤となる新しいホストコンピュータに移行され、新しいパブリック IPv4 アドレスが割り当てられます。

インスタンスの停止は、ユーザーが開始する (インスタンスを手動で停止する場合) ことも、AWS が開始する (インスタンスの基盤となるホストの回復不可能な障害が AWS によって検出されたときに発生するスケジュールされた停止イベントに応じて) こともできます。

ユーザーが開始する停止の場合は、インスタンスからオペレーティングシステムの停止コマンドを実行するのではなく、Amazon EC2 コンソール、CLI、または API を使用することをお勧めします。Amazon EC2 を使用する場合、インスタンスが数分以内に正常にシャットダウンされない場合、Amazon EC2 はハードシャットダウンを実行します。さらに、AWS CloudTrail はインスタンスが停止したたときの API レコードを作成します。

このトピックでは、ユーザーが開始する停止を実行する方法について説明します。AWS によって実行される停止の詳細については、「[停止またはリタイアがスケジュールされている Amazon EC2 インスタンスを管理する](schedevents_actions_retire.md)」を参照してください。

インスタンスを停止しても、そのインスタンスは削除されません。インスタンスが必要なくなったら、終了することができます。詳細については「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。インスタンスを休止状態にしてインスタンスメモリ (RAM) の内容を保存する場合はを参照してください。[Amazon EC2 インスタンスの休止](Hibernate.md)インスタンスライフサイクルアクションの違いについてはを参照してください。[インスタンスの状態の違い](ec2-instance-lifecycle.md#lifecycle-differences)

**Topics**
+ [仕組み](how-ec2-instance-stop-start-works.md)
+ [インスタンスを停止するメソッド](instance-stop-methods.md)
+ [手動で停止して開始](#starting-stopping-instances)
+ [自動的に停止して開始](#stop-start-ec2-instances-on-a-schedule)
+ [実行中および停止中のインスタンスをすべて検索](#find-running-and-stopped-instances-in-globalview)
+ [初期と最新の起動時間を確認](#find-initial-launch-time)
+ [停止保護を有効にします](ec2-stop-protection.md)

# EC2 インスタンスの停止および開始の動作
<a name="how-ec2-instance-stop-start-works"></a>

Amazon EC2 インスタンスを停止すると、変更はインスタンスのオペレーティングシステム (OS) レベルで登録され、一部のリソースは失われますが、一部のリソースは存続します。インスタンスを起動すると、変更はインスタンスレベルで登録されます。

**Topics**
+ [インスタンスを停止するとどうなるか](#what-happens-stop)
+ [インスタンスを起動するとどうなるか](#what-happens-start)
+ [アプリケーションの応答をテストして停止して起動する](#test-stop-start-instance)
+ [インスタンスの起動と停止に関連するコスト](#ec2-stop-start-costs)

## インスタンスを停止するとどうなるか
<a name="what-happens-stop"></a>

デフォルトの停止方法を使用してインスタンスを停止したときの一般的な動作については、次のとおりに示されます。使用する[停止メソッド](instance-stop-methods.md)によっては、一部動作が異なる場合がありますのでご注意ください。

**OS レベルでの変更の登録**
+ API リクエストはボタンのクリックイベントをゲストに送信します。
+ ボタンのクリックイベントの結果として、さまざまなシステムサービスが停止します。正常な OS シャットダウンは、ハイパーバイザーによる ACPI シャットダウンボタンのクリックイベントによってトリガーされます。
+ ACPI シャットダウンが開始されます。
+ このインスタンスは、正常な OS シャットダウンプロセスが終了したときにシャットダウンされます。設定可能な OS シャットダウン時間はありません。
+ インスタンス OS が数分以内に正常にシャットダウンされない場合はハードシャットダウンが実行されます。
+ インスタンスが実行を停止します。
+ インスタンスのステータスが `stopping` に変更されたら、`stopped` になります。
+ [自動スケーリング] インスタンスが `running` 以外の Amazon EC2 状態のとき、インスタンスが Auto Scaling グループにあるか、ステータスチェックのステータスが `impaired` になった場合、Amazon EC2 Auto Scaling はインスタンスを異常と見なして置き換えます。詳細については*Amazon EC2 Auto Scaling ユーザーガイド*の「[Auto Scaling グループ内のインスタンスのヘルスチェック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)」を参照してください。
+ [Windows インスタンス] Windows インスタンスを停止および起動した場合、起動エージェントはアタッチされている Amazon EBS ボリュームのドライブ文字を変更するなど、インスタンスでタスクを実行します。これらのデフォルトおよび変更方法については「[EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する](ec2launch-v2.md)」を参照してください。

**失われるリソース**
+ RAM に保存されているデータ。
+ インスタンスストアボリュームに保存されているデータは失われます。
+ 起動時または開始時に Amazon EC2 がインスタンスに自動的に割り当てられたパブリック IPv4 アドレス。パブリック IPv4 アドレスに変更を加えないようにするにはインスタンスに [Elastic IP アドレス](elastic-ip-addresses-eip.md)を関連付けます。

**存続するリソース**
+ アタッチされた Amazon EBS ボリュームとデータボリューム。
+ Amazon EBS ボリュームに保存されているデータ。
+ アタッチされた[ネットワークインターフェイス](using-eni.md)。

  ネットワークインターフェイスには次のリソースが含まれており、これらも保持されます。
  + プライベート IPv4 アドレス。
  + IPv6 アドレス。
  + インスタンスに関連付けられた Elastic IP アドレス。インスタンスが停止すると、[関連する Elastic IP アドレスに対する課金が始まります](elastic-ip-addresses-eip.md#eip-pricing)。

次の図は、EC2 インスタンスを停止したときに保持されるものと失われるものとを示しています。図は 3 つの要素からなります。1 つ目の**実行中の EC2 インスタンス**では、`running` 状態のインスタンスとそのリソースが描かれています。2 つ目の**停止した EC2 インスタンス**では、`stopped` 状態のインスタンスと、そこで保持されているリソースが描かれています。3 つ目の**紛失**では、インスタンスが停止したときに失われたリソースが描かれています。

![\[インスタンスが停止すると、パブリック IPv4 アドレス、RAM、およびインスタンスストレージデータは失われます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance.png)


Mac インスタンスを停止したときに起きることについては「[Amazon EC2 Mac インスタンスを停止または終了する](mac-instance-stop.md)」を参照してください。

## インスタンスを起動するとどうなるか
<a name="what-happens-start"></a>
+ ほとんどの場合、基盤となる新しいホストコンピュータにインスタンスが移行します (ただし、[専有ホスト](dedicated-hosts-understanding.md)設定でインスタンスがホストに割り当てられた場合などは現在のホストにインスタンスが残ります)。
+ 関連付けられた EBS ボリュームおよびネットワークインターフェイスがインスタンスに再アタッチされます。
+ インスタンスがパブリック IPv4 アドレスを受信するように設定されている場合、Amazon EC2 は新しいパブリック IPv4 アドレスをインスタンスに割り当てます。ただし、Elastic IP アドレスに関連付けられたセカンダリネットワークインターフェイスまたはセカンダリプライベート IPv4 アドレスがある場合は割り当てしません。
+ プレイスメントグループ内のインスタンスを停止して再起動しても、そのインスタンスは同じプレイスメントグループ内で実行されます。ただし、インスタンスに対して十分な容量がない場合、起動は失敗します。既にインスタンスを実行中のプレイスメントグループ内のインスタンスを起動するときにキャパシティエラーを受信した場合は、プレイスメントグループ内のすべてのインスタンスを停止して、もう一度起動してください。インスタンスを起動すると、すべてのリクエストしたインスタンスに応じた容量があるハードウェアにインスタンスが移行される場合があります。

## アプリケーションの応答をテストして停止して起動する
<a name="test-stop-start-instance"></a>

インスタンスが停止後に起動された場合のアプリケーションの応答をテストするにはAWS Fault Injection Service を使用します。詳細については[AWS Fault Injection Service ユーザーガイド](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)を参照してください。

## インスタンスの起動と停止に関連するコスト
<a name="ec2-stop-start-costs"></a>

インスタンスの停止と起動には以下のコストがかかります。

**停止** – インスタンスの状態が `shutting-down` または `terminated` に変わると、そのインスタンスの料金は発生しなくなります。停止したインスタンスの使用料やデータ転送料は請求されません。Amazon EBS ストレージボリュームの保存には料金がかかります。

**起動** – 停止したインスタンスを再起動するたびに、1 分間分の最低料金が課金されます。1 分経過した後は使用した秒数のみ課金されます。例えば、インスタンスを 20 秒間実行して停止した場合は1 分間分課金されます。インスタンスを 3 分 40 秒実行した場合はちょうど 3 分 40 秒間分課金されます。

# インスタンスを停止するメソッド
<a name="instance-stop-methods"></a>

ユーザー主導の停止を実行するには、デフォルトの停止、OS シャットダウンをスキップした停止、強制停止、OS シャットダウンをスキップした強制停止の 4 つの方法があります。次のテーブルでは、停止メソッドの主な違いが比較されます。


| 停止メソッド | 主な目的 | ユースケース | CLI コマンド | 
| --- | --- | --- | --- | 
| デフォルトの停止 | 正常な OS シャットダウンの試行による通常のインスタンスシャットダウン。 | 一般的なインスタンスの停止。 |  <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0</pre>  | 
| OS シャットダウンをスキップして停止する | インスタンスを停止するときに正常な OS シャットダウンをバイパスします。 | 正常な OS シャットダウンをバイパスする必要がある場合。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--skip-os-shutdown</pre> | 
| 強制停止する | スタックしたインスタンスを処理します。最初にデフォルトの停止を試みます。インスタンスが停止に失敗した場合、インスタンスを強制的に停止します。 | インスタンスが stopping 状態でスタックしている場合。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force</pre> | 
| OS シャットダウンをスキップして強制停止する | インスタンスを停止する際、正常な OS シャットダウンが強制停止されてバイパスされます。 | 正常な OS シャットダウンの強制停止およびバイパスする必要がある場合。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force \<br />--skip-os-shutdown</pre> | 

各メソッドの使用方法の手順については、次の内容を参照してください。
+ [正常な OS シャットダウンでインスタンスを停止する](Stop_Start.md#stop-instance-with-graceful-os-shutdown)
+ [インスタンスを停止して正常な OS シャットダウンをバイパスする](Stop_Start.md#stop-instance-bypass-graceful-os-shutdown)
+ [インスタンスを強制停止する](TroubleshootingInstancesStopping.md#force-stop-instance)

**Topics**
+ [デフォルトの停止](#ec2-instance-default-stop)
+ [OS シャットダウンをスキップして停止する](#ec2-instance-stop-with-skip-os-shutdown)
+ [強制停止する](#ec2-instance-force-stop)
+ [OS シャットダウンをスキップして強制停止する](#ec2-instance-force-stop-with-skip-os-shutdown)

次のセクションでは、ユーザー主導の 4 つの異なる停止メソッドに関する詳細情報が記載されています。

## デフォルトの停止
<a name="ec2-instance-default-stop"></a>

デフォルトの停止メソッドは、インスタンスを停止する標準的な方法です。StopInstances コマンドを発行すると、次の図で示されるように、インスタンスは `running` 状態から `stopping` 状態に移行したら、最後に `stopped` 状態に移行します。

![\[デフォルトの停止フロー\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-1.png)


**目的:** 正常な OS シャットダウンの試行による通常のインスタンスシャットダウン。

**データへの影響:** EBS ルートボリュームおよびデータボリューム上にデータが保持されます。インスタンスストアボリューム上のデータが失われます。

**使用するタイミング:** 一般的な停止の最初の停止試行。

**注記**  
OS シャットダウンをスキップした停止をすでに試行している場合、同じ状態移行セッション中の後続のデフォルトの停止試行では、正常な OS シャットダウンが実行されません。正常な OS シャットダウンをバイパスすると、インスタンスの現在のセッションでは元に戻せません。

## OS シャットダウンをスキップして停止する
<a name="ec2-instance-stop-with-skip-os-shutdown"></a>

正常な OS シャットダウンをバイパスする必要がある場合、次の図で示されるように、OS シャットダウンをスキップして停止するメソッドを使用してインスタンスを停止し、正常な OS シャットダウンをバイパスできます。

![\[OS シャットダウンフローをスキップして停止する\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-3.png)


**警告**  
正常な OS シャットダウンをバイパスすると、データの損失または破損 (例えば、メモリコンテンツがディスクにフラッシュされなかったり、処理中の IO が失われたりする) や、シャットダウンスクリプトがスキップされる可能性があります。

**目的:** インスタンスを停止するときに正常な OS シャットダウンをバイパスします。

**データへの影響:** データの損失や破損につながる可能性があります。メモリの内容がディスクにフラッシュされず、処理中の IO が失われる可能性があります。シャットダウンスクリプトがスキップされる可能性があります。

**使用するタイミング:** 正常な OS シャットダウンをバイパスする必要がある場合。正常な OS シャットダウンによるデフォルトの停止の進行中に使用した場合、正常な OS シャットダウンがバイパスされます。

**注記**  
正常な OS シャットダウンをバイパスすると、インスタンスの現在の状態移行セッションは元に戻せません。このセッション中に行われる次のデフォルトの停止試行では、正常な OS シャットダウンは試行されません。

## 強制停止する
<a name="ec2-instance-force-stop"></a>

強制停止メソッドは、`stopping` 状態でスタックしているインスタンスを処理するために使用されます。通常、基盤となるハードウェアの問題 ([システムステータスチェック](monitoring-system-instance-status-check.md#system-status-checks)の失敗によって示される) によってインスタンスがスタックします。

強制停止メソッドでは、最初にデフォルトの停止が試行されます。インスタンスが `stopping` 状態でスタックした場合、`force` パラメータによってインスタンスが強制的にシャットダウンされ、次の図で示されるようにインスタンスを `stopped` 状態に移行されます。

![\[強制停止フロー\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-2.png)


**目的:** `stopping` 状態にスタックしたインスタンスを処理します。最初にデフォルトの停止が試行されます。インスタンスの停止に失敗した場合、インスタンスが強制的にシャットダウンされます。

**データへの影響:** 最初にデフォルトの停止が試行されますが、強制停止が進行された場合、データ損失や破損が発生する可能性があります。まれに EBS ボリュームやその他の共有リソースに停止後の書き込みが発生する場合があります。

**使用するタイミング:** デフォルトの停止後にインスタンスがスタック状態になったときに 2 回目の停止を試みます。詳細については、「[Amazon EC2 インスタンスの停止に関する問題のトラブルシューティング](TroubleshootingInstancesStopping.md)」を参照してください。

## OS シャットダウンをスキップして強制停止する
<a name="ec2-instance-force-stop-with-skip-os-shutdown"></a>

正常な OS シャットダウンを強制停止およびバイパスする必要がある場合、次の図で示されるように、OS シャットダウンをスキップして強制停止するメソッドを使用して、インスタンスを `stopped` 状態にすることができます。

![\[OS シャットダウンフローのスキップによる強制停止\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-4.png)


**目的:** インスタンスを停止するとき、強制停止と正常な OS シャットダウンのバイパスを組み合わせます。

**データへの影響:** OS のシャットダウンをスキップすると、データの損失や破損が発生する可能性があります。メモリの内容がディスクにフラッシュされず、処理中の IO が失われる可能性があります。シャットダウンスクリプトがスキップされる可能性があります。強制停止が進行すると、追加のデータ損失や破損を引き起こす可能性があります。まれに、EBS ボリュームやその他の共有リソースに停止後の書き込みが発生する場合があります。

**使用するタイミング:** インスタンスが停止することを確認し、正常な OS シャットダウンをバイパスする場合。正常な OS シャットダウンによるデフォルトの停止の進行中に使用した場合、正常な OS シャットダウンがバイパスされます。

## インスタンスを手動で停止して開始する
<a name="starting-stopping-instances"></a>

ユーザーは Amazon EBS-backed インスタンス (EBS ルートボリュームがあるインスタンス) を停止および開始できます。インスタンスストアルートボリュームがあるインスタンスを停止および開始することはできません。

デフォルトのメソッドを使用してインスタンスを停止すると、正常なオペレーティングシステム (OS) のシャットダウンが試行されます。正常な OS シャットダウンをバイパスすることはできますが、データの整合性がリスクにさらされる可能性があります。

**警告**  
インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスを停止する前に、必要なデータをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認します。

[Linux インスタンス] インスタンスから OS **halt** コマンドを使用しても、シャットダウンは開始されません。**halt**コマンドを使用すると、インスタンスは終了せず、代わりに CPU をに配置して `HLT` CPU 操作を一時停止します。インスタンスは実行状態のままです。

OSの **shutdown** コマンドまたは **poweroff** コマンドを使用してシャットダウンを開始できます。OS コマンドを使用すると、インスタンスはデフォルトで停止します。この動作はいつでも変更できます。詳細については、「[インスタンスによるシャットダウン動作を変更する](Using_ChangingInstanceInitiatedShutdownBehavior.md)」を参照してください。

**注記**  
Amazon EBS-Backed インスタンスを停止し、`stopping` 状態に 「stuck」 が表示されている場合、インスタンスを強制終了できます。詳細については、「[Amazon EC2 インスタンスの停止に関する問題のトラブルシューティング](TroubleshootingInstancesStopping.md)」を参照してください。

**Topics**
+ [正常な OS シャットダウンでインスタンスを停止する](#stop-instance-with-graceful-os-shutdown)
+ [インスタンスを停止して正常な OS シャットダウンをバイパスする](#stop-instance-bypass-graceful-os-shutdown)
+ [インスタンスの開始](#start-ec2-instance)

### 正常な OS シャットダウンでインスタンスを停止する
<a name="stop-instance-with-graceful-os-shutdown"></a>

デフォルトの停止メソッドを使用してインスタンスを停止できます。これには正常な OS シャットダウンの試行が含まれます。詳細については、「[デフォルトの停止](instance-stop-methods.md#ec2-instance-default-stop)」を参照してください。

------
#### [ Console ]

**デフォルトの停止メソッドを使用してインスタンスを停止する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで **[インスタンス]** を選択し、該当するインスタンスを選択してください。

1. [**インスタンスの状態**]、[**インスタンスの停止**] の順に選択してください。このオプションが無効になっている場合はインスタンスが既に停止しているか、またはルートボリュームがインスタンスストアボリュームです。

1. 確認を求められたら、[**Stop**] を選択してください。インスタンスが停止するまで、数分かかる場合があります。

------
#### [ AWS CLI ]

**デフォルトの停止メソッドを使用してインスタンスを停止する方法**  
[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンドを使用します。

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

------
#### [ PowerShell ]

**デフォルトの停止メソッドを使用してインスタンスを停止する方法**  
「[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html)」コマンドレットを使用します。

```
Stop-EC2Instance -InstanceId i-1234567890abcdef0
```

------

### インスタンスを停止して正常な OS シャットダウンをバイパスする
<a name="stop-instance-bypass-graceful-os-shutdown"></a>

インスタンスを停止するとき、正常な OS シャットダウンをバイパスできます。詳細については、「[OS シャットダウンをスキップして停止する](instance-stop-methods.md#ec2-instance-stop-with-skip-os-shutdown)」を参照してください。

**警告**  
正常な OS シャットダウンをバイパスすると、データの損失または破損 (例えば、メモリコンテンツがディスクにフラッシュされなかったり、処理中の IO が失われたりする) や、シャットダウンスクリプトがスキップされる可能性があります。

------
#### [ Console ]

**インスタンスを停止して正常な OS シャットダウンをバイパスする方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Instances**] を選択し、インスタンスを選択してください。

1. [**Instance state (インスタンスの状態)**]、[**Stop instance (インスタンスの停止)**] の順に選択します。

1. **[OS シャットダウンをスキップ]** で、**[OS シャットダウンをスキップ]** チェックボックスをオンにします。コンソールにこのオプションが表示されない場合、現在のリージョンのコンソールではまだ利用できません。ただし、AWS CLI または SDK を使用してこの機能にアクセスするか、コンソールで別のリージョンを試すことができます。

1. **[停止]** を選択します。

------
#### [ AWS CLI ]

**インスタンスを停止して正常な OS シャットダウンをバイパスする方法**  
`--skip-os-shutdown` で「[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html)」コマンドを使用します。

```
aws ec2 stop-instances \
    --instance-ids i-1234567890abcdef0 \
    --skip-os-shutdown
```

------
#### [ PowerShell ]

**インスタンスを停止して正常な OS シャットダウンをバイパスする方法**  
`-SkipOsShutdown $true` で「[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html)」コマンドレットを使用します。

```
Stop-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -SkipOsShutdown $true
```

------

### インスタンスの開始
<a name="start-ec2-instance"></a>

停止したインスタンスを開始できます。

------
#### [ Console ]

**インスタンスを開始するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインの [**インスタンス**] を選択してください。

1. インスタンスを選択したら、**[インスタンスの状態]** および **[インスタンスを開始]** を選択してください。

   インスタンスが `running` 状態になるまで、数分かかる場合があります。

------
#### [ AWS CLI ]

**インスタンスを開始するには**  
[start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) コマンドを使用します。

```
aws ec2 start-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**インスタンスを開始するには**  
[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) コマンドレットを使用します。

```
Start-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## インスタンスを自動的に停止して開始する
<a name="stop-start-ec2-instances-on-a-schedule"></a>

次のサービスを使用して、インスタンスの停止と開始を自動化できます。

**AWS でインスタンススケジューラを使用する**  
インスタンススケジューラを AWS で使用して、EC2 インスタンスの開始と停止を自動化することができます。詳細については「[CloudFormation で Instance Scheduler を使用して EC2 インスタンスをスケジュールするにはどうすればよいですか?](https://repost.aws/knowledge-center/stop-start-instance-scheduler)」を参照してください。[追加料金が適用される](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/cost.html)ことに注意してください。

**AWS Lambda および Amazon EventBridge ルールを使用する**  
Lambda と EventBridge ルールを使用して、スケジュール上のインスタンスを停止および開始することができます。詳細については「[Lambda を使用して、Amazon EC2 インスタンスを一定の間隔で停止および開始するにはどうすればよいですか?](https://repost.aws/knowledge-center/start-stop-lambda-eventbridge)」を参照してください。

**Amazon EC2 Auto Scaling**  
アプリケーションの負荷を処理できる Amazon EC2 インスタンスの数が適切であることを確認するにはAuto Scaling グループを作成します。 Amazon EC2 Auto Scalingは、トラフィック需要を処理する適切な容量をアプリケーションで常に確保できるようにし、必要な場合にのみインスタンスを起動することでコストを節約できます。不要なインスタンスを停止するのではなく、Amazon EC2 Auto Scaling終了させることに注意してください。自動スケーリンググループを設定するには「[Amazon EC2 Auto Scalingをはじめる](https://docs.aws.amazon.com/autoscaling/ec2/userguide/get-started-with-ec2-auto-scaling.html)」を参照してください。

## 実行中および停止中のインスタンスをすべて検索
<a name="find-running-and-stopped-instances-in-globalview"></a>

[Amazon EC2 グローバルビュー](https://console.aws.amazon.com/ec2globalview/home)ではすべてにわたって、実行中と停止中のすべての AWS リージョン のインスタンスを 1 つのページで確認できます。これはインベントリを取得し、忘れられたインスタンスを見つけるのに特に有用です。グローバルビューを使用する方法については「[AWS Global View を使用して複数のリージョンにわたるリソースを表示する](global-view.md)」を参照してください。

あるいは、インスタンスがある各リージョンで、コマンドまたはコマンドレットを実行できます。

------
#### [ AWS CLI ]

**リージョンにある EC2 インスタンスの数を入手するには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用して、現在のリージョンにあるインスタンスの数を数えます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

```
aws ec2 describe-instances \
    --region us-east-2 \
    --query "length(Reservations[].Instances[])"
```

以下は出力の例です。

```
27
```

**リージョン内の EC2 インスタンスに関する概要情報を取得するには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

```
aws ec2 describe-instances \
    --region us-east-2 \
    --query "Reservations[].Instances[].[InstanceId,InstanceType,PrivateIpAddress]" \
    --output table
```

以下は出力の例です。

```
---------------------------------------------------------
|                   DescribeInstances                   |
+---------------------+---------------+-----------------+
|  i-0e3e777f4362f1bf7|  t2.micro     |  10.0.12.9      |
|  i-09453945dcf1529e9|  t2.micro     |  10.0.143.213   |
|  i-08fd74f3f1595fdbd|  m7i.4xlarge  |  10.0.1.103     |
+---------------------+---------------+-----------------+
```

------
#### [ PowerShell ]

**リージョンにある EC2 インスタンスの数を入手するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -Region us-east-2).Instances.Length
```

以下は出力の例です。

```
27
```

**リージョン内の EC2 インスタンスに関する概要情報を取得するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

```
(Get-EC2Instance).Instances | Select InstanceId, InstanceType, PrivateIpAddress
```

以下は出力の例です。

```
InstanceId          InstanceType PrivateIpAddress
----------          ------------ ----------------
i-0e3e777f4362f1bf7 t2.micro     10.0.12.9
i-09453945dcf1529e9 t2.micro     10.0.143.213
i-08fd74f3f1595fdbd m7i.4xlarge  10.0.1.103
```

------

## 初期と最新の起動時間を確認
<a name="find-initial-launch-time"></a>

インスタンスを記述するとき、インスタンスの起動時間は最新の起動時間です。インスタンスを停止して開始すると、起動時間に新しいインスタンスの開始時刻が反映されます。インスタンスの初回起動時間を確認するにはインスタンスを停止して開始した後でも、プライマリネットワークインターフェイスがインスタンスにアタッチされた時刻を確認してください。

------
#### [ Console ]

**直近の起動時間を見つけるには**  
インスタンスを選択し、**[詳細]** タブの **[インスタンスの詳細]** から、**[起動時間]** を見つけます。

**最初の起動時刻を見つけるには**  
インスタンスを選択し、**[ネットワーク]** タブの **[ネットワークインターフェイス]** から [プライマリネットワークインターフェイス] (デバイスインデックスは 0) を見つけます。

------
#### [ AWS CLI ]

**最初の起動時間と直近の起動時間を見つけるには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用して、指定したインスタンスの最初の起動時間と直近の起動時間の両方を表示します。

```
aws ec2 describe-instances \
    --instance-id i-1234567890abcdef0 \
    --query 'Reservations[].Instances[].{InstanceID:InstanceId,InitialLaunch:NetworkInterfaces[0].Attachment.AttachTime,LastLaunch:LaunchTime}'
```

以下は出力の例です。

```
[
    {
        "InstanceID": "i-1234567890abcdef0",
        "InitialLaunch": "2024-04-19T00:47:08+00:00",
        "LastLaunch": "2024-05-27T06:24:06+00:00"
    }
]
```

------
#### [ PowerShell ]

**直近の起動時間を見つけるには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.LaunchTime
```

以下は出力の例です。

```
Monday, May 27, 2024 6:24:06 AM
```

**最初の起動時刻を見つけるには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.NetworkInterfaces.Attachment.AttachTime
```

以下は出力の例です。

```
Friday, April 19, 2024 12:47:08 AM
```

------

# EC2 インスタンスに対する停止保護を有効にする
<a name="ec2-stop-protection"></a>

インスタンスが誤って停止するのを防ぐために、インスタンスに対する停止保護を有効にすることができます。停止保護はインスタンスを偶発的な終了からも保護します。

Amazon EC2 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html) API の `DisableApiStop` 属性はAmazon EC2 コンソール、AWS CLI、Amazon EC2 API を使用してインスタンスを停止できるかどうかを制御します。この属性の値はインスタンスの起動時、インスタンスの実行中、またはインスタンスの停止時に設定できます。

**考慮事項**
+ 停止保護を有効にしても、**shutdown** や **poweroff** などのオペレーティングシステムコマンドによりインスタンスからシャットダウンを開始してインスタンスを誤って停止することは防げません。
+ 停止保護を有効にしても、インスタンスにインスタンスを停止する[予定されたイベント](monitoring-instances-status-check_sched.md)がある場合、AWS がインスタンスを停止するのを防ぐことはできません。
+ 停止保護を有効にしても、インスタンスが異常な場合やスケールインイベント中にAmazon EC2 Auto Scaling がインスタンスを終了するのを防ぐことはできません。スケールイン時に Auto Scaling グループが特定のインスタンスを終了できるかどうかを制御するには[インスタンスのスケールイン保護](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)を使用します。
+ 停止保護はインスタンスが誤って停止するのを防ぐだけでなく、コンソール、AWS CLI、または API を使用して誤って終了するのを防ぎます。ただし、`DisableApiTermination` 属性は自動的に変更されません。`DisableApiStop` 属性が `false` に設定されている場合、`DisableApiTermination` 属性の設定によって、コンソール、AWS CLI 、またはAPIを使用してインスタンスを終了できるかどうかが決まります。詳細については、「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。
+ インスタンスストアのルートボリュームを持つインスタンスの停止保護は有効にできません。
+ スポットインスタンスの停止保護は有効にできません。
+ 停止保護を有効または無効にすると、Amazon EC2 API は最終的な整合性モデルに従います。つまり、停止保護属性を設定するコマンドを実行した結果が、それ以降に実行するすべてのコマンドにすぐには表示されない場合があります。詳細については「*Amazon EC2 デベロッパーガイド*」の「[Amazon EC2 API の結果整合性](https://docs.aws.amazon.com/ec2/latest/devguide/eventual-consistency.html)」を参照してください。

**Topics**
+ [起動時にインスタンスに対する停止保護を有効にします](#enable-stop-protection-at-launch)
+ [実行中または停止したインスタンスに対する停止保護を有効にします](#enable-stop-protection-on-running-or-stopped-instance)
+ [実行中または停止したインスタンスに対する停止保護を無効にします](#disable-stop-protection-on-running-or-stopped-instance)

## 起動時にインスタンスに対する停止保護を有効にします
<a name="enable-stop-protection-at-launch"></a>

インスタンスを起動するときに、インスタンスに対する停止保護を有効にできます。

------
#### [ Console ]

**起動時にインスタンスに対する停止保護を有効にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ダッシュボードで、[**Launch Instance (インスタンスの起動)**] を選択してください。

1. [[new launch instance wizard]](ec2-launch-instance-wizard.md) (新しいインスタンス起動ウィザード) でインスタンスを設定します。

1. ウィザードで、**[高度な詳細]** の **[保護停止]** で **[有効にする]** を選択して、保護を停止します。

------
#### [ AWS CLI ]

**起動時にインスタンスに対する停止保護を有効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して、インスタンスを起動します。次のパラメータを追加します。

```
--disable-api-stop
```

------
#### [ PowerShell ]

**起動時にインスタンスに対する停止保護を有効にするには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用してインスタンスを起動します。次のパラメータを追加します。

```
-DisableApiStop $true
```

------

## 実行中または停止したインスタンスに対する停止保護を有効にします
<a name="enable-stop-protection-on-running-or-stopped-instance"></a>

インスタンスの実行中に、またはインスタンスを停止したときに、インスタンスに対する停止保護を有効にできます。

------
#### [ Console ]

**インスタンスに対する停止保護を有効にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[Instances]** (インスタンス) をクリックしてください。

1. インスタンスを選択してから、**[アクション]** > **[インスタンスの設定]** > **[保護停止を変更する]** を選択してください。

1. **[有効化]** チェックボックスをオンにしたら、**[保存]** を選択してください。

------
#### [ AWS CLI ]

**インスタンスに対する停止保護を有効にするには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --disable-api-stop
```

------
#### [ PowerShell ]

**インスタンスに対する停止保護を有効にするには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -DisableApiStop $true
```

------

## 実行中または停止したインスタンスに対する停止保護を無効にします
<a name="disable-stop-protection-on-running-or-stopped-instance"></a>

次のいずれかの方法を使用して、実行中または停止したインスタンスに対する停止保護を無効にすることができます。

------
#### [ Console ]

**実行中または停止中のインスタンスの停止保護を無効にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[Instances]** (インスタンス) をクリックしてください。

1. インスタンスを選択してから、**[Actions]** (アクション)、**[Instance Settings]** (インスタンスの設定)、**[Change Stop Protection]** (停止保護の変更) を選択してください。

1. **[有効化]** チェックボックスをオフにしたら、**[保存]** を選択してください。

------
#### [ AWS CLI ]

**実行中または停止中のインスタンスの停止保護を無効にするには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --no-disable-api-stop
```

------
#### [ PowerShell ]

**インスタンスに対する停止保護を無効にするには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -DisableApiStop $false
```

------

# Amazon EC2 インスタンスの休止
<a name="Hibernate"></a>

インスタンスを休止すると、Amazon EC2 によってオペレーティングシステムに休止の実行 (suspend-to-disk) が指示されます。休止状態に入ると、インスタンスメモリ (RAM) に置かれていた内容が、Amazon Elastic Block Store (Amazon EBS) のルートボリュームに保存されます。インスタンスの EBS ルートボリュームとアタッチされた EBS データボリュームは、Amazon EC2 により保持されます。インスタンスが起動したとき、
+ EBS ルートボリュームは前の状態に復元されます。
+ RAM の内容が再ロードされます。
+ インスタンスで以前に実行されていたプロセスが再開されます。
+ 以前にアタッチされていたデータボリュームが再アタッチされ、インスタンスがそのインスタンス ID を保持します。

インスタンスは、[休止が有効になっており](enabling-hibernation.md)、[休止の前提条件](hibernating-prerequisites.md)を満たしている場合のみ、休止状態にすることができます。

インスタンスまたはアプリケーションが、ブートストラップし、メモリフットプリントを構築して完全に生産性を発揮するのに時間がかかる場合は、休止を使用してインスタンスを事前ウォーミングできます。インスタンスを事前ウォーミングするには、次の操作を行います。

1. 休止を有効にしてインスタンスを起動します。

1. インスタンスを必要な状態に移行させます。

1. 休止状態にして、必要なときにいつでも望ましい状態に回復されるようにします。

インスタンスが `stopped` 状態にある場合の休止状態のインスタンスにも、RAM の内容が EBS ルートボリュームに転送される場合のデータ転送にも、課金はされません。EBS ボリュームのストレージに対しては、RAM の内容のストレージも含めて、料金が発生します。

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

**Topics**
+ [仕組み](instance-hibernate-overview.md)
+ [前提条件](hibernating-prerequisites.md)
+ [Linux AMI で休止がサポートされるように設定する](hibernation-enabled-AMI.md)
+ [インスタンスの休止の有効化](enabling-hibernation.md)
+ [インスタンスでの KASLR の無効化 (Ubuntu のみ)](hibernation-disable-kaslr.md)
+ [インスタンスの休止](hibernating-instances.md)
+ [休止したインスタンスの起動](hibernating-resuming.md)
+ [トラブルシューティング](troubleshoot-instance-hibernate.md)

# Amazon EC2 インスタンスの休止の仕組み
<a name="instance-hibernate-overview"></a>

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

![\[休止フローの概要。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/hibernation-flow.png)


## インスタンスを休止するとどうなるか
<a name="how-instance-hibernation-works"></a>

インスタンスを休止すると、次の処理が実行されます。
+ インスタンスは`stopping`状態に移行します。Amazon EC2 が、オペレーティングシステムに対して休止処理 (suspend-to-disk) を指示します。休止に伴ってすべてのプロセスがフリーズされ、RAM の内容が EBS ルートボリュームに保存されます。その後に、通常のシャットダウンが実行されます。
+ シャットダウンプロセスが完了した後、インスタンスは `stopped` 状態に移行します。
+ EBS ボリュームはインスタンスにアタッチされたままとなり、保存された RAM の内容も含めて、データは保持されます。
+ Amazon EC2 インスタンスストアボリュームはインスタンスにアタッチされたままになりますが、インスタンスストアボリューム上のデータは失われます。
+ 殆どの場合、インスタンスは基盤となる新しいホストコンピュータが起動したときに移行されます。これは、インスタンスを停止して起動した場合と同じです。
+ インスタンスを起動すると、インスタンスのブートアッププロセスが実行され、オペレーティングシステムが EBS ルートボリュームから RAM の内容を読み取ります。次に、プロセスのフリーズが解除されて以前の状態が回復されます。
+ インスタンスのプライベート IPv4 アドレスとすべての IPv6 アドレスは保持されます。インスタンスを起動すると、インスタンスは引き続きプライベート IPv4 アドレスとすべての IPv6 アドレスを保持します。
+ Amazon EC2 はパブリック IPv4 アドレスをリリースします。インスタンスを起動すると、Amazon EC2 は新しいパブリック IPv4 アドレスをインスタンスに割り当てます。
+ インスタンスには関連付けられた Elastic IP アドレスが保持されます。休止状態のインスタンスに関連付けられた Elastic IP アドレスに対して課金されます。

休止と再起動、停止、および終了の違いについては、[インスタンスの状態の違い](ec2-instance-lifecycle.md#lifecycle-differences)を参照してください。

## 制限事項
<a name="instance-hibernate-limitations"></a>
+ インスタンスを休止すると、インスタンスストアボリューム上のデータは失われます。
+ (Linux インスタンス) RAM が 150 GiB を超える Linux インスタンスを休止することはできません。
+ (Windows インスタンス) RAM が 16 GiB を超える Windows インスタンスを休止することはできません。
+ インスタンスが休止されている間にインスタンスを変更することはできません。これは、インスタンスのタイプやサイズなどの特定の属性を変更できる、停止された (休止ではない) インスタンスとは異なります。
+ 休止状態になっている、または休止機能が有効になっているインスタンスからスナップショットまたは AMI を作成した場合、その AMI (あるいは、そのスナップショットから作成した AMI) から起動した新しいインスタンスに接続できないことがあります。
+ (スポットインスタンスのみ) Amazon EC2 がスポットインスタンスを休止した場合、インスタンスを再開できるのは Amazon EC2 のみです。スポットインスタンスを休止状態 ([ユーザー起動の休止](hibernating-instances.md)) にする場合、ユーザーはインスタンスを再開できます。休止したスポットインスタンスは、容量が空いていて、スポット料金が指定した上限料金以下である場合、再開できます。
+ Auto Scaling グループ内のインスタンス、または Amazon ECS が使用しているインスタンスを休止することはできません。インスタンスが Auto Scaling グループにあり、そのインスタンスを休止しようとしている場合、Amazon EC2 Auto Scaling サービスは停止したインスタンスを異常と判断し、そのインスタンスを終了して代わりのインスタンスを起動する場合があります。詳細については、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Auto Scaling グループ内のインスタンスのヘルスチェック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)」を参照してください。
+ [UEFI Secure Boot](uefi-secure-boot.md) を有効にした状態で、UEFI モードで起動するように設定されたインスタンスを休止することはできません。
+ キャパシティーの予約では、キャパシティ予約で起動されたインスタンスを休止状態にする場合、そのインスタンスを再開しても、休止した時点の状態が維持されることを保証していません。
+ 連邦情報処理標準 (FIPS) モードが有効になっている場合、5.10 未満のカーネルを使用するインスタンスを休止状態にすることはできません。
+ 60 日間以上に及ぶインスタンス休止はサポートしていません。60 日より長くインスタンスを保持するには、休止したインスタンスを起動し、停止して、また起動する必要があります。
+ 当社では、継続的にプラットフォームをアップグレードやセキュリティパッチで更新しており、休止されている既存のインスタンスと競合する可能性があります。シャットダウンまたは再起動を実行して必要なアップグレードとセキュリティパッチを適用できるように、休止されているインスタンスの起動が必要になる重要な更新については、通知を受け取ります。

## スポットインスタンスを休止する場合の注意点
<a name="spot-hibernation-considerations"></a>
+ *ユーザー*がスポットインスタンスを休止した場合、容量が空いていて、スポット料金が、指定した上限料金以下である場合、ユーザーがこれを再開できます。
+ *Amazon EC2* がスポットインスタンスを休止した場合は、
  + インスタンスを再開できるのは Amazon EC2 だけです。
  + Amazon EC2 は、容量が利用可能になり、スポット料金が、指定した上限料金以下である場合、休止したスポットインスタンスを再開します。
  + Amazon EC2 がスポットインスタンスを休止するときは、休止が始まる 2 分前にユーザーに中断通知が届きます。

  詳細については、「[スポットインスタンスの中断。](spot-interruptions.md)」を参照してください。

# EC2 インスタンスの休止の前提条件
<a name="hibernating-prerequisites"></a>

オンデマンドインスタンスまたはスポットインスタンスの休止のサポートは、起動時に有効にすることができます。実行中または停止状態の既存のインスタンスで休止を有効にすることはできません。詳細については、「[インスタンスの休止の有効化](enabling-hibernation.md)」を参照してください。

**Topics**
+ [AWS リージョン](#hibernation-prereqs-regions)
+ [AMI](#hibernation-prereqs-supported-amis)
+ [インスタンスファミリー](#hibernation-prereqs-supported-instance-families)
+ [インスタンスの RAM サイズ](#instance-ram-size)
+ [ルートボリュームタイプ](#hibernation-prereqs-root-volume-type)
+ [ルートボリュームサイズ](#hibernation-prereqs-ebs-root-volume-size)
+ [ルートボリュームの暗号化](#hibernation-prereqs-ebs-root-volume-encryption)
+ [EBS ボリュームタイプ](#hibernation-prereqs-ebs-volume-types)
+ [スポットインスタンスリクエスト](#hibernation-prereqs-spot-request)

## AWS リージョン
<a name="hibernation-prereqs-regions"></a>

すべての AWS リージョンのインスタンスで休止を使用できます。

## AMI
<a name="hibernation-prereqs-supported-amis"></a>

休止をサポートする HVM AMI を使用する必要があります。次の AMI はハイバネーションをサポートします。

### Linux AMI
<a name="hibernation-prereqs-supported-amis-linux"></a>

**Intel および AMD インスタンスタイプの AMI**
+ AL2023 AMI は 2023 年 9 月 20 日以降にリリース¹
+ Amazon Linux 2 AMI (2019 年 8 月 29 日以降にリリース)
+ Amazon Linux AMI 2018.03 (2018 年 11 月 16 日以降にリリース)
+ CentOS バージョン 8 AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-centos-for-hibernation) が必要です)
+ Fedora バージョン 34 以降の AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-fedora-for-hibernation) が必要です)
+ Red Hat Enterprise Linux (RHEL) 9 AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-RHEL-for-hibernation) が必要です)
+ Red Hat Enterprise Linux (RHEL) 8 AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-RHEL-for-hibernation) が必要です)
+ 20230303 以降のシリアル番号でリリースされた Ubuntu 22.04.2 LTS (Jammy Jellyfish) AMI ³
+ 20210820 以降のシリアル番号でリリースされた Ubuntu 20.04 LTS (Focal Fossa) AMI ³
+ 20190722.1 以降のシリアル番号でリリースされた Ubuntu 18.04 LTS (Bionic Beaver) AMI ³ ⁵
+ Ubuntu 16.04 LTS (Xenial Xerus) AMI ³ ⁴ ⁵ ([追加設定](hibernation-enabled-AMI.md#configure-ubuntu1604-for-hibernation) が必要です)

**Graviton インスタンスタイプの AMI**
+ 2024 年 7 月 1 日以降にリリースされた AL2023 AMI (64 ビット Arm) ¹
+ 2024 年 6 月 20 日以降にリリースされた Amazon Linux 2 AMI (64 ビット Arm)
+ 20240701 以降のシリアル番号でリリースされた Ubuntu 22.04.2 LTS (64 ビット Arm) (Jammy Jellyfish) AMI ³
+ 20240701 以降のシリアル番号でリリースされた Ubuntu 20.04 LTS (64 ビット Arm) (Focal Fossa) AMI ³

 

¹ AL2023 最小 AMI の場合、[追加の設定が必要です](hibernation-enabled-AMI.md#configure-AL2023-minimal-for-hibernation)。

² CentOS、Fedora、Red Hat Enterprise Linux の場合、ハイバネーションは Nitro ベースのインスタンスでのみサポートされます。

³ Ubuntu 22.04.2 LTS (Jammy Jellyfish)、Ubuntu 20.04 LTS (Focal Fossa)、Ubuntu 18.04 LTS (Bionic Beaver)、Ubuntu 16.04 LTS (Xenial Xerus) を使用するインスタンスで KASLR を無効にすることをお勧めします。詳細については、「[インスタンスでの KASLR の無効化 (Ubuntu のみ)](hibernation-disable-kaslr.md)」を参照してください。

⁴ Ubuntu 16.04 LTS (Xenial Xerus) AMI の場合、ハイバネーションは `t3.nano` インスタンスタイプでサポートされません。Ubuntu (Xenial Xerus) が 2021 年 4 月にサポートを終了したため、パッチは利用できません。`t3.nano` インスタンスタイプを使用したい場合は、Ubuntu 22.04.2 LTS (Jammy Jellyfish)、Ubuntu 20.04 LTS (Focal Fossa) AMI または Ubuntu 18.04 LTS (Bionic Beaver) AMI にアップグレードすることをお勧めします。

⁵ Ubuntu 18.04 LTS (Bionic Beaver) および Ubuntu 16.04 LTS (Xenial Xerus) のサポートは終了しました。

独自の AMI が休止をサポートするように設定するには、[Linux AMI で休止がサポートされるように設定する](hibernation-enabled-AMI.md)を参照してください。

他のバージョンの Ubuntu および他のオペレーティングシステムはまもなくサポートされる予定です。

### Windows AMI
<a name="hibernation-prereqs-supported-amis-windows"></a>
+ Windows Server 2022 AMI (2023 年 9 月 13 日以降にリリース)
+ Windows Server 2019 AMI (2019 年 9 月 11 日以降にリリース)
+ Windows Server 2016 AMI (2019 年 9 月 11 日以降にリリース)
+ Windows Server 2012 R2 AMI (2019 年 9 月 11 日以降にリリース)
+ Windows Server 2012 AMI (2019 年 9 月 11 日以降にリリース)

## インスタンスファミリー
<a name="hibernation-prereqs-supported-instance-families"></a>

休止をサポートするインスタンスファミリーを使用する必要があります。ただし、ベアメタルインスタンスはサポートされていません。
+ 汎用: M3、M4、M5、M5a、M5ad、M5d、M6a、M6g、M6gd、M6i、M6id、M6idn、M6in、M7a、M7g、M7gd、M7i、M7i-flex、M8a、M8azn、M8g、M8gb、M8gd、M8gn、M8i、M8i-flex、T2、T3、T3a、T4g
+ コンピューティング最適化: C3、C4、C5、C5d、C6a、C6g、C6gd、C6gn、C6i、C6id、C6in、C7a、C7g、C7gd、C7gn、C7i、C7i-flex、C8a、C8g、C8gb、C8gd、C8gn、C8i、C8i-flex
+ メモリ最適化: R3、R4、R5、R5a、R5ad、R5d、R6a、R6g、R6gd、R6idn、R6in、R7a、R7g、R7gd、R7i、R7iz、R8a、R8g、R8gb、R8gd、R8gn、R8i、R8i-flex、X2gd、X8aedz、X8i
+ ストレージ最適化: I3、I3en、I4g、I7i、I7ie、I8g、I8ge、Im4gn、Is4gen

------
#### [ Console ]

**休止をサポートしているインスタンスタイプを取得するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. **[オンデマンド休止のサポート] = [true]** でフィルタリングします。

1. (オプション) フィルターを追加して、対象の、特定のインスタンスタイプをさらに絞り込みます。

------
#### [ AWS CLI ]

**休止をサポートしているインスタンスタイプを取得するには**  
[describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/describe-instance-types/.html) コマンドを使用します。使用可能なインスタンスタイプはリージョンごとに異なることに注意してください。

```
aws ec2 describe-instance-types \
    --filters Name=hibernation-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```

------
#### [ PowerShell ]

**休止をサポートしているインスタンスタイプを取得するには**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) コマンドレットを使用します。使用可能なインスタンスタイプはリージョンごとに異なることに注意してください。

```
(Get-EC2InstanceType `
    -Filter @{Name="hibernation-supported"; Values="true"}).InstanceType | Sort-Object
```

------

## インスタンスの RAM サイズ
<a name="instance-ram-size"></a>

**Linux インスタンス** – 150 GiB 未満である必要があります。

**Windows インスタンス** – 16 GiB 以下である必要があります。T3 または T3a インスタンスの休止には、最低 1 GiB の RAM をお勧めします。

## ルートボリュームタイプ
<a name="hibernation-prereqs-root-volume-type"></a>

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

## ルートボリュームサイズ
<a name="hibernation-prereqs-ebs-root-volume-size"></a>

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

## ルートボリュームの暗号化
<a name="hibernation-prereqs-ebs-root-volume-encryption"></a>

休止時にメモリ内にある機密性の高いコンテンツを保護するためにルートボリュームを暗号化する必要があります。RAM データを EBS ルートボリュームに移動する場合は、常に暗号化します。ルートボリュームの暗号化は、インスタンスの起動時に適用されます。

ルートボリュームが暗号化された EBS ボリュームであることを確認するには、次の 3 つのオプションのいずれかを使用します。
+ **デフォルトでの EBS 暗号化**: EBS 暗号化をデフォルトで有効にして、AWS アカウントで作成されたすべての新しい EBS ボリュームを暗号化できます。この方法では、インスタンスの起動時に暗号化のインテントを指定することなく、インスタンスの休止を有効にすることができます。詳細については、「[デフォルトで暗号化を有効にする](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html)」を参照してください。
+ **EBS の「シングルステップ」暗号化**: 暗号化されていない AMI から暗号化された EBS-Backed EC2 インスタンスを起動し、同時に休止状態を有効にすることができます。詳細については、[EBS-backed AMI での暗号化の利用](AMIEncryption.md)を参照してください。
+ **暗号化された AMI**: 暗号化された AMI を使用してインスタンスを起動することで、EBS 暗号化を有効にすることができます。暗号化されたルートスナップショットが AMI にない場合は、それを新しい AMI にコピーして暗号化をリクエストできます。詳細については、「[コピー時に暗号化されていないイメージを暗号化する](AMIEncryption.md#copy-unencrypted-to-encrypted)」および「[AMI のコピー](CopyingAMIs.md#ami-copy-steps)」を参照してください。

## EBS ボリュームタイプ
<a name="hibernation-prereqs-ebs-volume-types"></a>

EBS ボリュームは、次のいずれかの EBS ボリュームタイプを使用する必要があります。
+ 汎用 SSD (`gp2` および `gp3`)
+ プロビジョンド IOPS SSD (`io1` および `io2`)

プロビジョンド IOPS SSD ボリュームタイプを選択した場合、休止状態の最適なパフォーマンスを実現するには、適切な IOPS で EBS ボリュームをプロビジョニングする必要があります。詳細については、「*Amazon EBS ユーザーガイド*」の「[Amazon EBS ボリュームの種類](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html)」を参照してください。

## スポットインスタンスリクエスト
<a name="hibernation-prereqs-spot-request"></a>

スポットインスタンスには、次の要件が適用されます。
+ スポットインスタンスのリクエストのタイプは `persistent` である必要があります。
+ スポットインスタンスリクエストで起動グループを指定することはできません。

# Linux AMI で休止がサポートされるように設定する
<a name="hibernation-enabled-AMI"></a>

以下の Linux AMI は、Amazon EC2 インスタンスの休止に対応できます。ただし、ここで説明する追加の設定手順を完了した場合に限ります。

**Topics**
+ [AL2023 最小 AMI は 2023 年 9 月 20 日以降にリリース](#configure-AL2023-minimal-for-hibernation)
+ [Amazon Linux 2 minimal AMI (2019 年 8 月 29 日以降にリリース)](#configure-AL2-minimal-for-hibernation)
+ [2019 年 8 月 29 日以前にリリースされた Amazon Linux 2](#configure-AL2-for-hibernation)
+ [2018 年 11 月 16 日以前にリリースされた Amazon Linux](#configure-AL-for-hibernation)
+ [CentOS バージョン 8 以降](#configure-centos-for-hibernation)
+ [Fedora バージョン 34 以降](#configure-fedora-for-hibernation)
+ [Red Hat Enterprise Linux バージョン 8 または 9 以降](#configure-RHEL-for-hibernation)
+ [シリアル番号 20210820 よりも前にリリースされた Ubuntu 20.04 LTS (Focal Fossa)](#configure-ubuntu2004-for-hibernation)
+ [シリアル番号 20190722.1 よりも前にリリースされた Ubuntu 18.04 (Bionic Beaver)](#configure-ubuntu1804-for-hibernation)
+ [Ubuntu 16.04 (Xenial Xerus)](#configure-ubuntu1604-for-hibernation)

休止に対応し、*追加で*設定を行う必要がない Linux と Windows AMI については、「[AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)」を参照してください。

詳細については、「[Amazon Linux 2 インスタンスでのインスタンスソフトウェアの更新](https://docs.aws.amazon.com/linux/al2/ug/install-updates.html)」を参照してください。

## AL2023 最小 AMI は 2023 年 9 月 20 日以降にリリース
<a name="configure-AL2023-minimal-for-hibernation"></a>

**ハイバネーションをサポートするために 2023 年 9 月 20 日以降にリリースされた AL2023 最小 AMI の設定方法**

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo dnf install ec2-hibinit-agent
   ```

1. サービスを再起動します。

   ```
   [ec2-user ~]$ sudo systemctl start hibinit-agent
   ```

## Amazon Linux 2 minimal AMI (2019 年 8 月 29 日以降にリリース)
<a name="configure-AL2-minimal-for-hibernation"></a>

**2019 年 8 月 29 日以降にリリースされた Amazon Linux 2 minimal AMI で休止がサポートされるように設定するには**

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. サービスを再起動します。

   ```
   [ec2-user ~]$ sudo systemctl start hibinit-agent
   ```

## 2019 年 8 月 29 日以前にリリースされた Amazon Linux 2
<a name="configure-AL2-for-hibernation"></a>

**2019 年 8 月 29 日以前にリリースされた Amazon Linux 2 AMI で休止がサポートされるように設定するには**

1. `4.14.138-114.102`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

1. インスタンスを停止し、AMI を作成します。詳細については、「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

## 2018 年 11 月 16 日以前にリリースされた Amazon Linux
<a name="configure-AL-for-hibernation"></a>

**2018 年 11 月 16 日以前にリリースされた Amazon Linux AMI で休止がサポートされるように設定するには**

1. `4.14.77-70.59`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

1. インスタンスを停止し、AMI を作成します。詳細については、「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

## CentOS バージョン 8 以降
<a name="configure-centos-for-hibernation"></a>

**休止状態をサポートするように CentOS バージョン 8 以降の AMI を設定するには**

1. `4.18.0-305.7.1.el8_4.x86_64`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. このステップでは、Fedora Extra Packages for Enterprise Linux (EPEL) リポジトリをインストールします。

   ```
   [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. 起動時に休止状態エージェントを起動できるようにします。

   ```
   [ec2-user ~]$ sudo systemctl enable hibinit-agent.service
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

## Fedora バージョン 34 以降
<a name="configure-fedora-for-hibernation"></a>

**休止状態をサポートするために Fedora バージョン 34 以降の AMI を設定するには**

1. `5.12.10-300.fc34.x86_64`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo dnf install ec2-hibinit-agent
   ```

1. 起動時に休止状態エージェントを起動できるようにします。

   ```
   [ec2-user ~]$ sudo systemctl enable hibinit-agent.service
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

## Red Hat Enterprise Linux バージョン 8 または 9 以降
<a name="configure-RHEL-for-hibernation"></a>

**休止状態をサポートするように Red Hat Enterprise Linux 8 または 9 AMI を設定するには**

1. `4.18.0-305.7.1.el8_4.x86_64`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. このステップでは、Fedora Extra Packages for Enterprise Linux (EPEL) リポジトリをインストールします。

   RHEL バージョン 8:

   ```
   [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
   ```

   RHEL バージョン 9:

   ```
   [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. 起動時に休止状態エージェントを起動できるようにします。

   ```
   [ec2-user ~]$ sudo systemctl enable hibinit-agent.service
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

## シリアル番号 20210820 よりも前にリリースされた Ubuntu 20.04 LTS (Focal Fossa)
<a name="configure-ubuntu2004-for-hibernation"></a>

**シリアル番号 20210820 よりも前にリリースされた Ubuntu 20.04 LTS (Focal Fossa) AMI で休止がサポートされるように設定するには**

1. linux-aws-kernel を `5.8.0-1038.40` 以降に、grub2 を `2.04-1ubuntu26.13` 以降に更新します。

   ```
   [ec2-user ~]$ sudo apt update
   [ec2-user ~]$ sudo apt dist-upgrade
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

1. 次のコマンドを実行して、grub2 バージョンが `2.04-1ubuntu26.13` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ dpkg --list | grep grub2-common
   ```

## シリアル番号 20190722.1 よりも前にリリースされた Ubuntu 18.04 (Bionic Beaver)
<a name="configure-ubuntu1804-for-hibernation"></a>

**シリアル番号 20190722.1 以前にリリースされた Ubuntu 18.04 LTS AMI で休止がサポートされるように設定するには**

1. `4.15.0-1044`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo apt update
   [ec2-user ~]$ sudo apt dist-upgrade
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo apt install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

## Ubuntu 16.04 (Xenial Xerus)
<a name="configure-ubuntu1604-for-hibernation"></a>

Ubuntu 16.04 LTS で休止がサポートされるように設定するには、linux-aws-hwe カーネルパッケージバージョン 4.15.0-1058-aws 以降および ec2-hibinit-agent をインストールする必要があります。

**重要**  
`linux-aws-hwe` カーネルパッケージは、Canonical でサポートされています。Ubuntu 16.04 LTS の標準サポートは 2021 年 4 月に終了し、パッケージは定期的な更新を受信しなくなりました。ただし、拡張セキュリティメンテナンスのサポートが2024年に終了するまで、追加のセキュリティアップデートを受け取ります。詳細については、[Ubuntu 16.04 LTS 用 Amazon EC2 の休止機能が利用可能に](https://ubuntu.com/blog/amazon-ec2-hibernation-for-ubuntu-16-04-lts-now-available)を参照してください。  
Ubuntu 20.04 LTS (Focal Fossa) AMI または Ubuntu 18.04 LTS (Bionic Beaver) AMI にアップグレードすることをお勧めします。

**Ubuntu 16.04 LTS AMI で休止がサポートされるように設定するには**

1. `4.15.0-1058-aws`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo apt update
   [ec2-user ~]$ sudo apt install linux-aws-hwe
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo apt install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

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

   ```
   [ec2-user ~]$ uname -a
   ```

# Amazon EC2 インスタンスの休止の有効化
<a name="enabling-hibernation"></a>

インスタンスを休止するには、まずインスタンスを起動するときに休止を有効にする必要があります。

**重要**  
インスタンスの起動後に、そのインスタンスの休止を有効または無効にすることはできません。

**Topics**
+ [オンデマンドインスタンスの休止を有効にする](#enable-hibernation-for-on-demand-instances)
+ [スポットインスタンスの休止を有効にする](#enable-hibernation-for-spot-instances)
+ [インスタンスで休止が有効かどうかを表示する](#view-if-instance-is-enabled-for-hibernation)

## オンデマンドインスタンスの休止を有効にする
<a name="enable-hibernation-for-on-demand-instances"></a>

オンデマンドインスタンスの休止を有効にできます。

------
#### [ Console ]

**オンデマンドインスタンスの休止を有効にするには**

1. 手順に従って[インスタンスを起動](ec2-launch-instance-wizard.md)しますが、次のステップを完了して休止状態を有効にするまでインスタンスを起動しないでください。

1. 休止状態を有効にするには、インスタンス起動ウィザードで次のフィールドを設定します。

   1. **[Application and OS Images (Amazon Machine Image)]** (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、休止状態をサポートする AMI を選択してください。詳細については、「[AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)」を参照してください。

   1. **[Instance type]** (インスタンスタイプ) で、サポートされているインスタンスタイプを選択してください。詳細については、「[インスタンスファミリー](hibernating-prerequisites.md#hibernation-prereqs-supported-instance-families)」を参照してください。

   1. **[Configure storage]** (ストレージを設定) で、**[Advanced]** (高度) (右側) を選択し、ルートボリュームに関する次の情報を指定します。
      + [**サイズ (GiB)**] に、EBS ルートボリュームのサイズを入力してください。ボリュームは、RAM の内容を格納して予想使用量に対応できるだけのサイズにする必要があります。
      + **[Volume type]** (ボリュームタイプ) で、サポートされている EBS ボリュームタイプである汎用 SSD (`gp2` および `gp3`) またはプロビジョンド IOPS SSD (`io1` および `io2`) を選択してください。
      + **[Encrypted]** (暗号化) で、**[Yes]** (はい) を選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、**[Yes]** (はい) が選択されます。
      + **[KMS key]** (KMS キー) で、ボリュームの暗号化キーを選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、デフォルトの暗号化キーが選択されます。

      ルートボリュームの前提条件の詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。

   1. **[Advanced details]** (高度な詳細) を展開し、**[Stop - Hibernate behavior]** (停止 - 休止状態の動作) で **[Enable]** (有効にする) を選択してください。

1. **[Summary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については、「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**オンデマンドインスタンスの休止を有効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して、インスタンスを起動します。`--block-device-mappings file://mapping.json` パラメータを使用して EBS ルートボリュームのパラメータを指定し、`--hibernation-options Configured=true` パラメータを使用して休止状態を有効にします。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type m5.large \
    --block-device-mappings file://mapping.json \
    --hibernation-options Configured=true \
    --count 1 \
    --key-name MyKeyPair
```

`mapping.json` で、以下を指定します。

```
[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
            "VolumeSize": 30,
            "VolumeType": "gp2",
            "Encrypted": true
        }
    }
]
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images --image-id ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、`"Encrypted": true` を省略できます。

------
#### [ PowerShell ]

**オンデマンドインスタンスの休止を有効にするには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドを使用してインスタンスを起動します。EBS ルートボリュームを指定します。最初にブロックデバイスマッピングを定義し、次に `-BlockDeviceMappings` パラメータを使用してそれをコマンドに追加します。`-HibernationOptions_Configured $true` パラメータを使用して休止を有効にします。

```
$ebs_encrypt = New-Object Amazon.EC2.Model.BlockDeviceMapping
$ebs_encrypt.DeviceName = "/dev/xvda"
$ebs_encrypt.Ebs = New-Object Amazon.EC2.Model.EbsBlockDevice
$ebs_encrypt.Ebs.VolumeSize = 30
$ebs_encrypt.Ebs.VolumeType = "gp2"
$ebs_encrypt.Ebs.Encrypted = $true

New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType m5.large `
    -BlockDeviceMappings $ebs_encrypt `
    -HibernationOptions_Configured $true `
    -MinCount 1 `
    -MaxCount 1 `
    -KeyName MyKeyPair
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドを使用します。

```
Get-EC2Image -ImageId ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、ブロックデバイスマッピングから `Encrypted = $true` を省略できます。

------

## スポットインスタンスの休止を有効にする
<a name="enable-hibernation-for-spot-instances"></a>

スポットインスタンスの休止を有効にできます。中断時のスポットインスタンスの休止に関する詳細は、「[スポットインスタンスの中断。](spot-interruptions.md)」を参照してください。

------
#### [ Console ]

**スポットインスタンスの休止を有効にするには**

1. 次の手順に従って、[インスタンス起動ウィザードを使ってスポットインスタンスをリクエスト](using-spot-instances-request.md)しますが、次のステップを完了して休止を有効にするまで、インスタンスを起動しないでください。

1. 休止状態を有効にするには、インスタンス起動ウィザードで次のフィールドを設定します。

   1. **[Application and OS Images (Amazon Machine Image)]** (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、休止状態をサポートする AMI を選択してください。詳細については、「[AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)」を参照してください。

   1. **[Instance type]** (インスタンスタイプ) で、サポートされているインスタンスタイプを選択してください。詳細については、「[インスタンスファミリー](hibernating-prerequisites.md#hibernation-prereqs-supported-instance-families)」を参照してください。

   1. **[Configure storage]** (ストレージを設定) で、**[Advanced]** (高度) (右側) を選択し、ルートボリュームに関する次の情報を指定します。
      + [**サイズ (GiB)**] に、EBS ルートボリュームのサイズを入力してください。ボリュームは、RAM の内容を格納して予想使用量に対応できるだけのサイズにする必要があります。
      + **[Volume type]** (ボリュームタイプ) で、サポートされている EBS ボリュームタイプである汎用 SSD (`gp2` および `gp3`) またはプロビジョンド IOPS SSD (`io1` および `io2`) を選択してください。
      + **[Encrypted]** (暗号化) で、**[Yes]** (はい) を選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、**[Yes]** (はい) が選択されます。
      + **[KMS key]** (KMS キー) で、ボリュームの暗号化キーを選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、デフォルトの暗号化キーが選択されます。

      ルートボリュームの前提条件の詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。

   1. **[詳細設定]** を展開し、スポットインスタンスを設定するフィールドに加えて次の操作を行います。

      1. **[リクエストタイプ]** で **[永続的]** を選択してください。

      1. **[中断動作]** で **[休止]** を選択してください。または、**[停止 - 休止動作]** で **[有効]** を選択してください。どちらのフィールドも、スポットインスタンスの休止を有効にします。いずれか 1 つ設定すれば済みます。

1. **[Summary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については、「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**スポットインスタンスの休止を有効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用してスポットインスタンスをリクエストします。`--block-device-mappings file://mapping.json` パラメータを使用して EBS ルートボリュームのパラメータを指定し、`--hibernation-options Configured=true` パラメータを使用して休止状態を有効にします。スポットのリクエストのタイプ `SpotInstanceType`は `persistent` である必要があります。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c4.xlarge \
    --block-device-mappings file://mapping.json \
    --hibernation-options Configured=true \
    --count 1 \
    --key-name MyKeyPair
    --instance-market-options
        {
           "MarketType":"spot",
           "SpotOptions":{
              "MaxPrice":"1",
              "SpotInstanceType":"persistent"
            }
        }
```

`mapping.json` の EBS ルートボリュームパラメータを次のとおり指定します。

```
[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
            "VolumeSize": 30,
            "VolumeType": "gp2",
            "Encrypted": true
        }
    }
]
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images --image-id ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、`"Encrypted": true` を省略できます。

------
#### [ PowerShell ]

**スポットインスタンスの休止を有効にするには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドを使用してスポットインスタンスをリクエストします。EBS ルートボリュームを指定します。最初にブロックデバイスマッピングを定義し、次に `-BlockDeviceMappings` パラメータを使用してそれをコマンドに追加します。`-HibernationOptions_Configured $true` パラメータを使用して休止を有効にします。

```
$ebs_encrypt = New-Object Amazon.EC2.Model.BlockDeviceMapping
$ebs_encrypt.DeviceName = "/dev/xvda"
$ebs_encrypt.Ebs = New-Object Amazon.EC2.Model.EbsBlockDevice
$ebs_encrypt.Ebs.VolumeSize = 30
$ebs_encrypt.Ebs.VolumeType = "gp2"
$ebs_encrypt.Ebs.Encrypted = $true

New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType m5.large `
    -BlockDeviceMappings $ebs_encrypt `
    -HibernationOptions_Configured $true `
    -MinCount 1 `
    -MaxCount 1 `
    -KeyName MyKeyPair `
    -InstanceMarketOption @(
        MarketType = spot;
        SpotOptions @{
        MaxPrice = 1;
        SpotInstanceType = persistent}
    )
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドを使用します。

```
Get-EC2Image -ImageId ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、ブロックデバイスマッピングから `Encrypted = $true` を省略できます。

------

## インスタンスで休止が有効かどうかを表示する
<a name="view-if-instance-is-enabled-for-hibernation"></a>

インスタンスの休止が有効であるかどうかを確認できます。

------
#### [ Console ]

**インスタンスで休止が有効かどうかを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**Details (詳細)**] タブの [**Instance details (インスタンスの詳細)**] セクションで、[**Stop-hibernate behavior (停止 - 休止動作)**] を確認します。[**有効**] は、インスタンスが休止に対して有効であることを示します。

------
#### [ AWS CLI ]

**インスタンスで休止が有効かどうかを表示するには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用し、`--filters "Name=hibernation-options.configured,Values=true"` パラメータを指定して、休止が有効になっているインスタンスをフィルタリングします。

```
aws ec2 describe-instances \
    --filters "Name=hibernation-options.configured,Values=true"
```

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

```
"HibernationOptions": {
    "Configured": true
}
```

------
#### [ PowerShell ]

**インスタンスで休止が有効かどうかを表示するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用し、休止が有効になっているインスタンスをフィルタリングします。

```
(Get-EC2Instance `
    -Filter @{Name="hibernation-options.configured"; Values="true"}).Instances
```

------

# インスタンスでの KASLR の無効化 (Ubuntu のみ)
<a name="hibernation-disable-kaslr"></a>

Ubuntu 16.04 LTS (Xenial Xerus)、Ubuntu 18.04 LTS (Bionic Beaver) (シリアル番号 20190722.1 以降でリリース)、または Ubuntu 20.04 LTS (Focal Fossa) (シリアル番号 20210820 以降でリリース) で新しく起動されたインスタンスで休止を使用するには、KASLR (Kernel Address Space Layout Randomization) を無効にするようお勧めします。Ubuntu 16.04 LTS、Ubuntu 18.04 LTS、または Ubuntu 20.04 LTS では、デフォルトで KASLR が有効になっています。

KASLR は、Linux カーネルに対する標準的なセキュリティ機能であり、カーネルのベースアドレス値をランダム化することにより、未知のメモリアクセス脆弱性による露出と影響を軽減するために役立ちます。KASLR が有効になっている場合は、インスタンスを休止後に再開できないこともあります。

KASLR の詳細については、[Ubuntu の機能に関する記述](https://wiki.ubuntu.com/Security/Features)を参照してください。

**Ubuntu で起動したインスタンスで KASLR を無効にするには**

1. SSH を使用してインスタンスに接続します。詳細については、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。

1. 適切なエディタで、`/etc/default/grub.d/50-cloudimg-settings.cfg` ファイルを開きます。次の例のように、`GRUB_CMDLINE_LINUX_DEFAULT` 行を編集して、行末に `nokaslr` オプションを追加します。

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295 nokaslr"
   ```

1. ファイルを保存し、エディタを終了します。

1. grub 設定を再構築するには、次のコマンドを実行します。

   ```
   sudo update-grub
   ```

1. インスタンスを再起動します。

   ```
   sudo reboot
   ```

1. 次のコマンドを実行して、`nokaslr` が追加されたことを確認します。

   ```
   cat /proc/cmdline
   ```

   コマンドの出力には、`nokaslr` オプションが含まれている必要があります。

# Amazon EC2 インスタンスの休止
<a name="hibernating-instances"></a>

インスタンスが EBS ベースのインスタンスであり、[休止が有効](enabling-hibernation.md)になっており、[休止の前提条件](hibernating-prerequisites.md)を満たしている場合、オンデマンドインスタンスまたはスポットインスタンスで休止を開始できます。インスタンスを休止できない場合、通常のシャットダウンが実行されます。

------
#### [ Console ]

**インスタンスを休止するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**Instance state (インスタンスの状態)**]、[**Hibernate instance (インスタンスの休止)**] の順に選択してください。[**Hibernate instance (インスタンスの休止)**] が無効になっている場合は、インスタンスが既に休止または停止しているか、休止できません。詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。

1. 確認を求めるメッセージが表示されたら、[**休止**] を選択してください。インスタンスが休止するまで、数分かかる場合があります。インスタンスの状態は、最初に**停止中**に変化し、インスタンスが休止状態になったときに**停止**に変化します。

------
#### [ AWS CLI ]

**インスタンスを休止するには**  
[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンドを使用して `--hibernate` パラメータを指定します。

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

------
#### [ PowerShell ]

**インスタンスを休止するには**  
[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) コマンドレットを使用します。

```
Stop-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -Hibernate $true
```

------

インスタンスで休止が開始されたかどうかを確認できます。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、**[詳細]** タブの **[インスタンスの詳細]** セクションで、**[状態遷移メッセージ]** の値を確認します。

   **Client.UserInitiatedHibernate: User initiated hibernate** というメッセージは、オンデマンドインスタンスまたはスポットインスタンスで休止が開始されたことを示しています。

------
#### [ AWS CLI ]

**インスタンスで休止が開始されたかどうかを表示するには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用して、`state-reason-code` フィルターを指定し、休止が開始されたインスタンスを確認します。

```
aws ec2 describe-instances \
    --filters "Name=state-reason-code,Values=Client.UserInitiatedHibernate"
```

以下の出力のフィールドは、そのオンデマンドインスタンスまたはスポットインスタンスで休止が開始されたことを示しています。

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

------
#### [ PowerShell ]

**インスタンスで休止が開始されたかどうかを表示するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用し、`state-reason-code` フィルタを指定して休止が開始されたインスタンスを確認します。

```
Get-EC2Instance `
    -Filter @{Name="state-reason-code";Value="Client.UserInitiatedHibernate"}
```

------

# 休止した Amazon EC2 インスタンスの起動
<a name="hibernating-resuming"></a>

休止したインスタンスは、停止したインスタンスを起動するのと同じ方法で起動します。

スポットインスタンスの場合、Amazon EC2 がインスタンスを休止にした場合、それを再開できるのは Amazon EC2 のみです。*ユーザー*は、自分で休止した場合のみ、休止したスポットインスタンスを再開できます。スポットインスタンスは、容量が空いていて、スポット料金が、指定した上限料金以下である場合、再開できます。

------
#### [ Console ]

**休止したインスタンスの起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 休止したインスタンスを選択し、[**Instance state (インスタンスの状態)**]、[**Start instance (インスタンスの開始)**] の順に選択してください。インスタンスが `running` 状態になるまで、数分かかる場合があります。この間、インスタンスの [ステータスチェック](monitoring-system-instance-status-check.md#types-of-instance-status-checks) では、インスタンスが起動するまで、インスタンスは失敗状態にあるように表示されます。

------
#### [ AWS CLI ]

**休止したインスタンスの起動するには**  
[start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) コマンドを使用します。

```
aws ec2 start-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**休止したインスタンスの起動するには**  
[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) コマンドレットを使用します。

```
Start-EC2Instance -InstanceId i-1234567890abcdef0
```

------

# Amazon EC2 インスタンスの休止のトラブルシューティング
<a name="troubleshoot-instance-hibernate"></a>

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

**Topics**
+ [起動直後に休止できません](#hibernate-troubleshooting-1)
+ [stopping から stopped への移行に時間がかかりすぎ、起動後にメモリ状態が復元されません](#hibernate-troubleshooting-2)
+ [インスタンスが stopping 状態で止まりました](#hibernate-troubleshooting-3)
+ [休止の直後にスポットインスタンスを起動できない](#hibernate-troubleshooting-4)
+ [スポットインスタンスを再開できない](#hibernate-troubleshooting-5)

## 起動直後に休止できません
<a name="hibernate-troubleshooting-1"></a>

インスタンスの起動後にすぐ休止しようとすると、エラーが発生します。

起動後、Linux インスタンスの場合は約 2 分、Windows インスタンスの場合は約 5 分待ってから休止する必要があります。

## stopping から stopped への移行に時間がかかりすぎ、起動後にメモリ状態が復元されません
<a name="hibernate-troubleshooting-2"></a>

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

**Linux インスタンス**

インスタンスのシステムログをチェックして、休止に関連するメッセージを探します。システムログにアクセスするには、インスタンスに[接続](connect-to-linux-instance.md)するか、[get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) コマンドを使用します。`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 の詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。独自の Linux AMI を使用した場合は、必ず [Linux AMI で休止がサポートされるように設定する](hibernation-enabled-AMI.md) の指示に従ってください。

**Windows Server 2016 以降**  
EC2 起動ログをチェックして、休止に関連するメッセージを探します。EC2 起動ログにアクセスするには、インスタンスに[接続](connecting_to_windows_instance.md)し、テキストエディタで `C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log` ファイルを開きます。EC2Launch v2 を使用している場合は、`C:\ProgramData\Amazon\EC2Launch\log\agent.log` を開きます。

**注記**  
Windows では、デフォルトで `C:\ProgramData` 以下のファイルとフォルダは非表示になります。EC2 起動ディレクトリおよびファイルを表示するには、Windows エクスプローラーにパスを入力するか、フォルダのプロパティを変更して非表示のファイルおよびフォルダを表示します。

休止に関するログ行を見つけます。ログ行が失敗を示している場合、またはログ行がない場合、起動時に休止の設定に失敗している可能性が高いと思われます。

例えば、「`Message: Failed to enable hibernation.`」 というメッセージは、休止の設定に失敗したことを示しています。エラーメッセージに 10 進数の ASCII 値が含まれている場合は、ASCII 値をプレーンテキストに変換すると、エラーメッセージ全体を読み取ることができます。

ログ行に `HibernationEnabled: true` が含まれている場合、休止は正常に設定されています。

**Windows Server 2012 R2 以前**  
EC2 設定ログをチェックして、休止に関連するメッセージを探します。EC2 設定ログにアクセスするには、インスタンスに[接続](connecting_to_windows_instance.md)し、テキストエディタで `C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt` ファイルを開きます。`SetHibernateOnSleep` のログ行を見つけます。ログ行が失敗を示している場合、またはログ行がない場合、起動時に休止の設定に失敗している可能性が高いと思われます。

例えば、メッセージ「`SetHibernateOnSleep: Failed to enable hibernation: Hibernation failed with the following error: There is not enough space on the disk.`」は、インスタンスのルートボリュームの大きさが十分ではないことを示しています。

ログ行が `SetHibernateOnSleep: HibernationEnabled: true` である場合、休止は正常に設定されています。

**Windows インスタンスサイズ**  
1 GiB 未満の RAM を持つ T3 または T3a Windows インスタンスを使用している場合は、インスタンスのサイズを少なくとも 1 GiB の RAM に増加してみてください。

## インスタンスが stopping 状態で止まりました
<a name="hibernate-troubleshooting-3"></a>

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

## 休止の直後にスポットインスタンスを起動できない
<a name="hibernate-troubleshooting-4"></a>

休止にしてから 2 分以内にスポットインスタンスを起動しようとすると、次のエラーが発生する場合があります。

`You failed to start the Spot Instance because the associated Spot Instance request is not in an appropriate state to support start.`

Linux インスタンスの場合は約 2 分、Windows インスタンスの場合は約 5 分待ってから、インスタンスの起動を再試行してください。

## スポットインスタンスを再開できない
<a name="hibernate-troubleshooting-5"></a>

スポットインスタンスが正常に休止されたが再開に失敗し、代わりに再起動 (休止状態を維持せずに新たに再起動) した場合、ユーザーデータに次のスクリプトが含まれていたことが原因である可能性があります。

```
/usr/bin/enable-ec2-spot-hibernation
```

起動テンプレートの **[ユーザーデータ]** フィールドからこのスクリプトを削除し、新しいスポットインスタンスをリクエストしてください。

休止状態を維持せずにインスタンスの再開に失敗した場合でも、インスタンスは `stopped` 状態から開始するのと同じ方法で起動できることに注意してください。

# Amazon EC2 インスタンスを再起動する
<a name="ec2-instance-reboot"></a>

インスタンスの再起動は、オペレーティングシステムの再起動と同等です。ほとんどの場合、インスタンスの再起動には数分しかかかりません。

インスタンスを再起動しても、次の状態が維持されます。
+ パブリック DNS 名 (IPv4)
+ プライベート IPv4 アドレス
+ パブリック IPv4 アドレス
+ IPv6 アドレス (該当する場合)
+ インスタンスストアボリューム上のすべてのデータ

インスタンスの[停止および開始](Stop_Start.md) (1分間の最低料金で新しい課金期間が開始される）の場合とは異なり、インスタンスを再起動しても、インスタンスの課金期間が新しく開始されることはありません。

インスタンスの再起動は、ユーザーが開始する (インスタンスを手動で再起動する) か、(自動インスタンス復旧の場合や、再起動を必要とする更新を適用するなど、必要なメンテナンスのためにスケジュールされた再起動イベントに応答する場合には) AWS によって開始されることがあります。

ユーザーが開始する再起動の場合は、インスタンスからオペレーティングシステムの再起動コマンドを実行するのではなく、Amazon EC2 コンソール、CLI、または API を使用することをお勧めします。Amazon EC2 を使用する場合、インスタンスが数分以内に正常にシャットダウンされない場合、Amazon EC2 はハードリブートを実行します。さらに、AWS CloudTrail はインスタンスが再起動されたときの API レコードを作成します。

このトピックでは、ユーザーが開始する再起動を実行する方法について説明します。AWS によって実行される再起動の詳細については、「[インスタンスの自動復旧](ec2-instance-recover.md)」および「[再起動が予定されている Amazon EC2 インスタンスを管理する](schedevents_actions_reboot.md)」を参照してください。

**重要**  
インスタンスに更新プログラムがインストールされている場合、すべての更新プログラムがインストールされるまで、Amazon EC2 コンソールやコマンドラインを使用してインスタンスを再起動またはシャットダウンしないでください。Amazon EC2 コンソールやコマンドラインを使用してインスタンスを再起動またはシャットダウンすると、インスタンスがハードリブートされる恐れがあります。更新ファイルのインストール中にハードリブートされると、インスタンスが不安定な状態になることがあります。

------
#### [ Console ]

**インスタンスを再起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択してから、**[Instance state]** (インスタンス状態)、**[Reboot instance]** (インスタンスの再起動) の順に選択します。

1. 確認を求めるメッセージが表示されたら、[**Yes, Reboot (再起動する)**] を選択します。

   インスタンスは `running` 状態を維持します。

------
#### [ AWS CLI ]

**インスタンスを再起動するには**  
[reboot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/reboot-instances.html) コマンドを使用します。

```
aws ec2 reboot-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**インスタンスを再起動するには**  
[Restart-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Restart-EC2Instance.html) コマンドレットを使用します。

```
Restart-EC2Instance -InstanceId i-1234567890abcdef0
```

------

**制御された故障注入実験を実行するには**  
AWS Fault Injection Service を使用して、インスタンスが再起動されたときのアプリケーションの応答をテストできます。詳細については、[AWS Fault Injection Service ユーザーガイド](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)を参照してください。

# Amazon EC2 インスタンスを終了する
<a name="terminating-instances"></a>

**警告**  
**インスタンスの終了は恒久的で、元に戻すことができません。**  
インスタンスを終了すると、そのインスタンスには接続できなくなり、復元することもできません。アタッチされている Amazon EBS ボリュームで、終了時に削除されるように設定されているものも、すべて恒久的に削除され、復元できません。インスタンスストアボリュームに保存されているデータは、すべて恒久的に失われます。詳細については、「[インスタンスの終了方法](how-ec2-instance-termination-works.md)」を参照してください。  
インスタンスを終了する前に、終了後も保持する必要があるすべてのデータを永続的ストレージにバックアップしたことを確認してください。

不要になったインスタンスは削除できます。これは、インスタンスの*終了* と呼ばれます。インスタンスの状態が `shutting-down` または `terminated` に変わったら、そのインスタンスへの課金は停止します。

インスタンスを削除した後に、接続または起動することはできません。ただし、同じ AMI を使用して新たなインスタンスを起動することができます。

インスタンスを停止または休止する場合、「[Amazon EC2 インスタンスの停止と開始](Stop_Start.md)」または「[Amazon EC2 インスタンスの休止](Hibernate.md)」を参照してください。詳細については、「[インスタンスの状態の違い](ec2-instance-lifecycle.md#lifecycle-differences)」を参照してください。

**Topics**
+ [インスタンスの終了方法](how-ec2-instance-termination-works.md)
+ [インスタンスを終了するメソッド](instance-terminate-methods.md)
+ [正常な OS シャットダウンでインスタンスを終了する](#terminating-instances-console)
+ [インスタンスを終了して正常な OS シャットダウンをバイパスする](#terminating-instances-bypass-graceful-os-shutdown)
+ [インスタンスの終了のトラブルシューティング](#troubleshoot-instance-terminate)
+ [インスタンスの終了保護を変更する](Using_ChangingDisableAPITermination.md)
+ [インスタンスによるシャットダウン動作を変更する](Using_ChangingInstanceInitiatedShutdownBehavior.md)
+ [インスタンスの終了時にデータを保持する](preserving-volumes-on-termination.md)

# インスタンスの終了方法
<a name="how-ec2-instance-termination-works"></a>

インスタンスを終了すると、変更はインスタンスのオペレーティングシステム (OS) レベルで登録され、一部のリソースは失われますが、存続するリソースもあります。

次の図は、Amazon EC2 インスタンスを終了したときに失われるものと残るものを示しています。インスタンスが終了されると、インスタンスストアボリューム上のデータおよびインスタンス RAM に保存されたデータは消去されます。インスタンスに関連付けられた Elastic IP アドレスはデタッチされます。Amazon EBS のルートボリュームおよびデータボリュームの場合、結果は各ボリュームの **[終了時に削除]** の設定によって異なります。

![\[IP アドレス、RAM、インスタンスストアボリューム、EBS ルートボリュームは、インスタンスが終了したときに消去されます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/terminate-instance.png)


## 考慮事項
<a name="terminate-instance-overview"></a>
+ **データの永続性**
  + インスタンスストアボリューム: インスタンスが終了すると、すべてのデータが完全に削除されます。
  + EBS ルートボリューム
    + 起動時にアタッチすると、インスタンスが終了するとデフォルトで削除されます。
    + 起動後にアタッチすると、インスタンスが終了するとデフォルトで保持されます。
  + EBS データボリューム
    + コンソールを使用して起動時にアタッチした場合: インスタンスが終了するとデフォルトで保持されます。
    + CLI を使用して起動時にアタッチした場合: インスタンスが終了するとデフォルトで削除されます。
    + コンソールまたは CLI を使用して起動後にアタッチした場合: インスタンスが終了するとデフォルトで保持されます。
**注記**  
インスタンスの終了時に削除されなかったボリュームは、引き続き料金が発生します。ボリュームが削除されるか、インスタンスの終了時に保持されるように、設定を変更しできます。詳細については、「[インスタンスの終了時にデータを保持する](preserving-volumes-on-termination.md)」を参照してください。
+ **偶発的な終了に対する保護**
  + インスタンスを誤って誰かに終了されないようにするには、[停止保護を有効にします](Using_ChangingDisableAPITermination.md)。
  + インスタンスのシャットダウンの開始時に、インスタンスの停止または終了を制御するには、[インスタンスが開始するシャットダウン動作](Using_ChangingInstanceInitiatedShutdownBehavior.md)を変更します。
+ **シャットダウンスクリプト** – インスタンスの終了時にスクリプトを実行した場合、シャットダウンスクリプトの実行を保証する方法がないため、インスタンスが正常に終了されない可能性があります。Amazon EC2 はインスタンスを正常にシャットダウンし、システムシャットダウンスクリプトの実行を試みます。ただし、特定のイベント (ハードウェア障害など) がこれらのシステムシャットダウンスクリプトの実行を防止する可能性があります。
+ **ベアメタルインスタンス** – x86 ベアメタルインスタンスは協調シャットダウンをサポートしていません。

## インスタンスを削除するとどうなるか
<a name="what-happens-terminate"></a>

**OS レベルでの変更の登録**
+ API リクエストはボタンのクリックイベントをゲストに送信します。
+ ボタンのクリックイベントの結果として、さまざまなシステムサービスが停止します。システムの正常なシャットダウンは、**systemd** (Linux) またはシステムプロセス (Windows) によって行われます。適切なシャットダウンはハイパーバイザーからの ACPI シャットダウンボタンのクリックイベントによってトリガーされます。
+ ACPI シャットダウンが開始されます。
+ インスタンスは、適切なシャットダウンプロセスが終了した後にシャットダウンします。設定可能な OS シャットダウン時間はありません。インスタンスはしばらくの間コンソールに表示されたままですが、エントリは自動的に削除されます。

**失われるリソース**
+ インスタンスストアボリュームに保存されているデータは失われます。
+ `DeleteOnTermination` 属性が `true` に設定されている場合の EBS ルートボリューム。
+ `DeleteOnTermination` 属性が `true` に設定されている場合の EBS データボリューム(起動時または起動後にアタッチ)。

**存続するリソース**
+ `DeleteOnTermination` 属性が `false` に設定されている場合の EBS ルートボリューム。
+ `DeleteOnTermination` 属性が `false` に設定されている場合の EBS データボリューム(起動時または起動後にアタッチ)。

## インスタンスの終了に対するアプリケーションの応答をテスト
<a name="test-terminate-instance"></a>

AWS Fault Injection Service を使用すると、インスタンスが終了した場合のアプリケーションの応答をテストできます。詳細については[AWS Fault Injection Service ユーザーガイド](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)を参照してください。

# インスタンスを終了するメソッド
<a name="instance-terminate-methods"></a>

**警告**  
**インスタンスの終了は恒久的で、元に戻すことができません。**  
インスタンスを終了すると、そのインスタンスには接続できなくなり、復元することもできません。アタッチされている Amazon EBS ボリュームで、終了時に削除されるように設定されているものも、すべて恒久的に削除され、復元できません。インスタンスストアボリュームに保存されているデータは、すべて恒久的に失われます。詳細については、「[インスタンスの終了方法](how-ec2-instance-termination-works.md)」を参照してください。  
インスタンスを終了する前に、終了後も保持する必要があるすべてのデータを永続的ストレージにバックアップしたことを確認してください。

ユーザー主導のインスタンス終了を実行する方法は 4 つあります。デフォルトの終了、OS シャットダウンをスキップした終了、強制終了、OS シャットダウンをスキップした強制終了という 4 つの方法です。次のテーブルでは、終了方法の主な違いが比較されます。

**注記**  
終了保護が有効になっている場合、インスタンスを終了することはできません。詳細については、「[インスタンスの終了保護を変更する](Using_ChangingDisableAPITermination.md)」を参照してください。


| 終了メソッド | 主な目的 | ユースケース | CLI コマンド | 
| --- | --- | --- | --- | 
| デフォルトの終了 | 正常な OS シャットダウンの試行による通常のインスタンスシャットダウン。 | 一般的なインスタンスの終了。 | <pre>aws ec2 terminate-instances \<br />--instance-id i-1234567890abcdef0</pre> | 
| OS シャットダウンをスキップして終了する | インスタンスを終了するとき、正常な OS シャットダウンがバイパスされます。 | 正常な OS シャットダウンをバイパスする必要がある場合。 | <pre>aws ec2 terminate-instances \<br />--instance-id i-1234567890abcdef0 \<br />--skip-os-shutdown</pre> | 
| 強制終了 | スタックしたインスタンスを処理します。最初にデフォルトの終了を試みます。インスタンスが終了しない場合、インスタンスを強制的に終了します。 | インスタンスが shutting-down 状態でスタックしている場合。 | <pre>aws ec2 terminate-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force</pre> | 
| OS シャットダウンをスキップして強制終了する | インスタンスを終了するとき、強制終了し、正常な OS シャットダウンをバイパスします。 | 強制終了し、正常な OS シャットダウンをバイパスする必要がある場合。 | <pre>aws ec2 terminate-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force \<br />--skip-os-shutdown</pre> | 

各メソッドの使用方法の手順については、次の内容を参照してください。
+ [正常な OS シャットダウンでインスタンスを終了する](terminating-instances.md#terminating-instances-console)
+ [インスタンスを終了して正常な OS シャットダウンをバイパスする](terminating-instances.md#terminating-instances-bypass-graceful-os-shutdown)
+ [インスタンスを強制終了する](TroubleshootingInstancesShuttingDown.md#force-terminate-ec2-instance)

## 正常な OS シャットダウンでインスタンスを終了する
<a name="terminating-instances-console"></a>

デフォルトの終了メソッドを使用してインスタンスを終了できます。このメソッドには、正常な OS シャットダウンの試行が含まれます。詳細については、「[インスタンスを終了するメソッド](instance-terminate-methods.md)」を参照してください。

------
#### [ Console ]

**デフォルトの終了メソッドを使用してインスタンスを終了する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、**[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択します。

1. 確認を求めるメッセージが表示されたら、**[終了 (削除)]** を選択します。

1. インスタンスの終了後、インスタンスはしばらくの間、`terminated` の状態で表示されたままになります。

   終了に失敗した場合や、終了したインスタンスが数時間以上表示されている場合は、「[表示されているインスタンスを削除する](TroubleshootingInstancesShuttingDown.md#terminated-instance-still-displaying)」を参照してください。

------
#### [ AWS CLI ]

**デフォルトの終了メソッドを使用してインスタンスを終了する方法**  
[terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) コマンドを使用します。

```
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**デフォルトの終了メソッドを使用してインスタンスを終了する方法**  
[Remove-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Instance.html) コマンドレットを使用します。

```
Remove-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## インスタンスを終了して正常な OS シャットダウンをバイパスする
<a name="terminating-instances-bypass-graceful-os-shutdown"></a>

インスタンスを終了するとき、正常な OS シャットダウンをバイパスできます。詳細については、「[インスタンスを終了するメソッド](instance-terminate-methods.md)」を参照してください。

------
#### [ Console ]

**インスタンスを終了して正常な OS シャットダウンをバイパスする方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、**[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択します。

1. **[OS シャットダウンをスキップ]** で、**[OS シャットダウンをスキップ]** チェックボックスをオンにします。コンソールにこのオプションが表示されない場合、現在のリージョンのコンソールではまだ利用できません。ただし、AWS CLI または SDK を使用してこの機能にアクセスするか、コンソールで別のリージョンを試すことができます。

1. **[終了 (削除)]** を選択します。

1. インスタンスの終了後、インスタンスはしばらくの間、`terminated` の状態で表示されたままになります。

   終了に失敗した場合や、終了したインスタンスが数時間以上表示されている場合は、「[表示されているインスタンスを削除する](TroubleshootingInstancesShuttingDown.md#terminated-instance-still-displaying)」を参照してください。

------
#### [ AWS CLI ]

**インスタンスを終了して正常な OS シャットダウンをバイパスする方法**  
`--skip-os-shutdown` で「[terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)」コマンドを使用します。

```
aws ec2 terminate-instances \
    --instance-ids i-1234567890abcdef0 \
    --skip-os-shutdown
```

------
#### [ PowerShell ]

**インスタンスを終了して正常な OS シャットダウンをバイパスする方法**  
`-SkipOsShutdown $true` で「[Remove-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Instance.html)」コマンドレットを使用します。

```
Remove-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -SkipOsShutdown $true
```

------

## インスタンスの終了のトラブルシューティング
<a name="troubleshoot-instance-terminate"></a>

リクエスタには `ec2:TerminateInstances` を呼び出すアクセス許可が必要です。詳細については、[インスタンスメタデータを使用する際のポリシーの例](ExamplePolicies_EC2.md#iam-example-instances)に関するページを参照してください。

インスタンスを終了して別のインスタンスを起動する場合、通常 EC2 フリート や Amazon EC2 Auto Scaling などの機能を通じて自動スケーリングを設定している可能性があります。詳細については、「[インスタンスが自動的に起動または終了される](TroubleshootingInstancesShuttingDown.md#automatic-instance-create-or-delete)」を参照してください。

**注記**  
終了保護が有効になっている場合、インスタンスを終了することはできません。詳細については、「[インスタンスの終了保護を変更する](Using_ChangingDisableAPITermination.md)」を参照してください。

インスタンスの `shutting-down` 状態が通常よりも長い場合は、強制終了を試みることができます。インスタンスの `shutting-down` 状態が続く場合、Amazon EC2 サービス内の自動プロセスによってクリーンアップ (終了) されるはずです。詳細については、「[インスタンスの削除の遅延](TroubleshootingInstancesShuttingDown.md#instance-stuck-terminating)」を参照してください。

# インスタンスの終了保護を変更する
<a name="Using_ChangingDisableAPITermination"></a>

Amazon EC2 API の使用中にインスタンスが誤って終了するのを防ぐには、`TerminateInstances` を直接呼び出すか、別のインターフェイス (Amazon EC2 コンソールなど) を使用するかにかかわらず、インスタンスの*終了保護*を有効にします。`DisableApiTermination` 属性は、インスタンスを終了可能にするかどうかを制御します。デフォルトでは、インスタンスの削除保護は無効になっています。この属性の値は、インスタンスの起動時、もしくはインスタンスの実行中または停止時に、設定することができます。

`InstanceInitiatedShutdownBehavior` 属性が `terminate` に設定された場合、`DisableApiTermination` 属性は (システムシャットダウン用のオペレーティングシステムコマンドを使用するなどして) インスタンスからシャットダウンを開始して、インスタンスを終了できます。詳細については、「[インスタンスによるシャットダウン動作を変更する](Using_ChangingInstanceInitiatedShutdownBehavior.md)」を参照してください。

**考慮事項**
+ 終了保護を有効にしても、インスタンスにインスタンスを終了する[予定されたイベント](monitoring-instances-status-check_sched.md)がある場合、AWS によるインスタンスの終了は防げません。
+ 終了保護を有効にしても、インスタンスが異常な場合やスケールインイベント中に Amazon EC2 Auto Scaling がインスタンスを終了することは防げません。スケールイン時に Auto Scaling グループが特定のインスタンスを終了できるかどうかを制御するには、[インスタンスのスケールイン保護](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)を使用します。Auto Scaling グループが異常なインスタンスを終了できるかどうかを制御するには、[ReplaceUnhealthy スケーリングプロセスを中断します](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html)。
+ スポットインスタンス の削除保護を有効にすることはできません。

------
#### [ Console ]

**起動時にインスタンスに対する終了保護を有効にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ダッシュボードで、[**Launch Instance (インスタンスの起動)**] を選択してください。

1. **[Advanced Details]** (高度な詳細) を展開します。**[終了保護]** で、**[有効化]** を選択します。

1. インスタンスの詳細の指定が終了したら、**[インスタンスの起動]** を選択します。

**インスタンスに対する終了保護を変更するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. インスタンスを選択してください。

1. インスタンスを選択してから、**[アクション]**、**[インスタンスの設定]**、**[削除保護の変更]** の順に選択します。

1. **[終了保護]** で、**[有効化]** を選択またはクリアします。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**インスタンスに対する終了保護を有効にするには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --disable-api-termination
```

**インスタンスに対する終了保護を無効化するには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --no-disable-api-termination
```

------
#### [ PowerShell ]

**インスタンスに対する終了保護を有効にするには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -DisableApiTermination $true
```

**インスタンスに対する終了保護を無効化するには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -DisableApiTermination $false
```

------

## 終了保護を使用して複数のインスタンスを終了する
<a name="terminate-multiple"></a>

複数のアベイラビリティーゾーンにある複数のインスタンスを同じリクエストで同時に終了する場合、指定した中に終了保護が有効になっているインスタンスが 1 つ以上存在すると、そのリクエストは失敗し次のような結果が返されます。
+ 保護されたインスタンスと同じアベイラビリティーゾーンにあるインスタンスは終了されません。
+ 保護されたインスタンスが他に存在しないアベイラビリティーゾーンでは、特定のインスタンスを正常に終了することができます。

**例**  
2 つのアベイラビリティーゾーンに次の 4 つのインスタンスがあるとします。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Using_ChangingDisableAPITermination.html)

これらのインスタンスすべてを同じリクエストで終了しようとすると、リクエストは以下のような結果とともに失敗を返します。
+ **インスタンス 1** と**インスタンス 2** は、どちらのインスタンスも終了保護が有効化されていないため、正常に終了します。
+ **インスタンス 3** と**インスタンス 4** は、**インスタンス 3** で終了保護が有効になっているため、終了に失敗します。

# インスタンスによるシャットダウン動作を変更する
<a name="Using_ChangingInstanceInitiatedShutdownBehavior"></a>

**警告**  
**インスタンスの終了は恒久的で、元に戻すことができません。**  
インスタンスを終了すると、そのインスタンスには接続できなくなり、復元することもできません。アタッチされている Amazon EBS ボリュームで、終了時に削除されるように設定されているものも、すべて恒久的に削除され、復元できません。インスタンスストアボリュームに保存されているデータは、すべて恒久的に失われます。詳細については、「[インスタンスの終了方法](how-ec2-instance-termination-works.md)」を参照してください。  
インスタンスを終了する前に、終了後も保持する必要があるすべてのデータを永続的ストレージにバックアップしたことを確認してください。

デフォルトで、Amazon EBS backed インスタンスからシャットダウンを開始すると (**shutdown** や **poweroff** などのコマンドを使用すると)、インスタンスは停止します。インスタンスの `InstanceInitiatedShutdownBehavior` 属性を変更すると、この動作を変更して、停止ではなく終了するようにできます。インスタンスの実行中または停止中に、この属性を変更できます。

**halt** コマンドはシャットダウンを開始しません。使用した場合、インスタンスは終了しません。代わりに、CPU が `HLT` 状態になり、インスタンスは実行されたままになります。

**注記**  
`InstanceInitiatedShutdownBehavior` 属性は、インスタンス自体のオペレーティングシステムからシャットダウンを実行した場合にのみ適用されます。`StopInstances` API または Amazon EC2 コンソールを使用してインスタンスを停止した場合、適用されません。

------
#### [ Console ]

**インスタンスによって開始されたシャットダウン動作を変更するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択します。

1. [**Actions (アクション)**]、[**Instance settings (インスタンスの設定)**]、[**Change shutdown behavior (シャットダウン動作の変更)**] の順に選択します

   **[シャットダウン動作]** に現在の動作が表示されます。

1. 動作を変更するには、**[シャットダウン動作]** で **[停止]** または **[終了]** を選択します。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**インスタンスによって開始されたシャットダウン動作を変更するには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --instance-initiated-shutdown-behavior terminate
```

------
#### [ PowerShell ]

**インスタンスによって開始されたシャットダウン動作を変更するには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -InstanceInitiatedShutdownBehavior terminate
```

------

# インスタンスの終了時にデータを保持する
<a name="preserving-volumes-on-termination"></a>

Amazon EC2 インスタンスが終了すると、データをインスタンスストアボリュームまたは Amazon EBS ボリュームに保存できます。このトピックでは、インスタンスの終了後もデータが保持されるようにする方法について説明します。

## インスタンスの終了がルートボリュームとデータボリュームに与える影響
<a name="how-instance-termination-affects-root-and-data-volumes"></a>

**インスタンスストアボリューム**  
インスタンスが終了すると、インスタンスストアボリュームは自動的に削除され、データが失われます。インスタンスのライフタイムを超えてこのデータを保持するには、インスタンスを終了する前に、Amazon EBS ボリューム、Amazon S3 バケット、Amazon EFS ファイルシステムなどの永続的なストレージに手動でコピーしてください。詳細については、「[Amazon EC2 インスタンスのストレージオプション](Storage.md)」を参照してください。

**Amazon EBS ボリューム**  
インスタンスが終了すると、各ボリュームの `DeleteOnTermination` 属性の値に応じて EBS ボリュームは削除または保持されます。
+ **[はい]** (コンソール) / `true` (CLI) – インスタンスが終了すると、ボリュームは削除されます。
+ **[いいえ]** (コンソール) / `false` (CLI) – インスタンスが終了すると、ボリュームは保持されます。保持されたボリュームは、引き続き料金が発生します。
**注記**  
インスタンスが終了した後、保持されたボリュームのスナップショットを作成するか、別のインスタンスにアタッチできます。不要な料金の発生を回避するには、ボリュームを削除する必要があります。

## EBS ボリュームのデフォルトの削除動作
<a name="default-deletion-behavior-for-ebs-volumes"></a>

デフォルト `DeleteOnTermination` 値はボリュームタイプ、起動時または起動後にボリュームがアタッチされたか、ボリュームのアタッチに使用された方法 (コンソールまたは CLI) によって異なります。


| ボリュームタイプ | アタッチ時 | アタッチ方法 | インスタンス終了時のデフォルの動作 | 
| --- | --- | --- | --- | 
| ルートボリューム | 起動時 | コンソールまたは CLI | 削除 | 
| ルートボリューム | After launch | コンソールまたは CLI | Preserve | 
| データボリューム | 起動時 | コンソール | Preserve | 
| データボリューム | 起動時 | CLI | 削除 | 
| データボリューム | After launch | コンソールと CLI | Preserve | 

## ボリューム永続性設定を確認する
<a name="check-ebs-volume-persistence-settings"></a>

EBS ボリュームの起動時のデフォルト値は、AMI で設定された `DeleteOnTermination` 属性によって決まります。インスタンスの起動時に値を変更し、AMI 設定をオーバーライドできます。インスタンスを起動した後、`DeleteOnTermination` 属性のデフォルト設定を確認することをお勧めします。

**インスタンスの終了時に Amazon EBS ボリュームが削除されるかどうか確認する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択します。

1. **[ストレージ]** タブを選択します。

1. **[ブロックデバイス]** で、右にスクロールして **[終了時に削除]** の列を確認します。
   + **[はい]** の場合、ボリュームはインスタンスの終了時に削除されます。
   + **[いいえ]** の場合、ボリュームはインスタンスの終了時に削除されません。削除されていないボリュームは、引き続き料金が発生します。

## 起動時にルートボリュームが存続するように変更する
<a name="delete-on-termination-ebs-volume"></a>

インスタンスを起動するときに、EBS ルートボリュームの `DeleteOnTermination` 属性を変更できます。データボリュームに次の手順を使用することもできます。

------
#### [ Console ]

**起動時にインスタンスのルートボリュームが存続するように変更するには**

1. 手順に従って[インスタンスを起動](ec2-launch-instance-wizard.md)しますが、次のステップを完了してルートボリュームを存続するように変更するまでインスタンスを起動しないでください。

1. **[ストレージを設定]** ペインで **[アドバンスト]** を選択します。

1. **[EBS ボリューム]** で、ルートボリュームの情報を展開します。

1. **[終了時に削除]** には、**[いいえ]** を選択します。

1. **[Summary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については、「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**起動時にインスタンスのルートボリュームが存続するように変更するには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して、ブロックデバイスマッピングの `DeleteOnTermination` の値を変更します。

`--block-device-mappings` オプションを追加します。

```
--block-device-mappings file://mapping.json
```

`mapping.json` では、デバイス名を指定し (例: `/dev/sda1` または `/dev/xvda`)、`DeleteOnTermination` で `false` を指定します。

```
[
  {
    "DeviceName": "device_name",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]
```

------
#### [ PowerShell ]

**起動時にインスタンスのルートボリュームが存続するように変更するには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用して、ブロックデバイスマッピングの `DeleteOnTermination` の値を 変更します。

`-BlockDeviceMapping` オプションを追加します。

```
-BlockDeviceMapping $bdm
```

`bdm` では、デバイス名を指定し (例: `/dev/sda1` または `/dev/xvda`)、`DeleteOnTermination` で `false` を指定します。

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "/dev/sda1"
$bdm.Ebs = $ebd
```

------

## 実行中のインスタンスのルートボリュームが存続するように変更する
<a name="delete-on-termination-running-instance"></a>

実行中のインスタンスの EBS ルートボリュームが永続するように、変更できます。データボリュームに次の手順を使用することもできます。

------
#### [ AWS CLI ]

**ルートボリュームを永続的に変更するには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0  \
    --block-device-mappings file://mapping.json
```

`mapping.json` では、デバイス名を指定し (例: `/dev/sda1` または `/dev/xvda`)、`--DeleteOnTermination` で `false` を指定します。

```
[
  {
    "DeviceName": "device_name",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]
```

------
#### [ PowerShell ]

**ルートボリュームを永続的に変更するには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

`-BlockDeviceMapping` オプションを追加します。

```
-BlockDeviceMapping $bdm
```

`bdm` では、デバイス名を指定し (例: `/dev/sda1` または `/dev/xvda`)、`DeleteOnTermination` で `false` を指定します。

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "/dev/sda1"
$bdm.Ebs = $ebd
```

------

# インスタンスのリタイア
<a name="instance-retirement"></a>

インスタンスをホストしている基盤のハードウェアで回復不可能な障害が検出されると、AWS によってインスタンスのリタイアが予定されます。インスタンスのルートボリュームタイプはインスタンスのリタイア動作を決定します。
+ インスタンスのルートボリュームが Amazon EBS ボリュームである場合、インスタンスは停止されますが、その後いつでも再び起動できます。停止したインスタンスを開始すると、新しいハードウェアに移行されます。
+ インスタンスのルートボリュームがインスタンスストアボリュームである場合、インスタンスは終了され、再び使用することはできません。

インスタンスイベントのタイプの詳細については[Amazon EC2 インスタンスの予定されているイベント](monitoring-instances-status-check_sched.md)を参照してください。

**Topics**
+ [リタイアが予定されているインスタンスの特定](#instance-retirement-identify)
+ [リタイアが予定されている EBS-バック インスタンスに対して実行するアクション](#instance-retirement-actions-EBS)
+ [リタイアが予定されている instance-store バック インスタンスに対して実行するアクション](#instance-retirement-actions-instance-store)

## リタイアが予定されているインスタンスの特定
<a name="instance-retirement-identify"></a>

インスタンスのリタイアが予定された場合、イベントの前に、当該のインスタンス ID とリタイア日を記載したメールが送信されます。廃止が予定されているインスタンスを確認することもできます。

**重要**  
インスタンスの廃止が予定されている場合は、インスタンスが既に到達不能になっている可能性もあるため、できるだけ早急に措置を講じることが推奨されます。詳細については、「[Check if your instance is reachable](#check-instance)」を参照してください。

**Topics**
+ [アカウントの連絡先になっている E メールをモニタリングする](#identify-by-email)
+ [インスタンスを確認する](#identify-in-console-cli)

### アカウントの連絡先になっている E メールをモニタリングする
<a name="identify-by-email"></a>

インスタンスの廃止が予定されている場合、アカウントの主要連絡先とオペレーションの連絡先に、廃止前に E メールが届きます。この E メールには、インスタンス ID と廃止予定日が記載されています。詳細については、「*AWS アカウント管理 リファレンスガイド*」の「[Update the primary contact for your AWS account](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html)」および「[Update the alternate contacts for your AWS account](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-alternate.html)」を参照してください。

### インスタンスを確認する
<a name="identify-in-console-cli"></a>

定期的なチェックを行っていない E メールアカウントがある場合、インスタンス廃止の通知を見逃している可能性ががあります。インスタンスの廃止が予定されているかどうかは随時確認できます。<a name="identify-retiring-instances"></a>

------
#### [ Console ]

**廃止が予定されているインスタンスを確認するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**EC2 ダッシュボード**] を選択してください。[**スケジュールされたイベント**] に、Amazon EC2 インスタンスおよびボリュームに関連付けられたイベントが、リージョン別に整理されて表示されます。  
![\[予定されたイベント\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/dashboard-scheduled-events.png)

1. インスタンスに予定されたイベントが表示されている場合はリージョン名の下のリンクを選択して [**Events**] ページにアクセスします。

1. [**Events (イベント)**] ページにはすべてのリソースとそれに関連付けられたイベントが一覧表示されます。リタイアが予定されているインスタンスを表示するには1 つ目のフィルタリストから [**Instance resources**] を選択し、2 つ目のフィルタリストから [**Instance stop or retirement**] を選択してください。

1. フィルタの結果にインスタンスのリタイアが予定されていることが表示されたら、当該のインスタンスを選択し、詳細ペインの [**Start time**] フィールドの日時を書き留めます。これがインスタンスのリタイア日です。

------
#### [ AWS CLI ]

**廃止が予定されているインスタンスを特定するには**  
次の [describe-instance-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html) コマンドを使用します。インスタンスを実行している各リージョンで同じ作業を繰り返します。

```
aws ec2 describe-instance-status --filters Name=event.code,Values=instance-retirement
```

------
#### [ PowerShell ]

**廃止が予定されているインスタンスを特定するには**  
[Get-EC2InstanceStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceStatus.html) コマンドレットを使用します。インスタンスを実行している各リージョンで同じ作業を繰り返します。

```
Get-EC2InstanceStatus -Filter @{Name="event.code"; Values="instance-retirement"}
```

------

## リタイアが予定されている EBS-バック インスタンスに対して実行するアクション
<a name="instance-retirement-actions-EBS"></a>

リタイアが予定されているインスタンスのデータを保持するには次のいずれかのアクションを実行できます。予期しないダウンタイムやデータ消失を防ぐために、インスタンスのリタイア日より前にこのアクションを実行することが重要です。

Linux インスタンスにおいて、インスタンスが EBS とインスタンスストアのどちらからバッキングされているかわからない場合は「[Amazon EC2 インスタンスのルートボリューム](RootDeviceStorage.md)」を参照してください。

**インスタンスが到達可能かどうかを確認する**

インスタンスのリタイアが予定されていることが通知された場合はできるだけ早く以下のアクションを実行することをお勧めします。
+ インスタンスに[接続](connect.md)するか、インスタンスに ping を実行して、インスタンスが到達可能かどうかを確認します。
+ インスタンスに到達可能な場合はスケジュールされたリタイア日の前の適切なタイミングで、その影響が最小限であるときにインスタンスを停止/開始するよう計画する必要があります。インスタンスの停止と開始、インスタンスを停止したときに予想される影響 (インスタンスに関連付けられたパブリック IP アドレス、プライベート IP アドレス、および Elastic IP アドレスへの影響など) の詳細については[Amazon EC2 インスタンスの停止と開始](Stop_Start.md)を参照してください。インスタンスを停止して起動すると、インスタンスストアボリュームのデータが失われることに注意してください。
+ インスタンスに到達できない場合は直ちにアクションを実行し、[停止/開始](Stop_Start.md)を実行してインスタンスを復元する必要があります。
+ またはインスタンスを[削除](terminating-instances.md)する場合はできるだけ早く削除するよう計画し、インスタンスの料金が発生しないようにしてください。

**インスタンスのバックアップを作成する**  
バックアップが作成されるように、インスタンスから EBS-Backed AMI を作成します。データの整合性を確保するにはAMI を作成する前にインスタンスを停止します。予定されたリタイア日を待つことができます。その日になるとインスタンスが停止できます。またはリタイア日の前に自分でインスタンスを停止します。インスタンスはいつでも再開できます。詳細については「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

**代わりのインスタンスを起動する**  
インスタンスから AMI を作成した後、AMI を使用して代替インスタンスを起動できます。Amazon EC2 コンソールから、新しい AMI を選択して、**[AMI からインスタンスを起動]** を選択します。インスタンスのパラメータを設定し、**[インスタンスを起動]** を選択します。各フィールドの詳細については「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

## リタイアが予定されている instance-store バック インスタンスに対して実行するアクション
<a name="instance-retirement-actions-instance-store"></a>

リタイアが予定されているインスタンスのデータを保持するには次のいずれかのアクションを実行できます。予期しないダウンタイムやデータ消失を防ぐために、インスタンスのリタイア日より前にこのアクションを実行することが重要です。

**警告**  
インスタンスがインスタンスストアのルートボリュームを持っていて、かつ廃止日を過ぎている場合、インスタンスが終了し、インスタンスやインスタンスに格納されていたデータを復元できなくなります。インスタンスストアボリュームのデータは、インスタンスのルートボリュームタイプにかかわらず、EBS ルートボリュームを持つインスタンスにボリュームがアタッチされている場合でも、インスタンスが廃止されると失われます。

**インスタンスが到達可能かどうかを確認する**

インスタンスのリタイアが予定されていることが通知された場合はできるだけ早く以下のアクションを実行することをお勧めします。
+ インスタンスに[接続](connect-to-linux-instance.md)するか、インスタンスに ping を実行して、インスタンスが到達可能かどうかを確認します。
+ インスタンスに到達できない場合、インスタンスを復元するために実行できることはほとんどありません。詳細については[到達できない Amazon EC2 インスタンスのトラブルシューティング](troubleshoot-unreachable-instance.md) をご参照ください。AWS は予定されたリタイア日にインスタンスを削除するため、到達不能なインスタンスについてはお客様自身ですぐにインスタンスを[削除](terminating-instances.md)できます。

**代わりのインスタンスを起動する**  
AMI ツールを使用してインスタンスから Amazon S3-backed AMI を作成します ([Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)を参照)。Amazon EC2 コンソールから、新しい AMI を選択して、**[AMI からインスタンスを起動]** を選択します。インスタンスのパラメータを設定し、**[インスタンスを起動]** を選択します。各フィールドの詳細については「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

**インスタンスを EBS-backed インスタンスに変換する**  
データを EBS ボリュームに転送し、ボリュームのスナップショットを作成した後、スナップショットから AMI を作成します。新しい AMI から代替インスタンスを起動できます。詳細については「[Amazon S3-backed AMI を EBS-backed AMI に変換する](Using_ConvertingS3toEBS.md)」を参照してください。