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

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

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

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

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

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

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

インスタンスを手動で停止して起動する

ユーザーはAmazon EBS-backed インスタンス (EBS ルートデバイスを備えたインスタンス) を停止および起動できます。インスタンスストアのルートデバイスを使用して、インスタンスを停止および起動することはできません。

警告

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

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

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

Console
Amazon EBS-Backed インスタンスを停止および起動するには
  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

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

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

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

  5. 停止されているインスタンスを開始するにはインスタンスを選択後、[インスタンスの状態][インスタンスの開始] の順に選択してください。

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

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

AWS CLI
インスタンスを停止するには

stop-instances コマンドを使用します。

aws ec2 stop-instances --instance-ids i-1234567890abcdef0
インスタンスを起動するには

start-instances コマンドを使用します。

aws ec2 start-instances --instance-ids i-1234567890abcdef0
PowerShell
インスタンスを停止するには

Stop-EC2Instance コマンドレットを使用します。

Stop-EC2Instance -InstanceId i-1234567890abcdef0
インスタンスを起動するには

Start-EC2Instance コマンドレットを使用します。

Start-EC2Instance -InstanceId i-1234567890abcdef0

インスタンスを自動的に停止して起動する

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

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

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

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

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

Amazon EC2 Auto Scaling

アプリケーションの負荷を処理できる Amazon EC2 インスタンスの数が適切であることを確認するにはAuto Scaling グループを作成します。 Amazon EC2 Auto Scalingアプリケーションが常にトラフィック需要を処理する適切な容量を確保し、必要な場合にのみインスタンスを起動することでコストを節約できます。不要なインスタンスを停止するのではなく、Amazon EC2 Auto Scaling終了させることに注意してください。自動スケーリンググループを設定するには「Amazon EC2 Auto Scalingをはじめる」を参照してください。

実行中および停止中のインスタンスをすべて検索

Amazon EC2 グローバルビューではすべてにわたって、実行中と停止中のすべての AWS リージョン のインスタンスを 1 つのページで確認できます。これはインベントリを取得し、忘れられたインスタンスを見つけるのに特に有用です。グローバルビューを使用する方法については「Amazon EC2 Global View を使用して、リージョン間のリソースを表示する」を参照してください。

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

AWS CLI
リージョンにある EC2 インスタンスの数を入手するには

次の describe-instances コマンドを使用して、現在のリージョンにあるインスタンスの数を数えます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

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

以下は出力例です。

27
リージョン内の EC2 インスタンスに関する概要情報を取得するには

次の describe-instances コマンドを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

>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 コマンドレットを使用します。

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

以下は出力例です。

27
リージョン内の EC2 インスタンスに関する概要情報を取得するには

Get-EC2Instance コマンドレットを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。

(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

初期と最新の起動時間を確認

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

Console
直近の起動時間を見つけるには

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

最初の起動時刻を見つけるには

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

AWS CLI
最初の起動時間と直近の起動時間を見つけるには

次の describe-instances コマンドを使用して、指定したインスタンスの最初の起動時間と直近の起動時間の両方を表示します。

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 コマンドレットを使用します。

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

以下は出力例です。

Monday, May 27, 2024 6:24:06 AM
最初の起動時刻を見つけるには

Get-EC2Instance コマンドレットを使用します。

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

以下は出力例です。

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