インスタンスの終了
不要になったインスタンスは削除できます。これは、インスタンスの削除 と呼ばれます。インスタンスの状態が shutting-down
または terminated
に変わったら、そのインスタンスへの課金は停止します。
インスタンスを削除した後に、接続または起動することはできません。ただし、同じ AMI から別のインスタンスを起動することができます。インスタンスを停止および起動するか、または休止する場合は、「インスタンスの停止と起動」または「オンデマンドの Windows インスタンスを休止状態にする」を参照してください。詳細については、再起動、停止、休止、削除の違い を参照してください。
コンテンツ
インスタンスの削除
インスタンスの削除後、インスタンスはしばらくの間コンソールに表示されたままですが、エントリは自動的に削除されます。終了したインスタンスのエントリを自分で削除することはできません。インスタンスを削除すると、タグやボリュームなどのリソースはインスタンスから徐々に関連付けが解除され、しばらくすると削除されたインスタンスでこれらのリソースが表示されなくなる可能性があります。
インスタンスが終了すると、そのインスタンスに関連付けられたすべてのインスタンスストアボリュームのデータが削除されます。
デフォルトでは、インスタンスの削除時に Amazon EBS のルートデバイスボリュームが自動的に削除されます。ただし、起動時にアタッチした追加の EBS ボリューム、または既存のインスタンスにアタッチした EBS ボリュームがある場合、デフォルトでは、インスタンスの削除後もそれらのボリュームは保持されます。この動作はボリュームの DeleteOnTermination
属性によって制御されますが、変更できます。詳細については、インスタンスの終了時の Amazon EBS ボリュームの保持 を参照してください。
AWS Management Console、CLI、および API を使用している他のユーザーによって、誤ってインスタンスを終了されないようにできます。この機能は、Amazon EC2 instance store-backed インスタンスと Amazon EBS-backed インスタンスの両方で使用できます。各インスタンスには、デフォルト値の false
である DisableApiTermination
属性があります (インスタンスは Amazon EC2 によって終了される場合があります)。インスタンスの実行中または停止中に、このインスタンス属性を変更できます (Amazon EBS-backed インスタンスの場合)。詳細については、削除保護の有効化 を参照してください。
システムをシャットダウンするオペレーティングシステムコマンドを使用して、インスタンスからシャットダウンが開始されたときに、インスタンスを停止または終了するかどうかを制御できます。詳細については、インスタンスによって起動されたシャットダウン動作の変更 を参照してください。
インスタンスの終了時にスクリプトを実行した場合は、シャットダウンスクリプトの実行を保証する方法がないため、終了処理が正常に行われない可能性があります。Amazon EC2 は、必要なシステムシャットダウンスクリプトを実行し、インスタンスを正常にシャットダウンしようと試みます。ただし、特定のイベント (ハードウェア障害など) ではシステムシャットダウンスクリプトが実行されないことがあります。
終了保護を使用してアベイラビリティーゾーン全体で複数のインスタンスを終了する
複数のアベイラビリティーゾーンで複数のインスタンスを同時に終了する場合、指定した中に終了保護が有効になっているインスタンスが 1 つ以上存在すると、そのリクエストは失敗し次のような結果が返されます。
-
保護されたインスタンスと同じアベイラビリティーゾーンにあるインスタンスは終了されません。
-
保護されたインスタンスが他に存在しないアベイラビリティーゾーンでは、特定のインスタンスを正常に終了することができます。
例えば、以下のようなインスタンスを考えます。
インスタンス | アベイラビリティーゾーン | 終了保護 |
---|---|---|
インスタンス A | us-east-1a |
Disabled |
インスタンス B | Disabled |
|
インスタンス C | us-east-1b |
Enabled |
インスタンス D | Disabled |
これらのインスタンスすべてを、同じリクエストで終了しようとすると、そのリクエストは次のような結果とともに失敗します。
-
us-east-1a
内で指定されたインスタンスのいずれも終了保護が有効化されていないので、インスタンス A およびインスタンス B は正常に終了します。 -
インスタンス C およびインスタンス D は終了に失敗します。これは、
us-east-1b
内で指定したインスタンスのうち少なくとも 1 つ(インスタンスC) で、終了保護が有効化されているためです。
インスタンスを削除するとどうなるか
terminate-instances
コマンドを使用して EC2 インスタンスが削除された場合、OS レベルで以下が登録されています。
-
API リクエストは、ボタンのクリックイベントをゲストに送信します。
-
ボタンのクリックイベントの結果、さまざまなシステムサービスが停止されます。systemd はシステムの適切なシャットダウンを処理します。適切なシャットダウンは、ハイパーバイザーからの ACPI シャットダウンボタンのクリックイベントによってトリガーされます。
-
ACPI のシャットダウンが開始されます。
-
このインスタンスは、適切なシャットダウンプロセスが終了したときにシャットダウンされます。設定可能な OS シャットダウン時間はありません。
インスタンスの終了
インスタンスは AWS Management Console またはコマンドラインを使用して終了できます。
デフォルトでは、Amazon EBS-backed インスタンスからシャットダウンを開始すると (shutdown または poweroff コマンドを使用)、インスタンスが停止します。halt コマンドはシャットダウンを開始しません。使用した場合、インスタンスは終了しません。代わりに、CPU が HLT
状態になり、インスタンスは実行されたままになります。
制御された故障注入実験を実行するには
AWS Fault Injection Simulator を使用すると、インスタンスが終了した場合のアプリケーションの応答をテストできます。詳細については、AWS Fault Injection Simulatorユーザーガイドを参照してください。
削除保護の有効化
デフォルトでは、Amazon EC2 コンソール、コマンドラインインターフェイス、または API を使用して、インスタンスを終了できます。Amazon EC2 を使用してインスタンスを誤って終了できないようにするには、インスタンスの削除保護を有効にできます。DisableApiTermination
属性は、インスタンスがコンソール、CLI、または API を使用して終了できるかどうかを制御します。デフォルトでは、インスタンスの削除保護は無効になっています。インスタンスが実行中またはインスタンスが停止中に、インスタンスを起動する際に、この属性の値を設定できます (Amazon EBS-backed インスタンスの場合)。
DisableApiTermination
属性が設定された場合、InstanceInitiatedShutdownBehavior
属性はインスタンスからシャットダウンを開始して (システムシャットダウン用のオペレーティングシステムコマンドを使用)、インスタンスを終了できます。詳細については、インスタンスによって起動されたシャットダウン動作の変更 を参照してください。
制限事項
スポットインスタンスでは、削除保護を有効にすることはできません。スポットインスタンスは、スポット料金がそのインスタンスで許容できる支払金額を超えると終了します。しかし、スポットインスタンスの中断を処理するようにアプリケーションを構成することは可能です。詳細については、スポットインスタンスの中断。 を参照してください。
DisableApiTermination
属性では、Amazon EC2 Auto Scaling によるインスタンスの終了は防止されません。Auto Scaling グループ内のインスタンスについては、Amazon EC2 の終了の防止ではなく Amazon EC2 Auto Scaling の次の機能を使用します。
-
Auto Scaling グループ内のインスタンスがスケールイン時に終了されないようにするには、インスタンスのスケールイン保護を使用します。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「インスタンスのスケールイン保護の使用」を参照してください。
-
Amazon EC2 Auto Scaling による異常なインスタンスの終了を防止するには、
ReplaceUnhealthy
プロセスを停止します。詳細については、『Amazon EC2 Auto Scaling ユーザーガイド』の「スケーリングプロセスの中断と再開」を参照してください。 -
Amazon EC2 Auto Scaling によってどのインスタンスを最初に終了するかを指定するには、終了ポリシーを選択します。詳細については、「終了ポリシーのカスタマイズ」 (Amazon EC2 Auto Scaling ユーザーガイド) を参照してください。
起動時にインスタンスに対する終了保護を有効にするには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ダッシュボードで、[Launch Instance] を選択し、ウィザードの指示に従います。
-
[Configure Instance Details] ページで、[Enable termination protection] チェックボックスをオンにします。
実行中または停止中のインスタンスの削除保護を有効にするには
-
インスタンスを選択してから、[Actions (アクション)]、[インスタンスの設定]、[削除保護の変更] の順に選択します。
-
[はい、有効化する] を選択します。
実行中または停止中のインスタンスの削除保護を無効にするには
-
インスタンスを選択してから、[Actions (アクション)]、[インスタンスの設定]、[削除保護の変更] の順に選択します。
-
[Yes, Disable] を選択します。
コマンドラインを使用して終了保護を有効または無効にするには
次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。
modify-instance-attribute (AWS CLI)
Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)
インスタンスによって起動されたシャットダウン動作の変更
デフォルトでは、Amazon EBS-backed インスタンスからシャットダウンを開始すると (shutdown や poweroff などのコマンドを使用)、インスタンスが停止します (halt を使用しても、poweroff コマンドは実行されません。使用した場合も、インスタンスは終了しません。代わりに、CPU が HLT 状態になり、インスタンスは実行されたままになります)。代わりに終了できるように、インスタンスの InstanceInitiatedShutdownBehavior
属性を使用して、この動作を変更できます。インスタンスの実行中または停止中に、この属性を更新できます。
InstanceInitiatedShutdownBehavior
属性は Amazon EC2 コンソールまたはコマンドラインを使用して更新できます。InstanceInitiatedShutdownBehavior
属性は、インスタンス自体のオペレーティングシステムからシャットダウンを実行する場合にのみ適用されます。これは StopInstances
API または Amazon EC2 コンソールを使用してインスタンスを停止する場合には適用されません。
インスタンスの終了時の Amazon EBS ボリュームの保持
インスタンスが終了すると、Amazon EC2 はアタッチされた各 Amazon EBS ボリュームの DeleteOnTermination
属性の値を使用して、ボリュームを保持するか削除するかを決定します。
DeleteOnTermination
属性のデフォルト値は、ボリュームがインスタンスのルートボリュームであるか、インスタンスにアタッチされているルート以外のボリュームであるかによって異なります。
- ルートボリューム
-
デフォルトでは、インスタンスのルートボリュームの
DeleteOnTermination
属性はtrue
に設定されます。したがって、デフォルトではインスタンスの終了時に、インスタンスのルートボリュームが削除されます。DeleteOnTermination
属性は、AMI の作成者とインスタンスを起動するユーザーが設定できます。AMI の作成者またはインスタンスを起動したユーザーによって属性が変更された場合、元の AMI のデフォルト設定は新しい設定に上書きされます。AMI でインスタンスを起動したら、DeleteOnTermination
属性のデフォルト設定を確認することをお勧めします。 - ルート以外のボリューム
-
デフォルトでは、インスタンスにルート以外の EBS ボリュームをアタッチするときは、
DeleteOnTermination
属性がfalse
に設定されます。したがって、デフォルトではこれらのボリュームが保持されます。インスタンスが終了したら、保持されたボリュームのスナップショットを作成するか、別のインスタンスにアタッチできます。不要な料金の発生を防ぐために、ボリュームを削除する必要があります。詳細については、Amazon EBS ボリュームの削除 を参照してください。
使用中の EBS ボリュームの DeleteOnTermination
属性の値を確認するには、インスタンスのブロックデバイスマッピングを参照します。詳細については、インスタンスブロックデバイスマッピングの EBS ボリュームの表示 を参照してください。
インスタンスの起動時またはインスタンスの実行中に、ボリュームの DeleteOnTermination
属性の値を変更できます。
例
コンソールを使用して起動時にルートボリュームが存続するように変更する
コンソールを使用して、インスタンスの起動時に DeleteOnTermination
属性を変更できます。実行中のインスタンスのこの属性を変更するには、コマンドラインを使用する必要があります。
コンソールを使用して、起動時にインスタンスのルートボリュームが存続するように変更するには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
コンソールダッシュボードで、[Launch Instance] を選択します。
-
[Choose an Amazon Machine Image (AMI)] ページで、AMI を選択し、[Select] を選択します。
-
ウィザードにしたがって [Choose an Instance Type] ページと [Configure Instance Details] ページを設定します。
-
[Add Storage] ページで、ルートボリュームの [Delete On Termination] チェックボックスの選択を解除します。
-
ウィザードの残りのページを完了した後、[Launch ] を選択します。
新しいコンソールエクスペリエンスでは、インスタンスの詳細ペインでルートデバイスボリュームの詳細を表示することにより、設定を確認できます。ブロックデバイスの下にある、ストレージタブを右にスクロールしてボリュームの終了時に削除設定を確認します。デフォルトでは、[Delete on termination] は [Yes
] です。デフォルトの動作を変更した場合は、[Delete on termination] が [No
] になっています。
新しいコンソールエクスペリエンスでは、インスタンスの詳細ペインでルートデバイスボリュームの詳細を表示することにより、設定を確認できます。[Block devices] の隣にあるルートデバイスボリュームのエントリを選択します。デフォルトでは、[Delete on termination] は [True
] です。デフォルトの動作を変更した場合は、[Delete on termination] が [False
] になっています。
コマンドラインを使用して起動時にルートボリュームが存続するように変更する
EBS-backed インスタンスの起動時に、次のコマンドのいずれかを使用して、ルートデバイスボリュームが存続するように変更することができます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。
run-instances (AWS CLI)
New-EC2Instance (AWS Tools for Windows PowerShell)
永続化するボリュームのブロックデバイスマッピングで、--DeleteOnTermination
を含め、false
を指定します。
例えば、ボリュームを永続化するには、run-instances
コマンドに次のオプションを追加します。
--block-device-mappings file://mapping.json
mapping.json
では、デバイス名を指定し (例: /dev/sda1
または /dev/xvda
)、--DeleteOnTermination
で false
を指定します。
[ { "DeviceName": "
device_name
", "Ebs": { "DeleteOnTermination": false } } ]
コマンドラインを使用して実行中のインスタンスのルートボリュームが存続するように変更する
次のいずれかのコマンドを使用して、実行中の 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 } } ]