

# 启动和停止 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)而异。

**在操作系统级别注册的更改**
+ API 请求会向访客发送按钮按下事件。
+ 该按钮按下事件致使各种系统服务停止。来自管理程序的 ACPI 关闭按钮按下事件触发操作系统正常关闭。
+ 启动 ACPI 关闭。
+ 当操作系统正常关闭进程退出时，实例即会关闭。没有可配置的操作系统关闭时间。
+ 如果实例操作系统未在几分钟内完全关闭，则会执行硬关闭。
+ 实例将停止运行。
+ 实例的状态将先更改为 `stopping`，然后更改为 `stopped`。
+ [自动扩缩] 如果您的实例在自动扩缩组中，当实例状态处于除 `running` 以外的其他 Amazon EC2 状态，或者状态检查的状态变为 `impaired`，则 Amazon EC2 Auto Scaling 会认为实例运行不正常并予以替换。有关更多信息，请参阅《Amazon EC2 Auto Scaling 用户指南》**中的[自动扩缩组中实例的运行状况检查](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)。
+ [Windows 实例] 当您停止和启动 Windows 实例时，启动代理将对该实例执行任务，例如更改所有附加的 Amazon EBS 卷的驱动器号。有关这些默认值以及如何更改它们的更多信息，请参阅 [使用 EC2Launch v2 代理在 EC2 Windows 实例启动期间执行任务](ec2launch-v2.md)。

**资源丢失**
+ 存储在 RAM 中的数据。
+ 实例存储卷中存储的数据。
+ Amazon EC2 在启动或开始时自动分配给实例的公有 IPv4 地址。要保留永不更改的公有 IPv4 地址，您可以将[弹性 IP 地址](elastic-ip-addresses-eip.md)与您的实例关联。

