

# Amazon EC2 インスタンスの停止と開始
<a name="Stop_Start"></a>

インスタンスにルートボリュームとして Amazon EBS ボリュームがある場合、そのインスタンスを停止して開始できます。ユーザーがインスタンスを停止すると、インスタンスはシャットダウンされます。インスタンスを開始すると、通常、インスタンスは基盤となる新しいホストコンピュータに移行され、新しいパブリック IPv4 アドレスが割り当てられます。

インスタンスの停止は、ユーザーが開始する (インスタンスを手動で停止する場合) ことも、AWS が開始する (インスタンスの基盤となるホストの回復不可能な障害が AWS によって検出されたときに発生するスケジュールされた停止イベントに応じて) こともできます。

ユーザーが開始する停止の場合は、インスタンスからオペレーティングシステムの停止コマンドを実行するのではなく、Amazon EC2 コンソール、CLI、または API を使用することをお勧めします。Amazon EC2 を使用する場合、インスタンスが数分以内に正常にシャットダウンされない場合、Amazon EC2 はハードシャットダウンを実行します。さらに、AWS CloudTrail はインスタンスが停止したたときの API レコードを作成します。

このトピックでは、ユーザーが開始する停止を実行する方法について説明します。AWS によって実行される停止の詳細については、「[停止またはリタイアがスケジュールされている Amazon EC2 インスタンスを管理する](schedevents_actions_retire.md)」を参照してください。

