インスタンスの終了
不要になったインスタンスは削除できます。これは、インスタンスの削除 と呼ばれます。インスタンスの状態が shutting-down
または terminated
に変わったら、そのインスタンスへの課金は停止します。
インスタンスを削除した後に、接続または起動することはできません。ただし、同じ AMI から別のインスタンスを起動することができます。インスタンスを停止および起動するか、または休止する場合は、「インスタンスの停止と起動」または「Linux インスタンスの休止」を参照してください。詳細については、「再起動、停止、休止、削除の違い」を参照してください。
目次
インスタンスの削除
インスタンスの削除後、インスタンスはしばらくの間コンソールに表示されたままですが、エントリは自動的に削除されます。終了したインスタンスのエントリを自分で削除することはできません。インスタンスを削除すると、タグやボリュームなどのリソースはインスタンスから徐々に関連付けが解除され、しばらくすると削除されたインスタンスでこれらのリソースが表示されなくなる可能性があります。
インスタンスが終了すると、そのインスタンスに関連付けられたすべてのインスタンスストアボリュームのデータが削除されます。
デフォルトでは、インスタンスの削除時に Amazon EBS のルートデバイスボリュームが自動的に削除されます。ただし、起動時にアタッチした追加の EBS ボリューム、または既存のインスタンスにアタッチした
EBS ボリュームがある場合、デフォルトでは、インスタンスの削除後もそれらのボリュームは保持されます。この動作はボリュームの DeleteOnTermination
属性によって制御されますが、変更できます。詳細については、「インスタンスの終了時の Amazon EBS ボリュームの保持」を参照してください。
AWS マネジメントコンソール、CLI、および API を使用している他のユーザーによって、誤ってインスタンスを終了されないようにできます。この機能は、Amazon
EC2 instance store-backed インスタンスと Amazon EBS-backed インスタンスの両方で使用できます。各インスタンスには、デフォルト値の
false
である DisableApiTermination
属性があります (インスタンスは Amazon EC2 によって終了される場合があります)。インスタンスの実行中または停止中に、このインスタンス属性を変更できます
(Amazon EBS-backed インスタンスの場合)。詳細については、「削除保護の有効化」を参照してください。
システムをシャットダウンするオペレーティングシステムコマンドを使用して、インスタンスからシャットダウンが開始されたときに、インスタンスを停止または終了するかどうかを制御できます。詳細については、「インスタンスによって起動されたシャットダウン動作の変更」を参照してください。
インスタンスの終了時にスクリプトを実行した場合、シャットダウンスクリプトが実行されることを保証する方法がないため、異常な終了が発生する場合があります。Amazon EC2 はインスタンスを正常にシャットダウンして、システムシャットダウンスクリプトが実行されるように試みますが、特定のイベント (ハードウェア障害など) ではシステムシャットダウンスクリプトが実行されないことがあります。
インスタンスを削除するとどうなるか
terminate-instances
コマンドを使用して EC2 インスタンスが削除された場合、OS レベルで以下が登録されています。
-
API リクエストは、ボタンのクリックイベントをゲストに送信します。
-
ボタンのクリックイベントの結果、さまざまなシステムサービスが停止されます。systemd はシステムの適切なシャットダウンを処理します。適切なシャットダウンは、ハイパーバイザーからの ACPI シャットダウンボタンのクリックイベントによってトリガーされます。
-
ACPI のシャットダウンが開始されます。
-
このインスタンスは、適切なシャットダウンプロセスが終了したときにシャットダウンされます。設定可能な OS シャットダウン時間はありません。
インスタンスの終了
インスタンスは AWS マネジメントコンソール またはコマンドラインを使用して終了できます。
デフォルトでは、Amazon EBS-backed インスタンスからシャットダウンを開始すると (shutdown または poweroff コマンドを使用)、インスタンスが停止します。halt コマンドはシャットダウンを開始しません。使用した場合、インスタンスは終了しません。代わりに、CPU が HLT
状態になり、インスタンスは実行されたままになります。
コマンドラインを使用してインスタンスを削除するには
次のコマンドの 1 つを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。
-
terminate-instances (AWS CLI)
-
Stop-EC2Instance (AWS Tools for Windows PowerShell)
削除保護の有効化
デフォルトでは、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 ユーザーガイド) を参照してください。
起動時にインスタンスに対する終了保護を有効にするには
-
https://console.aws.amazon.com/ec2/
で Amazon EC2 コンソールを開きます。 -
ダッシュボードで、[Launch Instance] を選択し、ウィザードの指示に従います。
-
[Configure Instance Details] ページで、[Enable termination protection] チェックボックスをオンにします。
実行中または停止中のインスタンスの削除保護を有効にするには
-
インスタンスを選択してから、[Actions (アクション)]、[インスタンスの設定]、[削除保護の変更] の順に選択します。
-
[はい、有効化する] を選択します。
実行中または停止中のインスタンスの削除保護を無効にするには
-
インスタンスを選択してから、[Actions (アクション)]、[インスタンスの設定]、[削除保護の変更] の順に選択します。
-
[Yes, Disable] を選択します。
コマンドラインを使用して終了保護を有効または無効にするには
次のコマンドの 1 つを使用できます。これらのコマンドラインインターフェイスの詳細については、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 コンソールを使用してインスタンスを停止する場合には適用されません。
コンソールを使用してインスタンスのシャットダウン動作を変更するには
-
https://console.aws.amazon.com/ec2/
で Amazon EC2 コンソールを開きます。 -
ナビゲーションペインで、[インスタンス] を選択します。
-
インスタンスを選択します。
-
[Actions (アクション)]、[Instance settings (インスタンスの設定)]、[Change shutdown behavior (シャットダウン動作の変更)] の順に選択します現在の動作が選択されます。
-
動作を変更するには、[Shutdown behavior (シャットダウン動作)] から [Stop (停止)] または [Terminate (終了)] を選択し、[Apply (適用)] を選択します。
コマンドラインを使用してインスタンスのシャットダウン動作を変更するには
次のコマンドの 1 つを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。
-
modify-instance-attribute (AWS CLI)
-
Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)
インスタンスの終了時の 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
属性を変更できます。実行中のインスタンスのこの属性を変更するには、コマンドラインを使用する必要があります。
コンソールを使用して、起動時にインスタンスのルートボリュームが存続するように変更するには
-
https://console.aws.amazon.com/ec2/
で Amazon EC2 コンソールを開きます。 -
コンソールダッシュボードで、[Launch Instance] を選択します。
-
[Choose an Amazon Machine Image (AMI)] ページで、AMI を選択し、[Select] を選択します。
-
ウィザードにしたがって [Choose an Instance Type] ページと [Configure Instance Details] ページを設定します。
-
[Add Storage] ページで、ルートボリュームの [Delete On Termination] チェックボックスの選択を解除します。
-
ウィザードの残りのページを完了した後、[Launch ] を選択します。
インスタンスの詳細ペインでルートデバイスボリュームの詳細を表示することにより、設定を確認できます。[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)
たとえば、run-instances
コマンドに次のオプションを追加します。
--block-device-mappings file://mapping.json
mapping.json
で、以下を指定します。
[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false, "SnapshotId": "snap-1234567890abcdef0", "VolumeType": "gp2" } } ]
コマンドラインを使用して実行中のインスタンスのルートボリュームが存続するように変更する
次のいずれかのコマンドを使用して、実行中の 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
で、以下を指定します。
[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]
インスタンスの終了のトラブルシューティング
インスタンスを終了して別のインスタンスを起動する場合、通常 EC2 フリート や Amazon EC2 Auto Scaling などの機能を通じて自動スケーリングを設定している可能性があります。
インスタンスが通常より長く shutting-down
状態になっている場合、Amazon EC2 サービス内の自動プロセスによってクリーンアップ (終了) されるはずです。詳細については、「インスタンスの削除の遅延」を参照してください。