

# インスタンスの終了時にデータを保持する
<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
```

------