停止和启动您的实例 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

停止和启动您的实例

您可以停止和启动将 Amazon EBS 卷作为其根设备的实例。该实例将保留其实例 ID,但是可以按照概览部分中所述进行更改。

当您终止一个实例时,我们会将其关闭。我们不会对已停止的实例收费,也不会收取数据传输费,但我们会对所有 Amazon EBS 卷的存储收费。每次您启动已停用的实例时,我们便会收取最低一分钟的使用费用。一分钟之后,我们仅按您使用实例的秒数收费。例如,如果您运行一个实例 20 秒后停止实例,我们将按一整分钟收取费用。如果您运行一个实例 3 分 40 秒,我们将收取 3 分 40 秒的使用费用。

当实例停止时,您可以像对待所有其他卷一样修改根卷 (例如,修复文件系统问题或更新软件)。您只需从停止的实例分离卷,将其附加到运行中的实例并进行修改,然后将其分离,再次附加到该已停止实例即可。请确保您已使用设备名称被指定为实例块储存设备映射中的根设备对其进行了重新附加。

当您决定不再需要实例时,可以终止该实例。实例的状态一旦变为 shutting-downterminated,我们就会停止收取与该实例相关的费用。有关更多信息,请参阅终止实例。如果您愿意休眠实例,请参阅休眠 Linux 按需型实例。有关更多信息,请参阅重启、停止、休眠和终止之间的区别

概览

您只能停止由 Amazon EBS 支持的实例。要验证您的实例的根设备类型,请描述实例并检查其根卷的设备类型是 ebs(由 Amazon EBS 支持的实例)还是 instance store(由实例存储支持的实例)。有关更多信息,请参阅确定 AMI 的根设备类型

只有在实例停止时,您才能修改以下实例属性:

  • 实例类型

  • 用户数据

  • 内核

  • RAM 磁盘

如果您在实例运行时尝试修改这些属性,Amazon EC2 会返回 IncorrectInstanceState 错误。

当您停止和启动实例时,将发生以下情况。

当您停止实例时

  • 实例将正常关闭并停止运行。

  • 实例的状态将先更改为 stopping,然后更改为 stopped

  • (Auto Scaling 组)如果您的实例处于 Auto Scaling 组中,则 Amazon EC2 Auto Scaling 服务会将已停止的实例标记为运行状况不佳,可能会终止它并启动替换实例。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 Auto Scaling 实例的运行状况检查

  • (Windows)当您停止和启动 Windows 实例时,EC2Config 服务将对该实例执行任务,例如更改所有附加的 Amazon EBS 卷的驱动器号。有关这些默认值以及如何更改它们的更多信息,请参阅 Amazon EC2 用户指南(适用于 Windows 实例)中的使用 EC2Config 服务配置 Windows 实例

  • (ClassicLink)当您停止 ClassicLink 实例时,它会从链接的 VPC 取消链接。您必须在开启之后将实例再次链接到 VPC。有关 ClassicLink 的更多信息,请参阅 ClassicLink

当您停止实例时,以下内容丢失

  • 存储在 RAM 中的数据。

  • 实例存储卷中存储的数据。

  • Amazon EC2 在启动或开始时自动分配给实例的公有 IPv4 地址。(要保留永不更改的公有 IPv4 地址,您可以将弹性 IP 地址与您的实例关联。)

  • (EC2-Classic)使用 EC2-Classic 时,弹性 IP 地址会与实例分离。有关更多信息,请参阅EC2-Classic

当您停止实例时,以下内容持续存在

在启动实例时

  • 大多数情况下,实例会迁移到新的底层主机(尽管在某些情况下,它仍会保留在当前主机上)。

  • 如果将实例配置为接收公有 IPv4 地址,Amazon EC2 会为实例分配一个新的公有 IPv4 地址。(要保留永不更改的公有 IPv4 地址,您可以将弹性 IP 地址与您的实例关联。)

有关更多信息,请参阅重启、停止、休眠和终止之间的区别

在停止实例时发生的情况

当您使用 StopInstances API 停止 EC2 实例时(例如,通过选择 Amazon EC2 控制台中的 Instance state(实例状态)、Stop instance(停止实例),或使用 stop-instances Amazon CLI 命令),则在操作系统级别注册以下内容:

  • API 请求会向访客发送按钮按下事件。

  • 该按钮按下事件致使各种系统服务停止。来自管理程序的 ACPI 关闭按钮按下事件触发正常关闭。

  • 启动 ACPI 关闭。

  • 当正常关闭进程退出时,实例即会关闭。没有可配置的操作系统关闭时间。

  • 如果实例操作系统未在几分钟内完全关闭,则会执行硬关闭。

默认情况下,当您从 Amazon EBS 支持的实例启动关闭(例如,使用 shutdownpoweroff 命令)时,该实例会停止。您可以更改此行为,以便使其终止。有关更多信息,请参阅更改实例启动的关闭操作

从实例中使用 halt 命令不会启动关闭。如果使用,实例并不会终止,而是将 CPU 置于 HLT 状态,实例将保持运行。

停止和启动您的实例

您可以使用控制台或命令行停止和启动由 Amazon EBS 支持的实例。

New console

