インスタンスの停止と起動 - Amazon Elastic Compute Cloud

インスタンスの停止と起動

インスタンスにルートデバイスとして Amazon EBS ボリュームがある場合、そのインスタンスを停止して起動できます。インスタンスにはそのインスタンス ID が保持されますが、「概要」セクションで述べられているように変更される可能性があります。

ユーザーがインスタンスを停止すると、インスタンスはシャットダウンされます。停止しているインスタンスの使用料またはデータ転送料は課金されませんが、Amazon EBS ボリュームのストレージに対しては課金されます。停止したインスタンスを再起動するたびに、1 分間分の最低料金が課金されます。1 分経過した後は、使用した秒数のみ課金されます。例えば、インスタンスを 20 秒間実行して停止した場合は、1 分間分課金されます。インスタンスを 3 分 40 秒実行した場合は、ちょうど 3 分 40 秒間分課金されます。

インスタンスが停止している間、他のボリュームと同様にそのルートボリュームを扱い、変更することができます (ファイルシステムの問題を修復したり、ソフトウェアを更新したりするなど)。停止しているインスタンスからボリュームを接続解除し、それを実行中のインスタンスに接続して、変更を行い、実行中のインスタンスから接続解除して、停止しているインスタンスに再接続します。インスタンスのブロックデバイスマッピングにルートデバイスとして指定されたストレージデバイス名を使用して、ボリュームを接続解除していることを確認します。

インスタンスが必要なくなったら、終了することができます。インスタンスの状態が shutting-down または terminated に変わったら、そのインスタンスへの課金は停止します。詳細については、インスタンスの終了 を参照してください。インスタンスを休止する場合は、「オンデマンドの Linux インスタンスを休止状態にする」を参照してください。詳細については、再起動、停止、休止、削除の違い を参照してください。

概要

停止できるのは Amazon EBS-Backed インスタンスだけです。インスタンスのルートデバイスタイプを確認するには、インスタンスを記述し、そのルートボリュームのデバイスタイプが ebs (Amazon EBS-Backed インスタンス) か instance store (Instance store-Backed インスタンス) かをチェックします。詳細については、AMI のルートデバイスタイプの判別 を参照してください。

以下のインスタンスの属性は停止されると、変更できます。

  • インスタンスタイプ

  • ユーザーデータ

  • Kernel

  • RAM ディスク

インスタンスの実行中にこれらの属性を変更しようとすると、Amazon EC2 が IncorrectInstanceState エラーを返します。

インスタンスをいったん停止してから起動すると、次のようになります。

インスタンスを停止すると

  • インスタンスが正常なシャットダウンを実行し、実行を停止します。

  • インスタンスのステータスが stopping になり、その後 stopped になります。

  • (Auto Scaling グループ) インスタンスが Auto Scaling グループにある場合、Amazon EC2 Auto Scaling サービスはインスタンスを異常と判断して停止し、場合によってはそれを終了して代わりのインスタンスを起動します。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「Auto Scaling インスタンスのヘルスチェック」を参照してください。

  • (Windows) Windows インスタンスを停止して起動すると、アタッチされた Amazon EBS ボリュームのドライブ文字の変更などのタスクが EC2Config サービスによりインスタンスで実行されます。これらのデフォルトおよび変更方法については、「Windows インスタンスの Amazon EC2 ユーザーガイド」のEC2Config サービスを使用した Windows インスタンスの設定」を参照してください。

  • (ClassicLink) ClassicLink インスタンスを停止すると、今までリンクされていた VPC とのリンクが解除されます。インスタンスを起動した後に再び VPC にリンクする必要があります。ClassicLink の詳細については、「ClassicLink」を参照してください。

インスタンスを停止すると、次のものが失われます。

  • RAM に保存されているデータ。

  • インスタンスストアボリュームに保存されているデータは失われます。

  • 起動時または開始時に Amazon EC2 がインスタンスに自動的に割り当てられたパブリック IPv4 アドレス。(パブリック IPv4 アドレスに変更を加えないようにするには、インスタンスに Elastic IP アドレスを関連付けます。)

  • (EC2-Classic) EC2-Classic では、Elastic IP アドレスとインスタンスとの関連付けが解除されます。詳細については、EC2-Classic を参照してください。

