

# 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
```

------