インスタンスの終了時にデータを保持する
ユースケースによっては、Amazon EC2 インスタンスが終了したときに、インスタンスストアボリュームまたは Amazon EBS ボリュームにデータを保存したい場合があるでしょう。インスタンスストアボリューム上のデータは、インスタンスが終了すると消滅します。インスタンスストアボリュームに保存されているデータを、インスタンスのライフタイムを超えて保持する必要がある場合は、そのデータを Amazon EBS ボリューム、Amazon S3 バケット、Amazon EFS ファイルシステムなどのより永続的なストレージに手動でコピーする必要があります。詳細については、「Amazon EC2 インスタンスのストレージオプション」を参照してください。
Amazon EBS ボリュームのデータについて、Amazon EC2 はアタッチされた各 Amazon EBS ボリュームの DeleteOnTermination
属性の値を使用して、ボリュームを保持するか削除するかを決定します。
DeleteOnTermination
属性のデフォルト値は、ボリュームがインスタンスのルートボリュームであるか、インスタンスにアタッチされているルート以外のボリュームであるかによって異なります。
- ルートボリューム
-
デフォルトでは、インスタンスを起動すると、インスタンスのルートボリュームの
DeleteOnTermination
属性はtrue
に設定されます。したがって、デフォルトではインスタンスの終了時に、インスタンスのルートボリュームが削除されます。 - ルート以外のボリューム
-
デフォルトでは、インスタンスにルート以外の EBS ボリュームをアタッチするときは、
DeleteOnTermination
属性がfalse
に設定されます。したがって、デフォルトではこれらのボリュームが保持されます。注記
インスタンスが終了したら、保持されたボリュームのスナップショットを作成するか、別のインスタンスにアタッチできます。不要な料金の発生を防ぐために、ボリュームを削除する必要があります。
DeleteOnTermination
属性は、AMI の作成者とインスタンスを起動するユーザーが設定できます。AMI の作成者またはインスタンスを起動したユーザーによって属性が変更された場合、元の AMI のデフォルト設定は新しい設定に上書きされます。AMI でインスタンスを起動したら、DeleteOnTermination
属性のデフォルト設定を確認することをお勧めします。
インスタンスの終了時に Amazon EBS ボリュームが削除されるかどうかを確認するには、インスタンスの詳細ペインでボリュームの詳細を表示します。ブロックデバイスの下にある、ストレージタブを右にスクロールしてボリュームの終了時に削除設定を確認します。
-
[はい] の場合、ボリュームはインスタンスの終了時に削除されます。
-
[いいえ] の場合、ボリュームはインスタンスの終了時に削除されません。インスタンスの終了時に削除されなかったボリュームには、引き続き料金がかかります。
起動時にルートボリュームが存続するように変更する
コンソールを使用して、インスタンスの起動時に DeleteOnTermination
属性を変更できます。実行中のインスタンスのこの属性を変更するには、コマンドラインを使用する必要があります。
起動時にルートボリュームが存続するように変更するには、次のいずれかの方法を使用します。
実行中のインスタンスのルートボリュームが存続するように変更する
次のいずれかのコマンドを使用して、実行中の EBS-backed インスタンスのルートデバイスボリュームを永続化するように変更できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセスを参照してください。
modify-instance-attribute (AWS CLI)
Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)
例えば、以下のコマンドを使用します。
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 } } ]