インスタンスを停止しても、次のものは保持されます。

  • Amazon EBS ボリュームに保存されているデータ。EBS ボリュームは、インスタンスにアタッチされたままになります。

  • プライベート IPv4 アドレス。

  • IPv6 アドレス。

  • インスタンスに関連付けられた Elastic IP アドレス。インスタンスが停止すると、関連する Elastic IP アドレスに対する課金が始まります

インスタンスを起動すると

  • ほとんどの場合、基盤となる新しいホストコンピュータにインスタンスが移行します (ただし、現在のホストに残ることもあります)。

  • パブリック IPv4 アドレスを受信するようにインスタンスが設定されている場合、Amazon EC2 は新しいパブリック IPv4 アドレスをインスタンスに割り当てます。(パブリック IPv4 アドレスに変更を加えないようにするには、インスタンスに Elastic IP アドレスを関連付けます。)

詳細については、再起動、停止、休止、削除の違い を参照してください。

インスタンスを停止するとどうなるか

StopInstances API を使用して (例えば、Amazon EC2 コンソールで [Instance state] (インスタンスの状態) や [Stop instance] (インスタンスの停止) を選択するか、または stop-instances AWS CLI コマンドを使用して) EC2 インスタンスを停止すると、次のものが OS レベルで登録されます。

  • API リクエストは、ボタンのクリックイベントをゲストに送信します。

  • ボタンのクリックイベントの結果として、さまざまなシステムサービスが停止します。適切なシャットダウンは、ハイパーバイザーからの ACPI シャットダウンボタンのクリックイベントによってトリガーされます。

  • ACPI シャットダウンが開始されます。

  • このインスタンスは、適切なシャットダウンプロセスが終了したときにシャットダウンされます。設定可能な OS シャットダウン時間はありません。

  • インスタンス OS が数分以内に正常にシャットダウンされない場合は、ハードシャットダウンが実行されます。

デフォルトでは、Amazon EBS-backed インスタンスからシャットダウンを開始すると (例えば、shutdown または poweroff コマンドを使用)、インスタンスが停止します。この動作を変更して、インスタンスの停止ではなく終了させることができます。詳細については、インスタンスによって起動されたシャットダウン動作の変更 を参照してください。

インスタンスから halt コマンドを使用しても、シャットダウンは開始されません。使用した場合、インスタンスは終了しません。代わりに、CPU が HLT 状態になり、インスタンスは実行されたままになります。

インスタンスの停止と起動

コンソールまたはコマンドラインを使用して、Amazon EBS-Backed インスタンスを起動および停止できます。

New console

コンソールを使用して Amazon EBS-Backed インスタンスを停止および起動するには

  1. インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスを停止する前に、必要なデータをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認します。

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

  3. [Instance state (インスタンスの状態)]、[Stop instance (インスタンスの停止)] の順に選択します。このオプションが無効になっている場合は、インスタンスが既に停止しているか、またはルートボリュームがインスタンスストアボリュームです。

  4. 確認を求められたら、[Stop] を選択します。インスタンスが停止するまで、数分かかる場合があります。

  5. (オプション) インスタンスが停止されている間、特定のインスタンス属性を変更できます。詳細については、modify-stopped-instance を参照してください。

  6. 停止されているインスタンスを開始するには、インスタンスを選択後、[Instance state (インスタンスの状態)]、[Start instance (インスタンスの開始)] の順に選択します。

  7. インスタンスが running 状態になるまで、数分かかる場合があります。

Old console

