停止和啟動 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 支援的執行個體 (使用 EBS 根磁碟區的執行個體)。您無法使用執行個體儲存體根磁碟區停止和啟動執行個體。

使用預設方法停止執行個體時,會嘗試執行作業系統 (OS) 正常關機。您可以繞過作業系統正常關機;但這可能會危及資料完整性。

警告

停止執行個體時,在任何執行個體儲存體磁碟區的資料都會清除。停止執行個體之前,請確認您已將所需的任何資料從執行個體儲存體磁碟區複製到永久性儲存,例如 Amazon EBS 或 Amazon S3。

[Linux 執行個體] 從執行個體使用 halt 命令不會啟動關機作業。如果您使用 halt 命令,執行個體不會終止,而是會將 CPU 放入 HLT,從而暫停 CPU 作業。執行個體會維持執行中狀態。

您可以使用作業系統 shutdownpoweroff 命令啟動關機作業。使用 OS 命令時,執行個體預設會停止。您可變更此行為。如需詳細資訊,請參閱變更執行個體啟動的關機行為

注意

如果停止了 Amazon EBS 支援的執行個體,而該執行個體似乎「凍結」於 stopping 狀態,則您可以強制將其停止。如需詳細資訊,請參閱對 Amazon EC2 執行個體停止問題進行疑難排解

在作業系統正常關機的情況下停止執行個體

您可以使用預設停止方法停止執行個體,其中包括嘗試作業系統正常關機。如需詳細資訊,請參閱預設停止

Console
使用預設停止方法來停止執行個體
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽窗格中,選取執行個體,然後選取一個執行個體。

  3. 選擇 Instance state (執行個體狀態)Stop instance (停止執行個體)。如果此選項已停用,則執行個體已停止或其根磁碟區是執行個體儲存體磁碟區。

  4. 出現確認提示時,請選擇 Stop (停止)。停止執行個體可能需要幾分鐘。

AWS CLI
使用預設停止方法來停止執行個體

使用 stop-instances 命令。

aws ec2 stop-instances --instance-ids i-1234567890abcdef0
PowerShell
使用預設停止方法來停止執行個體

使用 Stop-EC2Instance cmdlet。

Stop-EC2Instance -InstanceId i-1234567890abcdef0

停止執行個體並繞過作業系統正常關機

您可以在停止執行個體時繞過作業系統正常關機。如需詳細資訊,請參閱跳過作業系統關機的停止

警告

繞過作業系統正常關機可能導致資料遺失或損毀 (例如,記憶體內容未寫入磁碟、正在處理的 IO 遺失) 或跳過關機指令碼。

Console
停止執行個體並繞過作業系統正常關機
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選取 Instances (執行個體),然後選取該執行個體。

  3. 選擇 Instance state (執行個體狀態)Stop instance (停止執行個體)

  4. 跳過作業系統關機下,選取跳過作業系統關機核取方塊。若您在主控台中未看見此選項,表示目前區域的主控台尚未提供此功能。不過,您可以透過 AWS CLI 或 SDK 存取此功能,或在主控台中嘗試其他區域。

  5. 選擇停止

AWS CLI
停止執行個體並繞過作業系統正常關機

搭配使用 stop-instances 命令與 --skip-os-shutdown

aws ec2 stop-instances \ --instance-ids i-1234567890abcdef0 \ --skip-os-shutdown
PowerShell
停止執行個體並繞過作業系統正常關機

搭配使用 Stop-EC2Instance cmdlet 與 -SkipOsShutdown $true

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

啟動執行個體

您可啟動已停止的執行個體。

Console
啟動執行個體
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽窗格中選擇 (執行個體)

  3. 選取執行個體,並選取執行個體狀態啟動執行個體

    執行個體進入 running 狀態可能需要數分鐘。

AWS CLI
啟動執行個體

使用 start-instances 命令。

aws ec2 start-instances --instance-ids i-1234567890abcdef0
PowerShell
啟動執行個體

使用 Start-EC2Instance cmdlet。

Start-EC2Instance -InstanceId i-1234567890abcdef0

自動停止及啟動執行個體

您可以使用下列服務自動停止及啟動執行個體:

上的執行個體排程器 AWS

您可以在 上使用執行個體排程器 AWS 來自動啟動和停止 EC2 執行個體。如需詳細資訊,請參閱 How do I use Instance Scheduler with CloudFormation to schedule EC2 instances? (如何將執行個體排程器與 CloudFormation 結合使用來設定 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  會終止不需要的執行個體,而不是停止。若要設定 Auto Scaling 群組,請參閱開始使用 Amazon EC2 Auto Scaling

尋找所有執行中和停止的執行個體

您可以使用 Amazon EC2 Global View 在單一頁面上找到所有執行 AWS 區域 中和已停止的執行個體。此功能對清查和查找遺忘的執行個體尤其有用。如需有關如何建立全域檢視的資訊,請參閱 使用 AWS 全域檢視跨區域檢視資源

或者,您可在擁有執行個體的每個區域中執行命令或 cmdlet。

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 cmdlet。

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

以下為範例輸出。

27
取得區域中 EC2 執行個體的摘要資訊

使用 Get-EC2Instance cmdlet。您必須在擁有執行個體的每個區域中執行此命令。

(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 cmdlet。

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

以下為範例輸出。

Monday, May 27, 2024 6:24:06 AM
尋找初始啟動時間

使用 Get-EC2Instance cmdlet。

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

以下為範例輸出。

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