启动和停止 Amazon EC2 实例 - Amazon Elastic Compute Cloud

启动和停止 Amazon EC2 实例

您可以停止和启动将 Amazon EBS 卷作为其根设备的实例。当您停止一个实例时,其会关闭。启动实例时,其通常会迁移到新的底层主机,并分配新的公有 IPv4 地址。

当您停止某个实例时,它不会被删除。当您决定不再需要实例时,可以终止该实例。有关更多信息,请参阅 终止 Amazon EC2 实例。如果您想休眠某个实例以保存实例内存(RAM)中的内容,请参阅 将您的 Amazon EC2 实例休眠。有关实例生命周期操作之间的区别,请参阅 实例状态之间的区别

手动停止和启动实例

您可以停止和启动 Amazon EBS 支持的实例(具有 EBS 根设备的实例)。您无法使用实例存储根设备停止和启动实例。

警告

当您停止某个实例时,任何实例存储卷上的数据都将被擦除。在停止实例之前,请确认您是否已将所需数据从实例存储卷复制到持久性存储,例如 Amazon EBS 或 Amazon S3。

Console
停止和启动由 Amazon EBS 支持的实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择实例,然后选择实例。

  3. 存储选项卡上,确认根设备类型EBS。否则,您将无法停止该实例。

  4. 依次选择实例状态停止实例。如果此选项处于禁用状态,则表示实例已停止,或者其根设备是实例存储卷。

  5. 当系统提示您确认时,选择 Stop。停止实例可能需要几分钟时间。

  6. 要启动已停止的实例,请选择该实例,然后依次选择实例状态启动实例

  7. 实例进入 running 状态可能需要几分钟时间。

  8. 如果您停止了由 Amazon EBS 支持的实例,而该实例“卡在”了 stopping 状态,则可以强制停止它。有关更多信息,请参阅 排查 Amazon EC2 实例的停止问题

Command line
先决条件

确认实例的根设备为 EBS 卷。例如,运行 describe-instances AWS CLI 命令并确认 RootDeviceTypeebs 而不是 instance-store

停止和启动由 Amazon EBS 支持的实例

使用以下命令之一:

[Linux 实例] 从实例中使用操作系统 halt 命令不会启动关闭。如果您使用 halt 命令,则实例不会终止;相反,它会将 CPU 放入 HLT,从而暂停 CPU 操作。实例仍在运行中。

自动停止和启动您的实例

您可以使用以下服务自动停止和启动实例:

AWS 上的实例调度器

您可以在 AWS 上使用实例调度器以自动开启和停止 EC2 实例。有关更多信息,请参阅如何将实例调度器与 CloudFormation 一起使用来制定 EC2 实例的计划? 请注意,需要支付额外费用

AWS Lambda 和 Amazon EventBridge 规则

您可以使用 Lambda 和 EventBridge 规则按计划停止和开启您的实例。有关更多信息,请参阅如何使用 Lambda,按固定间隔停止和启动 Amazon EC2 实例?

Amazon EC2 Auto Scaling

为确保您有正确数量的 Amazon EC2 实例来处理应用程序的负载,请创建自动扩缩组。Amazon EC2 Auto Scaling 确保您的应用程序始终具有处理流量需求的适当容量,并通过仅在需要时启动实例来节省成本。请注意,Amazon EC2 Auto Scaling 会终止而不是停止不需要的实例。要设置自动扩缩组,请参阅 Amazon EC2 Auto Scaling 入门

查找所有正在运行和已停止的实例

您可以在 Amazon EC2 全局视图中的单个页面上找到所有 AWS 区域 中正在运行和已停止的所有实例。此功能对于清点资源和查找忘记的实例特别有用。有关如何使用全局视图的信息,请参阅 使用 Amazon EC2 全局视图查看跨区域的资源

查找初始和最近的启动时间

当您描述一个实例时,该实例的启动时间是其最近的启动时间。在您停止并启动一个实例后,启动时间将反映新实例的启动时间。要查找一个实例的初始启动时间(即使在停止和启动该实例之后),请查看主网络接口连接到该实例的时间。

要使用控制台查找最近的启动时间,请选择该实例,然后在详细信息选项卡上的实例详细信息下查看。要查找主网络接口的连接时间,请在联网选项卡上的网络接口下查看。

使用 AWS CLI,运行以下 describe-instances 命令以显示指定实例的初始启动时间和最近的启动时间。

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

下面是示例输出。

{ "InstanceID": "i-09453945dcf1529e9", "InitialLaunch": "2024-03-31T00:47:08+00:00", "LastLaunch": "2024-06-30T00:24:06+00:00" }