コンソールを使用して Amazon EBS-Backed インスタンスを停止および起動するには

  1. インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスを停止する前に、必要なデータをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認します。

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

  3. [Actions]、[Instance State]、[Stop] の順に選択します。このオプションが無効になっている場合は、インスタンスが既に停止しているか、またはルートボリュームがインスタンスストアボリュームです。

  4. 確認を求めるメッセージが表示されたら、[Yes, Stop] を選択します。インスタンスが停止するまで、数分かかる場合があります。

  5. (オプション) インスタンスが停止されている間、特定のインスタンス属性を変更できます。詳細については、modify-stopped-instance を参照してください。

  6. 停止されているインスタンスを再起動するには、インスタンスを選択後、[Actions (アクション)]、[インスタンスの状態]、[Start (起動)] の順に選択します。

  7. 確認ダイアログボックスで [Yes, Start] を選択します。インスタンスが running 状態になるまで、数分かかる場合があります。

コマンドラインを使用して Amazon EBS-Backed インスタンスを停止および起動するには

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

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

AWS Fault Injection Simulator ユーザーガイドを使用して、インスタンスが停止および開始されたときにアプリケーションがどのように応答するかをテストできます。詳細については、「AWS Fault Injection Simulator ユーザーガイドユーザーガイド」を参照してください。

スケジュール上のインスタンスを停止および起動する

EC2 インスタンスの停止と開始をスケジュールすることができます。このプロセスを設定するための 2 つのオプションを以下に示します。

AWS でインスタンススケジューラを使用する

インスタンススケジューラを AWS で使用して、EC2 インスタンスの開始と停止を自動化することができます。詳細については、「CloudFormation で Instance Scheduler を使用して EC2 インスタンスをスケジュールするにはどうすればよいですか?」を参照してください。追加料金が適用されることに注意してください。

AWS Lambda および Amazon EventBridge ルールを使用する

Lambda と EventBridge ルールを使用して、スケジュール上のインスタンスを停止および開始することができます。詳細については、「Lambda を使用して、Amazon EC2 インスタンスを一定の間隔で停止および起動するにはどうすればよいですか?」を参照してください。

停止保護を有効にします

デフォルトでは、Amazon EC2 コンソール、コマンドラインインターフェイス、または API を使用してインスタンスを停止できます。インスタンスが誤って停止するのを防ぐために、インスタンスに対する停止保護を有効にすることができます。停止保護は、インスタンスを偶発的な終了からも保護します。

DisableApiStop属性は、Amazon EC2 コンソール、AWS CLI、または API を使用してインスタンスを停止できるかどうかを制御します。この属性の値は、インスタンスの起動時、インスタンスの実行中、またはインスタンスの停止時に設定できます。

DisableApiStop 属性は、インスタンスからシャットダウンを開始することによってインスタンスを停止することを妨げません (システムシャットダウンのオペレーティングシステムコマンドを使用)。

考慮事項

  • 停止保護を有効にしても、インスタンスにインスタンスを停止する [scheduled event] (予定されたイベント) がある場合、AWSがインスタンスを停止するのを防ぐことはできません。

  • 停止保護は、インスタンスが誤って停止するのを防ぐだけでなく、コンソール、AWS CLI、または API を使用して誤って終了するのを防ぎます。ただし、DisableApiTermination 属性は自動的に変更されません。DisableApiStop属性が false に設定されている場合、DisableApiTermination属性はコンソール、AWS CLI、API を使用してインスタンスを終了できるかどうかを判断するために使用されることに注意してください。

  • 停止保護を有効にしても、インスタンスが異常な場合やスケールインイベント中にAmazon EC2 Auto Scaling がインスタンスを終了するのを防ぐことはできません。

  • インスタンスストアでバックアップされたインスタンスの停止保護を有効にすることはできません。

  • スポットインスタンスの停止保護を有効にすることはできません。

  • 停止保護を有効または無効にすると、Amazon EC2 API は最終的な整合性モデルに従います。詳細については、「Amazon EC2 API Referenc」(Amazon EC2 API レファレンス) の「Eventual consistency」(結果整合性) を参照してください。

起動時にインスタンスに対する停止保護を有効にします

次のいずれかの方法を使用して、インスタンスを起動するときにインスタンスに対する停止保護を有効にできます。

New console