使用控制台停止和启动由 Amazon EBS 支持的实例

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

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

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

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

  5. (可选)当实例已停止时,您可以修改特定的实例属性。有关更多信息,请参阅 modify-stopped-instance

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

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

Old console

使用控制台停止和启动由 Amazon EBS 支持的实例

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

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

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

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

  5. (可选)当实例已停止时,您可以修改特定的实例属性。有关更多信息,请参阅 modify-stopped-instance

  6. 要启动已停止的实例,请选择该实例,然后依次选择 Actions (操作)Instance State (实例状态)Start (启动)

  7. 在确认对话框中,选择 Yes, Start(是的,开启)。实例进入 running 状态可能需要几分钟时间。

使用命令行停止和启动由 Amazon EBS 支持的实例

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

运行受控的故障注入实验

您可以使用 Amazon Fault Injection Simulator 用户指南测试您的实例停止和启动时您的应用程序是如何响应的。有关更多信息,请参阅 Amazon Fault Injection Simulator 用户指南

按计划停止和开启您的实例

您可以制定停止和开启 EC2 实例的计划。以下是配置此过程的两个选项。

在 Amazon 上使用实例调度器

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

使用 Amazon Lambda 和 Amazon EventBridge 规则

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

启用停止保护

默认情况下,您可以使用 Amazon EC2 控制台、命令行界面或 API 停止您的实例。要防止实例意外停止,可以为实例启用停止保护。停止保护还可以保护您的实例免遭意外终止。

DisableApiStop 属性可控制是否可以使用 Amazon EC2 控制台、Amazon CLI 或 API 停止实例。您可以在实例启动、运行或已停止时设置该属性值。

DisableApiStop 属性不会阻止您通过从实例启动关闭来停止实例(使用操作系统的系统关闭命令)。

注意事项

  • 启用停止保护不会阻止 Amazon 在实例具有停止实例的计划事件时停止实例。

  • 停止保护不仅可防止实例意外停止,还可以防止使用控制台、Amazon CLI 或 API 时意外终止实例。但是,它不会自动更改 DisableApiTermination 属性。请注意,当 DisableApiStop 属性设置为 False,DisableApiTermination 属性用于确定是否可以使用控制台、Amazon CLI 或 API 终止实例。

  • 启用停止保护不会阻止 Amazon EC2 Auto Scaling 在实例运行状况不佳或在横向缩减事件期间终止实例。

  • 无法针对由实例存储提供支持的实例启用停止保护。

  • 无法针对竞价型实例启用停止保护。

  • 启用或禁用停止保护时,Amazon EC2 API 遵循最终一致性模型。有关更多信息,请参阅《Amazon EC2 API 参考》中的最终一致性

在实例启动时启用停止保护

您可以使用以下方法之一在启动实例时为实例启用停止保护。

New console

在实例启动时为实例启用停止保护

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在控制面板上,选择启动实例

  3. 新启动实例向导中配置您的实例。

    要启用停止保护,在 Advanced details(高级详细信息)下,针对 Stop protection(停止保护),选择 Enable(启用)

Old console

在实例启动时启用停止保护

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在控制面板上,选择启动实例

  3. 旧启动实例向导中配置您的实例。

    要禁用停止保护,在 Configure Instance Details(配置实例详细信息)页面上,针对 Enable stop protection(启用停止保护),选择 Protect against accidental stoppage(防止意外停机)复选框。

Amazon CLI

在实例启动时启用停止保护

使用 run-instances Amazon CLI 命令启动实例,并指定 disable-api-stop 参数。

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

为正在运行或已停止的实例启用停止保护

您可以使用以下方法之一在实例正在运行或已停止时启用停止保护。请注意,实例控制台不支持对正在运行或已停止的实例启用停止保护。

New console

为正在运行或已停止的实例启用停止保护

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择 Instances(实例)。

  3. 选择实例,然后依次选择 Actions(操作)、Instance Settings(实例设置)、Change Stop Protection(更改停止保护)

  4. 选择 Enable(启用)复选框,然后选择 Save(保存)。

Amazon CLI

为正在运行或已停止的实例启用停止保护

使用 modify-instance-attribute Amazon CLI 命令并指定 disable-api-stop 参数。

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

为正在运行或已停止的实例禁用停止保护

您可以使用以下方法之一为正在运行或已停止的实例禁用停止保护。请注意,实例控制台不支持对正在运行或已停止的实例禁用停止保护。

New console

为正在运行或已停止的实例禁用停止保护

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择 Instances(实例)。

  3. 选择实例,然后依次选择 Actions(操作)、Instance Settings(实例设置)、Change Stop Protection(更改停止保护)

  4. 取消选中 Enable(启用)复选框,然后选择 Save(保存)。

Amazon CLI

为正在运行或已停止的实例禁用停止保护

使用 modify-instance-attribute Amazon CLI 命令并指定 no-disable-api-stop 参数。

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

修改已停止的实例

您可以使用 Amazon Web Services Management Console或命令行界面来更改已停止实例的实例类型、用户数据或 EBS 优化属性。您无法使用 Amazon Web Services Management Console修改 DeleteOnTermination、内核或 RAM 磁盘属性。

修改实例属性

使用命令行修改实例属性

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

排查实例的停止问题

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