インスタンスを停止しても、そのインスタンスは削除されません。インスタンスが必要なくなったら、終了することができます。詳細については「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。インスタンスを休止状態にしてインスタンスメモリ (RAM) の内容を保存する場合はを参照してください。[Amazon EC2 インスタンスの休止](Hibernate.md)インスタンスライフサイクルアクションの違いについてはを参照してください。[インスタンスの状態の違い](ec2-instance-lifecycle.md#lifecycle-differences)

**Topics**
+ [仕組み](how-ec2-instance-stop-start-works.md)
+ [インスタンスを停止するメソッド](instance-stop-methods.md)
+ [手動で停止して開始](#starting-stopping-instances)
+ [自動的に停止して開始](#stop-start-ec2-instances-on-a-schedule)
+ [実行中および停止中のインスタンスをすべて検索](#find-running-and-stopped-instances-in-globalview)
+ [初期と最新の起動時間を確認](#find-initial-launch-time)
+ [停止保護を有効にします](ec2-stop-protection.md)

# EC2 インスタンスの停止および開始の動作
<a name="how-ec2-instance-stop-start-works"></a>

Amazon EC2 インスタンスを停止すると、変更はインスタンスのオペレーティングシステム (OS) レベルで登録され、一部のリソースは失われますが、一部のリソースは存続します。インスタンスを起動すると、変更はインスタンスレベルで登録されます。

**Topics**
+ [インスタンスを停止するとどうなるか](#what-happens-stop)
+ [インスタンスを起動するとどうなるか](#what-happens-start)
+ [アプリケーションの応答をテストして停止して起動する](#test-stop-start-instance)
+ [インスタンスの起動と停止に関連するコスト](#ec2-stop-start-costs)

## インスタンスを停止するとどうなるか
<a name="what-happens-stop"></a>

デフォルトの停止方法を使用してインスタンスを停止したときの一般的な動作については、次のとおりに示されます。使用する[停止メソッド](instance-stop-methods.md)によっては、一部動作が異なる場合がありますのでご注意ください。

**OS レベルでの変更の登録**
+ API リクエストはボタンのクリックイベントをゲストに送信します。
+ ボタンのクリックイベントの結果として、さまざまなシステムサービスが停止します。正常な OS シャットダウンは、ハイパーバイザーによる ACPI シャットダウンボタンのクリックイベントによってトリガーされます。
+ ACPI シャットダウンが開始されます。
+ このインスタンスは、正常な OS シャットダウンプロセスが終了したときにシャットダウンされます。設定可能な OS シャットダウン時間はありません。
+ インスタンス OS が数分以内に正常にシャットダウンされない場合はハードシャットダウンが実行されます。
+ インスタンスが実行を停止します。
+ インスタンスのステータスが `stopping` に変更されたら、`stopped` になります。
+ [自動スケーリング] インスタンスが `running` 以外の Amazon EC2 状態のとき、インスタンスが Auto Scaling グループにあるか、ステータスチェックのステータスが `impaired` になった場合、Amazon EC2 Auto Scaling はインスタンスを異常と見なして置き換えます。詳細については*Amazon EC2 Auto Scaling ユーザーガイド*の「[Auto Scaling グループ内のインスタンスのヘルスチェック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)」を参照してください。
+ [Windows インスタンス] Windows インスタンスを停止および起動した場合、起動エージェントはアタッチされている Amazon EBS ボリュームのドライブ文字を変更するなど、インスタンスでタスクを実行します。これらのデフォルトおよび変更方法については「[EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する](ec2launch-v2.md)」を参照してください。

**失われるリソース**
+ RAM に保存されているデータ。
+ インスタンスストアボリュームに保存されているデータは失われます。
+ 起動時または開始時に Amazon EC2 がインスタンスに自動的に割り当てられたパブリック IPv4 アドレス。パブリック IPv4 アドレスに変更を加えないようにするにはインスタンスに [Elastic IP アドレス](elastic-ip-addresses-eip.md)を関連付けます。

**存続するリソース**
+ アタッチされた Amazon EBS ボリュームとデータボリューム。
+ Amazon EBS ボリュームに保存されているデータ。
+ アタッチされた[ネットワークインターフェイス](using-eni.md)。

  ネットワークインターフェイスには次のリソースが含まれており、これらも保持されます。
  + プライベート IPv4 アドレス。
  + IPv6 アドレス。
  + インスタンスに関連付けられた Elastic IP アドレス。インスタンスが停止すると、[関連する Elastic IP アドレスに対する課金が始まります](elastic-ip-addresses-eip.md#eip-pricing)。

次の図は、EC2 インスタンスを停止したときに保持されるものと失われるものとを示しています。図は 3 つの要素からなります。1 つ目の**実行中の EC2 インスタンス**では、`running` 状態のインスタンスとそのリソースが描かれています。2 つ目の**停止した EC2 インスタンス**では、`stopped` 状態のインスタンスと、そこで保持されているリソースが描かれています。3 つ目の**紛失**では、インスタンスが停止したときに失われたリソースが描かれています。

![\[インスタンスが停止すると、パブリック IPv4 アドレス、RAM、およびインスタンスストレージデータは失われます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance.png)


Mac インスタンスを停止したときに起きることについては「[Amazon EC2 Mac インスタンスを停止または終了する](mac-instance-stop.md)」を参照してください。

## インスタンスを起動するとどうなるか
<a name="what-happens-start"></a>
+ ほとんどの場合、基盤となる新しいホストコンピュータにインスタンスが移行します (ただし、[専有ホスト](dedicated-hosts-understanding.md)設定でインスタンスがホストに割り当てられた場合などは現在のホストにインスタンスが残ります)。
+ 関連付けられた EBS ボリュームおよびネットワークインターフェイスがインスタンスに再アタッチされます。
+ インスタンスがパブリック IPv4 アドレスを受信するように設定されている場合、Amazon EC2 は新しいパブリック IPv4 アドレスをインスタンスに割り当てます。ただし、Elastic IP アドレスに関連付けられたセカンダリネットワークインターフェイスまたはセカンダリプライベート IPv4 アドレスがある場合は割り当てしません。
+ プレイスメントグループ内のインスタンスを停止して再起動しても、そのインスタンスは同じプレイスメントグループ内で実行されます。ただし、インスタンスに対して十分な容量がない場合、起動は失敗します。既にインスタンスを実行中のプレイスメントグループ内のインスタンスを起動するときにキャパシティエラーを受信した場合は、プレイスメントグループ内のすべてのインスタンスを停止して、もう一度起動してください。インスタンスを起動すると、すべてのリクエストしたインスタンスに応じた容量があるハードウェアにインスタンスが移行される場合があります。

## アプリケーションの応答をテストして停止して起動する
<a name="test-stop-start-instance"></a>

インスタンスが停止後に起動された場合のアプリケーションの応答をテストするにはAWS Fault Injection Service を使用します。詳細については[AWS Fault Injection Service ユーザーガイド](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)を参照してください。

## インスタンスの起動と停止に関連するコスト
<a name="ec2-stop-start-costs"></a>

インスタンスの停止と起動には以下のコストがかかります。

**停止** – インスタンスの状態が `shutting-down` または `terminated` に変わると、そのインスタンスの料金は発生しなくなります。停止したインスタンスの使用料やデータ転送料は請求されません。Amazon EBS ストレージボリュームの保存には料金がかかります。

**起動** – 停止したインスタンスを再起動するたびに、1 分間分の最低料金が課金されます。1 分経過した後は使用した秒数のみ課金されます。例えば、インスタンスを 20 秒間実行して停止した場合は1 分間分課金されます。インスタンスを 3 分 40 秒実行した場合はちょうど 3 分 40 秒間分課金されます。

# インスタンスを停止するメソッド
<a name="instance-stop-methods"></a>

ユーザー主導の停止を実行するには、デフォルトの停止、OS シャットダウンをスキップした停止、強制停止、OS シャットダウンをスキップした強制停止の 4 つの方法があります。次のテーブルでは、停止メソッドの主な違いが比較されます。


| 停止メソッド | 主な目的 | ユースケース | CLI コマンド | 
| --- | --- | --- | --- | 
| デフォルトの停止 | 正常な OS シャットダウンの試行による通常のインスタンスシャットダウン。 | 一般的なインスタンスの停止。 |  <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0</pre>  | 
| OS シャットダウンをスキップして停止する | インスタンスを停止するときに正常な OS シャットダウンをバイパスします。 | 正常な OS シャットダウンをバイパスする必要がある場合。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--skip-os-shutdown</pre> | 
| 強制停止する | スタックしたインスタンスを処理します。最初にデフォルトの停止を試みます。インスタンスが停止に失敗した場合、インスタンスを強制的に停止します。 | インスタンスが stopping 状態でスタックしている場合。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force</pre> | 
| OS シャットダウンをスキップして強制停止する | インスタンスを停止する際、正常な OS シャットダウンが強制停止されてバイパスされます。 | 正常な OS シャットダウンの強制停止およびバイパスする必要がある場合。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force \<br />--skip-os-shutdown</pre> | 

各メソッドの使用方法の手順については、次の内容を参照してください。
+ [正常な OS シャットダウンでインスタンスを停止する](Stop_Start.md#stop-instance-with-graceful-os-shutdown)
+ [インスタンスを停止して正常な OS シャットダウンをバイパスする](Stop_Start.md#stop-instance-bypass-graceful-os-shutdown)
+ [インスタンスを強制停止する](TroubleshootingInstancesStopping.md#force-stop-instance)

**Topics**
+ [デフォルトの停止](#ec2-instance-default-stop)
+ [OS シャットダウンをスキップして停止する](#ec2-instance-stop-with-skip-os-shutdown)
+ [強制停止する](#ec2-instance-force-stop)
+ [OS シャットダウンをスキップして強制停止する](#ec2-instance-force-stop-with-skip-os-shutdown)

次のセクションでは、ユーザー主導の 4 つの異なる停止メソッドに関する詳細情報が記載されています。

## デフォルトの停止
<a name="ec2-instance-default-stop"></a>

デフォルトの停止メソッドは、インスタンスを停止する標準的な方法です。StopInstances コマンドを発行すると、次の図で示されるように、インスタンスは `running` 状態から `stopping` 状態に移行したら、最後に `stopped` 状態に移行します。

![\[デフォルトの停止フロー\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-1.png)


**目的:** 正常な OS シャットダウンの試行による通常のインスタンスシャットダウン。

**データへの影響:** EBS ルートボリュームおよびデータボリューム上にデータが保持されます。インスタンスストアボリューム上のデータが失われます。

**使用するタイミング:** 一般的な停止の最初の停止試行。

**注記**  
OS シャットダウンをスキップした停止をすでに試行している場合、同じ状態移行セッション中の後続のデフォルトの停止試行では、正常な OS シャットダウンが実行されません。正常な OS シャットダウンをバイパスすると、インスタンスの現在のセッションでは元に戻せません。

## OS シャットダウンをスキップして停止する
<a name="ec2-instance-stop-with-skip-os-shutdown"></a>

正常な OS シャットダウンをバイパスする必要がある場合、次の図で示されるように、OS シャットダウンをスキップして停止するメソッドを使用してインスタンスを停止し、正常な OS シャットダウンをバイパスできます。

![\[OS シャットダウンフローをスキップして停止する\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-3.png)


**警告**  
正常な OS シャットダウンをバイパスすると、データの損失または破損 (例えば、メモリコンテンツがディスクにフラッシュされなかったり、処理中の IO が失われたりする) や、シャットダウンスクリプトがスキップされる可能性があります。

**目的:** インスタンスを停止するときに正常な OS シャットダウンをバイパスします。

**データへの影響:** データの損失や破損につながる可能性があります。メモリの内容がディスクにフラッシュされず、処理中の IO が失われる可能性があります。シャットダウンスクリプトがスキップされる可能性があります。

**使用するタイミング:** 正常な OS シャットダウンをバイパスする必要がある場合。正常な OS シャットダウンによるデフォルトの停止の進行中に使用した場合、正常な OS シャットダウンがバイパスされます。

**注記**  
正常な OS シャットダウンをバイパスすると、インスタンスの現在の状態移行セッションは元に戻せません。このセッション中に行われる次のデフォルトの停止試行では、正常な OS シャットダウンは試行されません。

## 強制停止する
<a name="ec2-instance-force-stop"></a>

強制停止メソッドは、`stopping` 状態でスタックしているインスタンスを処理するために使用されます。通常、基盤となるハードウェアの問題 ([システムステータスチェック](monitoring-system-instance-status-check.md#system-status-checks)の失敗によって示される) によってインスタンスがスタックします。

強制停止メソッドでは、最初にデフォルトの停止が試行されます。インスタンスが `stopping` 状態でスタックした場合、`force` パラメータによってインスタンスが強制的にシャットダウンされ、次の図で示されるようにインスタンスを `stopped` 状態に移行されます。

![\[強制停止フロー\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-2.png)


**目的:** `stopping` 状態にスタックしたインスタンスを処理します。最初にデフォルトの停止が試行されます。インスタンスの停止に失敗した場合、インスタンスが強制的にシャットダウンされます。

**データへの影響:** 最初にデフォルトの停止が試行されますが、強制停止が進行された場合、データ損失や破損が発生する可能性があります。まれに EBS ボリュームやその他の共有リソースに停止後の書き込みが発生する場合があります。

**使用するタイミング:** デフォルトの停止後にインスタンスがスタック状態になったときに 2 回目の停止を試みます。詳細については、「[Amazon EC2 インスタンスの停止に関する問題のトラブルシューティング](TroubleshootingInstancesStopping.md)」を参照してください。

## OS シャットダウンをスキップして強制停止する
<a name="ec2-instance-force-stop-with-skip-os-shutdown"></a>

正常な OS シャットダウンを強制停止およびバイパスする必要がある場合、次の図で示されるように、OS シャットダウンをスキップして強制停止するメソッドを使用して、インスタンスを `stopped` 状態にすることができます。

![\[OS シャットダウンフローのスキップによる強制停止\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/stop-instance-flow-4.png)


**目的:** インスタンスを停止するとき、強制停止と正常な OS シャットダウンのバイパスを組み合わせます。

**データへの影響:** OS のシャットダウンをスキップすると、データの損失や破損が発生する可能性があります。メモリの内容がディスクにフラッシュされず、処理中の IO が失われる可能性があります。シャットダウンスクリプトがスキップされる可能性があります。強制停止が進行すると、追加のデータ損失や破損を引き起こす可能性があります。まれに、EBS ボリュームやその他の共有リソースに停止後の書き込みが発生する場合があります。

**使用するタイミング:** インスタンスが停止することを確認し、正常な OS シャットダウンをバイパスする場合。正常な OS シャットダウンによるデフォルトの停止の進行中に使用した場合、正常な OS シャットダウンがバイパスされます。

## インスタンスを手動で停止して開始する
<a name="starting-stopping-instances"></a>

ユーザーは Amazon EBS-backed インスタンス (EBS ルートボリュームがあるインスタンス) を停止および開始できます。インスタンスストアルートボリュームがあるインスタンスを停止および開始することはできません。

デフォルトのメソッドを使用してインスタンスを停止すると、正常なオペレーティングシステム (OS) のシャットダウンが試行されます。正常な OS シャットダウンをバイパスすることはできますが、データの整合性がリスクにさらされる可能性があります。

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

[Linux インスタンス] インスタンスから OS **halt** コマンドを使用しても、シャットダウンは開始されません。**halt**コマンドを使用すると、インスタンスは終了せず、代わりに CPU をに配置して `HLT` CPU 操作を一時停止します。インスタンスは実行状態のままです。

OSの **shutdown** コマンドまたは **poweroff** コマンドを使用してシャットダウンを開始できます。OS コマンドを使用すると、インスタンスはデフォルトで停止します。この動作はいつでも変更できます。詳細については、「[インスタンスによるシャットダウン動作を変更する](Using_ChangingInstanceInitiatedShutdownBehavior.md)」を参照してください。

**注記**  
Amazon EBS-Backed インスタンスを停止し、`stopping` 状態に 「stuck」 が表示されている場合、インスタンスを強制終了できます。詳細については、「[Amazon EC2 インスタンスの停止に関する問題のトラブルシューティング](TroubleshootingInstancesStopping.md)」を参照してください。

**Topics**
+ [正常な OS シャットダウンでインスタンスを停止する](#stop-instance-with-graceful-os-shutdown)
+ [インスタンスを停止して正常な OS シャットダウンをバイパスする](#stop-instance-bypass-graceful-os-shutdown)
+ [インスタンスの開始](#start-ec2-instance)

### 正常な OS シャットダウンでインスタンスを停止する
<a name="stop-instance-with-graceful-os-shutdown"></a>

デフォルトの停止メソッドを使用してインスタンスを停止できます。これには正常な OS シャットダウンの試行が含まれます。詳細については、「[デフォルトの停止](instance-stop-methods.md#ec2-instance-default-stop)」を参照してください。

------
#### [ Console ]

**デフォルトの停止メソッドを使用してインスタンスを停止する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで **[インスタンス]** を選択し、該当するインスタンスを選択してください。

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

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

------
#### [ AWS CLI ]

**デフォルトの停止メソッドを使用してインスタンスを停止する方法**  
[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンドを使用します。

```
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**デフォルトの停止メソッドを使用してインスタンスを停止する方法**  
「[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html)」コマンドレットを使用します。

```
Stop-EC2Instance -InstanceId i-1234567890abcdef0
```

------

### インスタンスを停止して正常な OS シャットダウンをバイパスする
<a name="stop-instance-bypass-graceful-os-shutdown"></a>

インスタンスを停止するとき、正常な OS シャットダウンをバイパスできます。詳細については、「[OS シャットダウンをスキップして停止する](instance-stop-methods.md#ec2-instance-stop-with-skip-os-shutdown)」を参照してください。

**警告**  
正常な OS シャットダウンをバイパスすると、データの損失または破損 (例えば、メモリコンテンツがディスクにフラッシュされなかったり、処理中の IO が失われたりする) や、シャットダウンスクリプトがスキップされる可能性があります。

------
#### [ Console ]

**インスタンスを停止して正常な OS シャットダウンをバイパスする方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Instances**] を選択し、インスタンスを選択してください。

1. [**Instance state (インスタンスの状態)**]、[**Stop instance (インスタンスの停止)**] の順に選択します。

1. **[OS シャットダウンをスキップ]** で、**[OS シャットダウンをスキップ]** チェックボックスをオンにします。コンソールにこのオプションが表示されない場合、現在のリージョンのコンソールではまだ利用できません。ただし、AWS CLI または SDK を使用してこの機能にアクセスするか、コンソールで別のリージョンを試すことができます。

1. **[停止]** を選択します。

------
#### [ AWS CLI ]

**インスタンスを停止して正常な OS シャットダウンをバイパスする方法**  
`--skip-os-shutdown` で「[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html)」コマンドを使用します。

```
aws ec2 stop-instances \
    --instance-ids i-1234567890abcdef0 \
    --skip-os-shutdown
```

------
#### [ PowerShell ]

**インスタンスを停止して正常な OS シャットダウンをバイパスする方法**  
`-SkipOsShutdown $true` で「[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html)」コマンドレットを使用します。

```
Stop-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -SkipOsShutdown $true
```

------

### インスタンスの開始
<a name="start-ec2-instance"></a>

停止したインスタンスを開始できます。

------
#### [ Console ]

**インスタンスを開始するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインの [**インスタンス**] を選択してください。

1. インスタンスを選択したら、**[インスタンスの状態]** および **[インスタンスを開始]** を選択してください。

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

------
#### [ AWS CLI ]

**インスタンスを開始するには**  
[start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) コマンドを使用します。

```
aws ec2 start-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**インスタンスを開始するには**  
[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) コマンドレットを使用します。

```
Start-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## インスタンスを自動的に停止して開始する
<a name="stop-start-ec2-instances-on-a-schedule"></a>

次のサービスを使用して、インスタンスの停止と開始を自動化できます。

**AWS でインスタンススケジューラを使用する**  
インスタンススケジューラを AWS で使用して、EC2 インスタンスの開始と停止を自動化することができます。詳細については「[CloudFormation で Instance Scheduler を使用して EC2 インスタンスをスケジュールするにはどうすればよいですか?](https://repost.aws/knowledge-center/stop-start-instance-scheduler)」を参照してください。[追加料金が適用される](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/cost.html)ことに注意してください。

**AWS Lambda および Amazon EventBridge ルールを使用する**  
Lambda と EventBridge ルールを使用して、スケジュール上のインスタンスを停止および開始することができます。詳細については「[Lambda を使用して、Amazon EC2 インスタンスを一定の間隔で停止および開始するにはどうすればよいですか?](https://repost.aws/knowledge-center/start-stop-lambda-eventbridge)」を参照してください。

**Amazon EC2 Auto Scaling**  
アプリケーションの負荷を処理できる Amazon EC2 インスタンスの数が適切であることを確認するにはAuto Scaling グループを作成します。 Amazon EC2 Auto Scalingは、トラフィック需要を処理する適切な容量をアプリケーションで常に確保できるようにし、必要な場合にのみインスタンスを起動することでコストを節約できます。不要なインスタンスを停止するのではなく、Amazon EC2 Auto Scaling終了させることに注意してください。自動スケーリンググループを設定するには「[Amazon EC2 Auto Scalingをはじめる](https://docs.aws.amazon.com/autoscaling/ec2/userguide/get-started-with-ec2-auto-scaling.html)」を参照してください。

## 実行中および停止中のインスタンスをすべて検索
<a name="find-running-and-stopped-instances-in-globalview"></a>

[Amazon EC2 グローバルビュー](https://console.aws.amazon.com/ec2globalview/home)ではすべてにわたって、実行中と停止中のすべての AWS リージョン のインスタンスを 1 つのページで確認できます。これはインベントリを取得し、忘れられたインスタンスを見つけるのに特に有用です。グローバルビューを使用する方法については「[AWS Global View を使用して複数のリージョンにわたるリソースを表示する](global-view.md)」を参照してください。

あるいは、インスタンスがある各リージョンで、コマンドまたはコマンドレットを実行できます。

------
#### [ AWS CLI ]

**リージョンにある EC2 インスタンスの数を入手するには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用して、現在のリージョンにあるインスタンスの数を数えます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

```
aws ec2 describe-instances \
    --region us-east-2 \
    --query "length(Reservations[].Instances[])"
```

以下は出力の例です。

```
27
```

**リージョン内の EC2 インスタンスに関する概要情報を取得するには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

```
aws ec2 describe-instances \
    --region us-east-2 \
    --query "Reservations[].Instances[].[InstanceId,InstanceType,PrivateIpAddress]" \
    --output table
```

以下は出力の例です。

```
---------------------------------------------------------
|                   DescribeInstances                   |
+---------------------+---------------+-----------------+
|  i-0e3e777f4362f1bf7|  t2.micro     |  10.0.12.9      |
|  i-09453945dcf1529e9|  t2.micro     |  10.0.143.213   |
|  i-08fd74f3f1595fdbd|  m7i.4xlarge  |  10.0.1.103     |
+---------------------+---------------+-----------------+
```

------
#### [ PowerShell ]

**リージョンにある EC2 インスタンスの数を入手するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -Region us-east-2).Instances.Length
```

以下は出力の例です。

```
27
```

**リージョン内の EC2 インスタンスに関する概要情報を取得するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

```
(Get-EC2Instance).Instances | Select InstanceId, InstanceType, PrivateIpAddress
```

以下は出力の例です。

```
InstanceId          InstanceType PrivateIpAddress
----------          ------------ ----------------
i-0e3e777f4362f1bf7 t2.micro     10.0.12.9
i-09453945dcf1529e9 t2.micro     10.0.143.213
i-08fd74f3f1595fdbd m7i.4xlarge  10.0.1.103
```

------

## 初期と最新の起動時間を確認
<a name="find-initial-launch-time"></a>

インスタンスを記述するとき、インスタンスの起動時間は最新の起動時間です。インスタンスを停止して開始すると、起動時間に新しいインスタンスの開始時刻が反映されます。インスタンスの初回起動時間を確認するにはインスタンスを停止して開始した後でも、プライマリネットワークインターフェイスがインスタンスにアタッチされた時刻を確認してください。

------
#### [ Console ]

**直近の起動時間を見つけるには**  
インスタンスを選択し、**[詳細]** タブの **[インスタンスの詳細]** から、**[起動時間]** を見つけます。

**最初の起動時刻を見つけるには**  
インスタンスを選択し、**[ネットワーク]** タブの **[ネットワークインターフェイス]** から [プライマリネットワークインターフェイス] (デバイスインデックスは 0) を見つけます。

------
#### [ AWS CLI ]

**最初の起動時間と直近の起動時間を見つけるには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用して、指定したインスタンスの最初の起動時間と直近の起動時間の両方を表示します。

```
aws ec2 describe-instances \
    --instance-id i-1234567890abcdef0 \
    --query 'Reservations[].Instances[].{InstanceID:InstanceId,InitialLaunch:NetworkInterfaces[0].Attachment.AttachTime,LastLaunch:LaunchTime}'
```

以下は出力の例です。

```
[
    {
        "InstanceID": "i-1234567890abcdef0",
        "InitialLaunch": "2024-04-19T00:47:08+00:00",
        "LastLaunch": "2024-05-27T06:24:06+00:00"
    }
]
```

------
#### [ PowerShell ]

**直近の起動時間を見つけるには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.LaunchTime
```

以下は出力の例です。

```
Monday, May 27, 2024 6:24:06 AM
```

**最初の起動時刻を見つけるには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.NetworkInterfaces.Attachment.AttachTime
```

以下は出力の例です。

```
Friday, April 19, 2024 12:47:08 AM
```

------

# EC2 インスタンスに対する停止保護を有効にする
<a name="ec2-stop-protection"></a>

インスタンスが誤って停止するのを防ぐために、インスタンスに対する停止保護を有効にすることができます。停止保護はインスタンスを偶発的な終了からも保護します。

Amazon EC2 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html) API の `DisableApiStop` 属性はAmazon EC2 コンソール、AWS CLI、Amazon EC2 API を使用してインスタンスを停止できるかどうかを制御します。この属性の値はインスタンスの起動時、インスタンスの実行中、またはインスタンスの停止時に設定できます。

**考慮事項**
+ 停止保護を有効にしても、**shutdown** や **poweroff** などのオペレーティングシステムコマンドによりインスタンスからシャットダウンを開始してインスタンスを誤って停止することは防げません。
+ 停止保護を有効にしても、インスタンスにインスタンスを停止する[予定されたイベント](monitoring-instances-status-check_sched.md)がある場合、AWS がインスタンスを停止するのを防ぐことはできません。
+ 停止保護を有効にしても、インスタンスが異常な場合やスケールインイベント中にAmazon EC2 Auto Scaling がインスタンスを終了するのを防ぐことはできません。スケールイン時に Auto Scaling グループが特定のインスタンスを終了できるかどうかを制御するには[インスタンスのスケールイン保護](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)を使用します。
+ 停止保護はインスタンスが誤って停止するのを防ぐだけでなく、コンソール、AWS CLI、または API を使用して誤って終了するのを防ぎます。ただし、`DisableApiTermination` 属性は自動的に変更されません。`DisableApiStop` 属性が `false` に設定されている場合、`DisableApiTermination` 属性の設定によって、コンソール、AWS CLI 、またはAPIを使用してインスタンスを終了できるかどうかが決まります。詳細については、「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。
+ インスタンスストアのルートボリュームを持つインスタンスの停止保護は有効にできません。
+ スポットインスタンスの停止保護は有効にできません。
+ 停止保護を有効または無効にすると、Amazon EC2 API は最終的な整合性モデルに従います。つまり、停止保護属性を設定するコマンドを実行した結果が、それ以降に実行するすべてのコマンドにすぐには表示されない場合があります。詳細については「*Amazon EC2 デベロッパーガイド*」の「[Amazon EC2 API の結果整合性](https://docs.aws.amazon.com/ec2/latest/devguide/eventual-consistency.html)」を参照してください。

**Topics**
+ [起動時にインスタンスに対する停止保護を有効にします](#enable-stop-protection-at-launch)
+ [実行中または停止したインスタンスに対する停止保護を有効にします](#enable-stop-protection-on-running-or-stopped-instance)
+ [実行中または停止したインスタンスに対する停止保護を無効にします](#disable-stop-protection-on-running-or-stopped-instance)

## 起動時にインスタンスに対する停止保護を有効にします
<a name="enable-stop-protection-at-launch"></a>

インスタンスを起動するときに、インスタンスに対する停止保護を有効にできます。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ダッシュボードで、[**Launch Instance (インスタンスの起動)**] を選択してください。

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

1. ウィザードで、**[高度な詳細]** の **[保護停止]** で **[有効にする]** を選択して、保護を停止します。

------
#### [ AWS CLI ]

**起動時にインスタンスに対する停止保護を有効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して、インスタンスを起動します。次のパラメータを追加します。

```
--disable-api-stop
```

------
#### [ PowerShell ]

**起動時にインスタンスに対する停止保護を有効にするには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用してインスタンスを起動します。次のパラメータを追加します。

```
-DisableApiStop $true
```

------

## 実行中または停止したインスタンスに対する停止保護を有効にします
<a name="enable-stop-protection-on-running-or-stopped-instance"></a>

インスタンスの実行中に、またはインスタンスを停止したときに、インスタンスに対する停止保護を有効にできます。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[Instances]** (インスタンス) をクリックしてください。

1. インスタンスを選択してから、**[アクション]** > **[インスタンスの設定]** > **[保護停止を変更する]** を選択してください。

1. **[有効化]** チェックボックスをオンにしたら、**[保存]** を選択してください。

------
#### [ AWS CLI ]

**インスタンスに対する停止保護を有効にするには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

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

------
#### [ PowerShell ]

**インスタンスに対する停止保護を有効にするには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -DisableApiStop $true
```

------

## 実行中または停止したインスタンスに対する停止保護を無効にします
<a name="disable-stop-protection-on-running-or-stopped-instance"></a>

次のいずれかの方法を使用して、実行中または停止したインスタンスに対する停止保護を無効にすることができます。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[Instances]** (インスタンス) をクリックしてください。

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

1. **[有効化]** チェックボックスをオフにしたら、**[保存]** を選択してください。

------
#### [ AWS CLI ]

**実行中または停止中のインスタンスの停止保護を無効にするには**  
[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを使用します。

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

------
#### [ PowerShell ]

**インスタンスに対する停止保護を無効にするには**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを使用します。

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -DisableApiStop $false
```

------