起動時にインスタンスに対する停止保護を有効にするには

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

  2. ダッシュボードで、[Launch Instance (インスタンスの起動)] を選択します。

  3. [new launch instance wizard] (新しいインスタンス起動ウィザード) でインスタンスを設定します。

    停止保護を有効にするには、[Stop protection] (保護停止) のために [Advanced details] (さらなる詳細) にある [Enable] (有効化) を選択します。

Old console

起動時にインスタンスに対する停止保護を有効にするには

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

  2. ダッシュボードで、[Launch Instance (インスタンスの起動)] を選択します。

  3. [old launch instance wizard] (古いインスタンス起動ウィザード) でインスタンスを設定します。

    停止保護を無効にするには、[Enable stop protection] (停止保護の有効化) のために [Configure Instance Details] (インスタンスの詳細設定) ページで、[Protect against accidental stoppage] (偶発的な停止から保護) のチェックボックスを選択します。

AWS CLI

起動時にインスタンスに対する停止保護を有効にするには

run-instancesAWS CLIコマンドを使用して、インスタンスを起動し、disable-api-stopパラメータを指定します。

aws ec2 run-instances \ --image-id ami-a1b2c3d4e5example \ --instance-type t3.micro \ --key-name MyKeyPair \ --disable-api-stop \ ...

実行中または停止したインスタンスに対する停止保護を有効にします

次のいずれかの方法を使用して、インスタンスが実行中または停止したときにインスタンスに対する停止保護を有効にできます。[old] (古い) [instances] (インスタンス) コンソールは、実行中または停止したインスタンスに対する停止保護の有効化をサポートしていないことに注意してください。

New console

実行中または停止中のインスタンスの停止保護を有効にするには

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

  2. 左のナビゲーターで、[Instances] (インスタンス) を選択します。

  3. インスタンスを選択してから、[Actions] (アクション)、[Instance Settings] (インスタンスの設定)、[Change Stop Protection] (停止保護の変更) を選択します。

  4. [Enable] (有効化) チェックボックスを選択し、[Save] (保存) を選択します。

AWS CLI

実行中または停止中のインスタンスの停止保護を有効にするには

modify-instance-attributeAWS CLIコマンドを使用して、disable-api-stopパラメターを指定します。

aws ec2 modify-instance-attribute \ --instance-id i-1234567890abcdef0 \ --disable-api-stop

実行中または停止したインスタンスに対する停止保護を無効にします

次のいずれかの方法を使用して、実行中または停止したインスタンスに対する停止保護を無効にすることができます。[old] (古い) [instances] (インスタンス) コンソールは、実行中または停止したインスタンスに対する停止保護の無効化をサポートしていないことに注意してください。

New console

実行中または停止中のインスタンスの停止保護を無効にするには

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

  2. 左のナビゲーターで、[Instances] (インスタンス) を選択します。

  3. インスタンスを選択してから、[Actions] (アクション)、[Instance Settings] (インスタンスの設定)、[Change Stop Protection] (停止保護の変更) を選択します。

  4. [Enable] (有効化) チェックボックスをオフにして、[Save] (保存) を選択します。

AWS CLI

実行中または停止中のインスタンスの停止保護を無効にするには

modify-instance-attributeAWS CLIコマンドを使用して、no-disable-api-stopパラメターを指定します。

aws ec2 modify-instance-attribute \ --instance-id i-1234567890abcdef0 \ --no-disable-api-stop

停止したインスタンスの変更

AWS Management Consoleまたはコマンドラインインターフェイスを使用して、停止されているインスタンスのインスタンスタイプ、ユーザーデータ、および EBS 最適化属性を変更できます。AWS Management Consoleを使用して、DeleteOnTermination、カーネル、または RAM ディスクの属性を変更することはできません。

インスタンス属性を変更するには

コマンドラインを使用してインスタンス属性を変更するには

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

インスタンスの停止に関するトラブルシューティング

Amazon EBS-Backed インスタンスを停止し、stopping 状態に "stuck" が表示されている場合、インスタンスを強制終了できます。詳細については、インスタンスの停止に関するトラブルシューティング を参照してください。