インスタンスの終了 - Amazon Elastic Compute Cloud

インスタンスの終了

不要になったインスタンスは削除できます。これは、インスタンスの削除 と呼ばれます。インスタンスの状態が 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 状態になり、インスタンスは実行されたままになります。

Console
インスタンスを終了するには
  1. インスタンスを終了する前に、終了時に Amazon EBS ボリュームが削除されることと、必要なデータすべてをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認して、データが失われないことを確認します。

  2. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  3. ナビゲーションペインで、[インスタンス] を選択します。

  4. インスタンスを選択し、[インスタンスの状態]、[インスタンスの終了] の順に選択します。

  5. 確認を求めるメッセージが表示されたら、[Terminate (終了)] を選択します。

Command line
インスタンスを終了するには

次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

制御された故障注入実験を実行するには

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 ユーザーガイド) を参照してください。

起動時にインスタンスに対する終了保護を有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ダッシュボードで、[Launch Instance] を選択し、ウィザードの指示に従います。

  3. [Configure Instance Details] ページで、[Enable termination protection] チェックボックスをオンにします。

実行中または停止中のインスタンスの削除保護を有効にするには
  1. インスタンスを選択してから、[Actions (アクション)]、[インスタンスの設定]、[削除保護の変更] の順に選択します。

  2. [はい、有効化する] を選択します。

実行中または停止中のインスタンスの削除保護を無効にするには
  1. インスタンスを選択してから、[Actions (アクション)]、[インスタンスの設定]、[削除保護の変更] の順に選択します。

  2. [Yes, Disable] を選択します。

コマンドラインを使用して終了保護を有効または無効にするには

次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

インスタンスによって起動されたシャットダウン動作の変更

デフォルトでは、Amazon EBS-backed インスタンスからシャットダウンを開始すると (shutdownpoweroff などのコマンドを使用)、インスタンスが停止します (halt を使用しても、poweroff コマンドは実行されません。使用した場合も、インスタンスは終了しません。代わりに、CPU が HLT 状態になり、インスタンスは実行されたままになります)。代わりに終了できるように、インスタンスの InstanceInitiatedShutdownBehavior 属性を使用して、この動作を変更できます。インスタンスの実行中または停止中に、この属性を更新できます。

InstanceInitiatedShutdownBehavior 属性は Amazon EC2 コンソールまたはコマンドラインを使用して更新できます。InstanceInitiatedShutdownBehavior 属性は、インスタンス自体のオペレーティングシステムからシャットダウンを実行する場合にのみ適用されます。これは StopInstances API または Amazon EC2 コンソールを使用してインスタンスを停止する場合には適用されません。

Console
コンソールを使用してインスタンスのシャットダウン動作を変更するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択します。

  4. [Actions (アクション)]、[Instance settings (インスタンスの設定)]、[Change shutdown behavior (シャットダウン動作の変更)] の順に選択します 現在の動作が選択されます。

  5. 動作を変更するには、[Shutdown behavior (シャットダウン動作)] から [Stop (停止)] または [Terminate (終了)] を選択し、[Apply (適用)] を選択します。

Command line
コマンドラインを使用してインスタンスのシャットダウン動作を変更するには

次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、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 属性を変更できます。実行中のインスタンスのこの属性を変更するには、コマンドラインを使用する必要があります。

コンソールを使用して、起動時にインスタンスのルートボリュームが存続するように変更するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. コンソールダッシュボードで、[Launch Instance] を選択します。

  3. [Choose an Amazon Machine Image (AMI)] ページで、AMI を選択し、[Select] を選択します。

  4. ウィザードにしたがって [Choose an Instance Type] ページと [Configure Instance Details] ページを設定します。

  5. [Add Storage] ページで、ルートボリュームの [Delete On Termination] チェックボックスの選択を解除します。

  6. ウィザードの残りのページを完了した後、[Launch ] を選択します。

新しいコンソールエクスペリエンスでは、インスタンスの詳細ペインでルートデバイスボリュームの詳細を表示することにより、設定を確認できます。ブロックデバイスの下にある、ストレージタブを右にスクロールしてボリュームの終了時に削除設定を確認します。デフォルトでは、[Delete on termination] は [Yes] です。デフォルトの動作を変更した場合は、[Delete on termination] が [No] になっています。

新しいコンソールエクスペリエンスでは、インスタンスの詳細ペインでルートデバイスボリュームの詳細を表示することにより、設定を確認できます。[Block devices] の隣にあるルートデバイスボリュームのエントリを選択します。デフォルトでは、[Delete on termination] は [True] です。デフォルトの動作を変更した場合は、[Delete on termination] が [False] になっています。

コマンドラインを使用して起動時にルートボリュームが存続するように変更する

EBS-backed インスタンスの起動時に、次のコマンドのいずれかを使用して、ルートデバイスボリュームが存続するように変更することができます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

永続化するボリュームのブロックデバイスマッピングで、--DeleteOnTermination を含め、false を指定します。

例えば、ボリュームを永続化するには、run-instances コマンドに次のオプションを追加します。

--block-device-mappings file://mapping.json

mapping.json では、デバイス名を指定し (例: /dev/sda1 または /dev/xvda)、--DeleteOnTerminationfalse を指定します。

[ { "DeviceName": "device_name", "Ebs": { "DeleteOnTermination": false } } ]

コマンドラインを使用して実行中のインスタンスのルートボリュームが存続するように変更する

次のいずれかのコマンドを使用して、実行中の EBS-backed インスタンスのルートデバイスボリュームを永続化するように変更できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

例えば、以下のコマンドを使用します。

aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --block-device-mappings file://mapping.json

mapping.json では、デバイス名を指定し (例: /dev/sda1 または /dev/xvda)、--DeleteOnTerminationfalse を指定します。

[ { "DeviceName": "device_name", "Ebs": { "DeleteOnTermination": false } } ]