**持续存在的资源**
+ 任何挂载的 Amazon EBS 根卷和数据卷。
+ 存储在 Amazon EBS 卷中的数据。
+ 任何挂载的[网络接口](using-eni.md)。

  网络接口包括以下也会持久保留的资源：
  + 私有 IPv4 地址。
  + IPv6 地址。
  + 与实例关联的弹性 IP 地址。请注意，当实例停止时，我们[向您收取相关弹性 IP 地址的费用](elastic-ip-addresses-eip.md#eip-pricing)。

下图说明了在 EC2 实例停止后，哪些资源会持久保留，哪些资源会丢失。该图分为三个部分：第一部分标记为**正在运行的 EC2 实例**，显示处于 `running` 状态的实例及其资源。第二部分标记为**已停止的 EC2 实例**，显示处于 `stopped` 状态且相关资源会持久保留的实例。第三部分标记为**丢失**，显示实例停止后会丢失的资源。

![\[当实例停止时，公有 IPv4 地址、RAM 和实例存储数据会丢失。\]](http://docs.aws.amazon.com/zh_cn/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 地址，除非其具有辅助网络接口或与弹性 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 存储卷会产生费用。

**正在启动**：每次您启动已停止的实例时，我们便会收取最低一分钟的使用费用。一分钟之后，我们仅按您使用实例的秒数收费。例如，如果您运行一个实例 20 秒后停止实例，我们将按一分钟收取费用。如果您运行一个实例 3 分 40 秒，我们将收取 3 分 40 秒的使用费用。

# 停止实例的方法
<a name="instance-stop-methods"></a>

有四种方法可以执行用户启动的停止：默认停止、通过跳过操作系统关闭而停止、强制停止以及通过跳过操作系统关闭强制停止。下表比较了各种停止方法之间的关键差异：


| 停止方法 | 关键用途 | 使用案例 | CLI 命令 | 
| --- | --- | --- | --- | 
| 默认停止 | 正常关闭实例，尝试正常关闭操作系统。 | 典型实例停止。 |  <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0</pre>  | 
| 停止并跳过操作系统关闭 | 在停止实例时，可绕过操作系统正常关闭。 | 需要绕过正常关闭操作系统时。 | <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> | 
| 强制停止并跳过操作系统关闭 | 停止实例时强制停止并绕过操作系统正常关闭。 | 需要强制停止并绕过正常关闭操作系统时。 | <pre>aws ec2 stop-instances \<br />--instance-id i-1234567890abcdef0 \<br />--force \<br />--skip-os-shutdown</pre> | 

有关如何使用每种方法的说明，请参阅以下内容：
+ [通过正常关闭操作系统来停止实例](Stop_Start.md#stop-instance-with-graceful-os-shutdown)
+ [停止实例并绕过操作系统正常关闭](Stop_Start.md#stop-instance-bypass-graceful-os-shutdown)
+ [强制停止实例](TroubleshootingInstancesStopping.md#force-stop-instance)

**Topics**
+ [默认停止](#ec2-instance-default-stop)
+ [停止并跳过操作系统关闭](#ec2-instance-stop-with-skip-os-shutdown)
+ [强制停止](#ec2-instance-force-stop)
+ [强制停止并跳过操作系统关闭](#ec2-instance-force-stop-with-skip-os-shutdown)

以下各节提供了有关四种不同的用户启动的停止方法的更多详细信息。

## 默认停止
<a name="ec2-instance-default-stop"></a>

默认的停止方法是停止实例的标准方法。当您发出 StopInstances 命令时，实例会从`running`状态转换到`stopping`状态，最后转换到`stopped`状态，如下图所示：

![\[默认停止流\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/stop-instance-flow-1.png)


**用途：**正常关闭实例，尝试正常关闭操作系统。

**数据影响：**保留 EBS 根卷和数据卷上的数据。实例存储卷上的数据丢失。

**何时使用：**典型停止的第一次尝试停止。

**注意**  
如果您已经尝试通过跳过操作系统关闭来停止，则在同一状态转换会话期间的后续默认停止尝试将不执行正常关闭操作系统。对于实例的当前会话，绕过操作系统的正常关闭是不可逆的。

## 停止并跳过操作系统关闭
<a name="ec2-instance-stop-with-skip-os-shutdown"></a>

当需要绕过操作系统正常关闭时，可以使用停止并跳过操作系统关闭方法来停止实例并绕过操作系统的正常关闭，如下图所示：

![\[停止并跳过操作系统关闭流\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/stop-instance-flow-3.png)


**警告**  
绕过操作系统正常关闭可能会导致数据丢失或损坏（例如，内存内容未刷新到磁盘或正在运行的 IO 丢失）或跳过关闭脚本。

**用途：**停止实例时绕过操作系统正常关闭。

**数据影响：**可能导致数据丢失或损坏。内存中的内容可能无法刷新到磁盘，正在运行的 IO 可能会丢失。可能会跳过关闭脚本。

**何时使用：**需要绕过操作系统正常关闭时。如果在执行操作系统正常关闭的默认停止时使用，则将绕过操作系统正常关闭。

**注意**  
对于实例的当前状态转换会话，绕过操作系统的正常关闭是不可逆的。在此会话期间的后续默认停止尝试不会尝试正常关闭操作系统。

## 强制停止
<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/zh_cn/AWSEC2/latest/UserGuide/images/stop-instance-flow-2.png)


**用途：**处理在`stopping`状态卡住的实例。先尝试默认停止。如果实例无法停止，则强制关闭该实例。

**数据影响：**先尝试默认停止，但如果继续强制停止，则可能会导致数据丢失或损坏。在极少数情况下，会导致停止后写入 EBS 卷或其他共享资源。

**何时使用：**当实例在默认停止后仍卡住时进行第二次停止尝试。有关更多信息，请参阅 [排查 Amazon EC2 实例的停止问题](TroubleshootingInstancesStopping.md)。

## 强制停止并跳过操作系统关闭
<a name="ec2-instance-force-stop-with-skip-os-shutdown"></a>

当需要强制停止并绕过操作系统正常关闭时，可以使用强制停止并跳过操作系统关闭方法使实例进入`stopped`状态，如下图所示：

![\[强制停止并跳过操作系统关闭流\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/stop-instance-flow-4.png)


**用途：**停止实例时强制停止并绕过操作系统正常关闭。

**数据影响：**跳过操作系统关闭可能导致数据丢失或损坏。内存中的内容可能无法刷新到磁盘，正在运行的 IO 可能会丢失。可能会跳过关闭脚本。如果继续强制停止，则可能会导致更多数据丢失或损坏。在极少数情况下，会导致停止后写入 EBS 卷或其他共享资源。

**何时使用：**当您想确保您的实例将停止并且想要绕过操作系统正常关闭时。如果在执行操作系统正常关闭的默认停止时使用，则将绕过操作系统正常关闭。

## 手动停止和启动实例
<a name="starting-stopping-instances"></a>

您可以停止并启动 Amazon EBS 支持的实例（具有 EBS 根卷的实例）。不能停止并启动具有实例存储根卷的实例。

使用默认方法停止实例时，会尝试正常关闭操作系统 (OS)。您可以绕过操作系统的正常关闭；但是，这可能会危及数据的完整性。

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

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

您可以使用操作系统 **shutdown** 或 **poweroff** 命令启动关机。当您使用操作系统命令时，实例会默认停止。您可以更改此行为。有关更多信息，请参阅 [更改实例启动的关闭行为](Using_ChangingInstanceInitiatedShutdownBehavior.md)。

**注意**  
如果您停止了由 Amazon EBS 支持的实例，而该实例“卡在”了 `stopping` 状态，则可以强制停止它。有关更多信息，请参阅 [排查 Amazon EC2 实例的停止问题](TroubleshootingInstancesStopping.md)。

**Topics**
+ [通过正常关闭操作系统来停止实例](#stop-instance-with-graceful-os-shutdown)
+ [停止实例并绕过操作系统正常关闭](#stop-instance-bypass-graceful-os-shutdown)
+ [启动实例](#start-ec2-instance)

### 通过正常关闭操作系统来停止实例
<a name="stop-instance-with-graceful-os-shutdown"></a>

您可以使用默认的停止方法停止实例，其中包括尝试正常关闭操作系统。有关更多信息，请参阅 [默认停止](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) cmdlet 

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

------

### 停止实例并绕过操作系统正常关闭
<a name="stop-instance-bypass-graceful-os-shutdown"></a>

在停止实例时，您可以绕过操作系统正常关闭。有关更多信息，请参阅 [停止并跳过操作系统关闭](instance-stop-methods.md#ec2-instance-stop-with-skip-os-shutdown)。

**警告**  
绕过操作系统正常关闭可能会导致数据丢失或损坏（例如，内存内容未刷新到磁盘或正在运行的 IO 丢失）或跳过关闭脚本。

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

**停止实例并绕过操作系统正常关闭**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **Instances**，然后选择实例。

1. 依次选择**实例状态**、**停止实例**。

1. 在**跳过操作系统关闭**下，选中**跳过操作系统关闭**复选框。如果您在控制台中看不到此选项，则当前区域的控制台尚未提供此选项。但是，您可以使用 AWS CLI 或 SDK 访问此功能，也可以在控制台中尝试其他区域。

1. 选择**停止**。

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

**停止实例并绕过操作系统正常关闭**  
结合使用 [stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) 命令和 `--skip-os-shutdown`。

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

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

**停止实例并绕过操作系统正常关闭**  
结合使用 [Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) cmdlet 和 `-SkipOsShutdown $true`。

```
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. 在左侧导航窗格中，选择 **Instances (实例)**。

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

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

------

## 自动停止和启动您的实例
<a name="stop-start-ec2-instances-on-a-schedule"></a>

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

**AWS 上的实例调度器**  
您可以在 AWS 上使用实例调度器以自动开启和停止 EC2 实例。有关更多信息，请参阅[如何将实例调度器与 CloudFormation 一起使用来制定 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 实例来处理应用程序的负载，请创建自动扩缩组。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 区域 中正在运行和已停止的所有实例。此功能对于清点资源和查找忘记的实例特别有用。有关如何使用全局视图的信息，请参阅 [使用 AWS 全局视图查看跨区域的资源](global-view.md)。

您也可以在您有实例的每个区域中运行命令或 cmdlet。

------
#### [ 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) cmdlet。

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

下面是示例输出。

```
27
```

**获取有关您在某个区域中的 EC2 实例的汇总信息**  
使用 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) 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
```

------

## 查找初始和最近的启动时间
<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) cmdlet。

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

```
(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 在实例运行状况不佳或在横向缩减事件期间终止实例。您可以通过使用[实例横向缩减保护](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 开发人员指南》**中的[最终一致性](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. 在控制面板上，选择**启动实例**。

1. 在[新启动实例向导](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) cmdlet 启动实例。添加以下参数。

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

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

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

------