

# 监控 Amazon EC2 资源
监控 资源

监控是保持 Amazon EC2 实例和 AWS 解决方案的可靠性、可用性以及性能的重要方面。您的 AWS 解决方案的所有组成部分都应收集监控数据，以便更轻松地调试出现的多点故障。

AWS提供各种可以用来监控 Amazon EC2 的工具。Amazon EC2 和 CloudWatch 控制台控制面板提供您的 Amazon EC2 环境状态的概览视图。此外，我们提供以下各项：
+ **系统状态检查** – 监控使用您的实例所需的 AWS 系统，以确保这些系统正常工作。这些检查会检测出需要 AWS 参与修复的实例问题。当一个系统状态检查故障时，您可以等待 AWS 修复故障，或者您也可以亲自解决该故障（例如，通过停止和重启或终止和替换实例）。导致系统状态检查出现故障的问题示例包括：
  + 网络连接丢失
  + 系统电源损耗
  + 物理主机上的软件问题
  + 物理主机上影响到网络连接状态的硬件问题

  有关更多信息，请参阅[Amazon EC2 实例的状态检查](monitoring-system-instance-status-check.md)。
+ **实例状态检查** – 监控单个实例的软件和网络配置。这些检查检测需要您参与修复的问题。一旦发生实例状态检查故障，一般需要都您亲自解决这些问题（例如，通过重启实例或者在您的操作系统中进行修改）。可能导致实例状态检查出现故障的问题示例包括：
  + 系统状态检查故障
  + 网络或启动配置错误
  + 内存耗尽
  + 文件系统损坏
  + 内核不兼容

  有关更多信息，请参阅[Amazon EC2 实例的状态检查](monitoring-system-instance-status-check.md)。
+ **Amazon CloudWatch 警报** – 在您指定的时间段内监控单个指标，并根据指标值在一些时间段内与给定阈值的对比情况执行一个或多个操作。操作是一个发送到 Amazon Simple Notification Service (Amazon SNS) 主题或 Amazon EC2 Auto Scaling 策略的通知。警报只会调用操作进行持续的状态变更。CloudWatch 警报将不会调用操作，因为这些操作处于特定状态，该状态必须改变并在指定数量的时间段内一直保持。有关更多信息，请参阅 [使用 CloudWatch 监控您的实例](using-cloudwatch.md)。
+ **Amazon EventBridge 事件** – 自动执行 AWS 服务并自动响应系统事件。AWS服务中的事件将近实时传输到 EventBridge，并且您可以指定要在事件匹配您编写的规则时执行的自动操作。有关更多信息，请参阅 [使用 EventBridge 自动执行 Amazon EC2](automating_with_eventbridge.md)。
+ **AWS CloudTrail 日志** – 捕获有关向 Amazon EC2 API 发出的调用的详细信息，并将其以日志文件的形式存储在 Amazon S3 中。您可以使用 CloudTrail 日志确定已发出的调用、调用的源 IP 地址、调用的发出方、调用的发出时间。有关更多信息，请参阅 [使用 AWS CloudTrail 记录 Amazon EC2 API 调用](monitor-with-cloudtrail.md)。
+ **CloudWatch 代理** – 从 EC2 实例和本地服务器上的主机及访客中收集日志和系统级指标。有关更多信息，请参阅 *Amazon CloudWatch 用户指南* 中的[使用 CloudWatch 代理从 Amazon EC2 实例和本地服务器中收集指标和日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)。

# 监控 Amazon EC2 实例的状态
监控实例状态

您可以通过查看实例的状态检查和计划事件来监控您的实例状态。

状态检查反映 Amazon EC2 自动检查的结果信息。这些自动检查会检测出指定的问题是否影响您的实例。该状态检查信息与 Amazon CloudWatch 提供的数据一起为您的每一个实例提供详细的操作可视性。

您还可以查看为实例计划的特定事件的状态。事件状态提供了有关为实例计划的未来各项活动的信息，例如重启或停用。它们还提供了各个事件的计划开始时间和结束时间。

**Topics**
+ [

# Amazon EC2 实例的状态检查
](monitoring-system-instance-status-check.md)
+ [

# Amazon EC2 实例的状态更改事件
](monitoring-instance-state-changes.md)
+ [

# Amazon EC2 实例的计划事件
](monitoring-instances-status-check_sched.md)

# Amazon EC2 实例的状态检查
状态检查

使用实例状态监控，您可以快速确定 Amazon EC2 是否已经检测到可能阻止您的实例运行应用程序的任何问题。Amazon EC2 会对每个运行的 EC2 实例执行自动检查以识别硬件和软件问题。您可以通过查看这些状态检查的结果来识别特定的和可检测的问题。事件状态数据扩充了 Amazon EC2 已提供的有关每个实例状态（如 `pending`、`running`、`stopping`）的信息以及 Amazon CloudWatch 监控的利用率指标（CPU 利用率、网络流量和磁盘活动）。

状态检查每分钟进行一次，会返回一个通过或失败状态。如果所有的检查都通过，则实例的整体状态是**OK**。如果有一个或多个检查故障，则整体状态为**受损**。状态检查是内置到 Amazon EC2 中的，所以不能禁用或删除。

当状态检查失败时，状态检查的相应 CloudWatch 指标将增加。有关更多信息，请参阅[状态检查指标](viewing_metrics_with_cloudwatch.md#status-check-metrics)。您可以使用这些指标创建基于状态检查结果触发的 CloudWatch 警报。例如，您可以创建一个警报来提醒您在一个指定实例上的状态检查中返回了故障状态。有关更多信息，请参阅[为未能通过状态检查的 Amazon EC2 实例创建 CloudWatch 警报](creating_status_check_alarms.md)。

您也可以创建 Amazon CloudWatch 警报，用于监控 Amazon EC2 实例并在实例由于潜在问题而受损时自动恢复实例。有关更多信息，请参阅[实例自动恢复](ec2-instance-recover.md)。

**Topics**
+ [

## 状态检查类型
](#types-of-instance-status-checks)
+ [

# 查看 Amazon EC2 实例的状态检查
](viewing_status.md)
+ [

# 为未能通过状态检查的 Amazon EC2 实例创建 CloudWatch 警报
](creating_status_check_alarms.md)

## 状态检查类型


状态检查有三种类型。
+ [系统状态检查](#system-status-checks)
+ [实例状态检查](#instance-status-checks)
+ [附加的 EBS 状态检查](#attached-ebs-status-checks)

### 系统状态检查


系统状态检查监控您的实例在其上运行的 AWS 系统。这些检查会检测出需要 AWS 参与修复的深层实例问题。如果系统状态检查失败，您可以选择等待 AWS 修复问题，也可以自行解决问题。对于由 Amazon EBS 支持的实例，您也可自行停止和启动实例，在大多数情况下，这会导致实例被迁移至新的主机。对于由实例存储支持的实例（仅 Linux 实例支持），您可以终止并替换实例。请注意，实例存储卷是临时的，实例停止后所有数据都会丢失。

以下是可能导致系统状态检查失败的问题的示例：
+ 网络连接丢失
+ 系统电源损耗
+ 物理主机上的软件问题
+ 物理主机上影响到网络连接状态的硬件问题

如果未通过系统状态检查，我们会微增 [StatusCheckFailed\$1System](viewing_metrics_with_cloudwatch.md#status-check-metrics) 指标。

**裸机实例**  
如果在裸机实例上从操作系统重新启动，系统状态检查可能会暂时返回失败状态。当实例变为可用时，系统状态检查应返回通过状态。

### 实例状态检查


实例状态检查会监控各个实例的软件和网络连接情况。Amazon EC2 通过向网络接口 (NIC) 发送地址解析协议 (ARP) 请求，检查实例的运行状况。这些检查检测需要您参与修复的问题。如果实例状态检查失败，通常必须由您自行解决问题（例如，重启实例或更改实例配置）。

**注意**  
使用 `systemd-networkd` 进行网络配置的最新 Linux 发行版在报告运行状况检查时可能与早期发行版不同。在启动过程中，这种类型的网络可以更早地启动，并可能在其他启动任务之前完成，这些任务也可能会影响实例运行状况。依赖于网络可用性的状态检查可以在其他任务完成之前报告运行状况。

以下是可能导致实例状态检查失败的问题的示例：
+ 系统状态检查故障
+ 网络或启动配置不正确
+ 内存耗尽
+ 文件系统损坏
+ 内核不兼容
+ 在重启期间，在实例变得再次可用之前，实例状态检查都会报告失败。

如果未通过实例状态检查，我们会微增 [StatusCheckFailed\$1Instance](viewing_metrics_with_cloudwatch.md#status-check-metrics) 指标。

**裸机实例**  
如果在裸机实例上从操作系统重新启动，实例状态检查可能会暂时返回失败状态。当实例变为可用时，实例状态检查应返回通过状态。

### 附加的 EBS 状态检查


附加的 EBS 状态检查可监控附加到实例的 Amazon EBS 卷是否可以访问并能够完成 I/O 操作。如果附加到实例的一个或多个 EBS 卷无法完成 I/O 操作，`StatusCheckFailed_AttachedEBS` 指标是表示受损的二进制值。这些状态检查可检测计算或 Amazon EBS 基础设施的底层问题。当附加的 EBS 状态检查指标失败时，您可以等待 AWS 解决问题，也可以自行采取措施，例如更换受影响的卷或停止并重启实例。

以下是可能导致附加的 EBS 状态检查失败的问题的示例：
+ EBS 卷底层的存储子系统的硬件或软件问题
+ 物理主机上影响到 EBS 卷的可访问性的硬件问题
+ 实例和 EBS 卷之间的连接问题

您可以使用 `StatusCheckFailed_AttachedEBS` 指标来帮助提高工作负载的弹性。您可以使用此指标创建基于状态检查结果触发的 Amazon CloudWatch 告警。例如，当您检测到长时间影响时，可以故障转移到辅助实例或可用区。或者，您可以使用 EBS CloudWatch 指标监控每个附加的卷的 I/O 性能，以检测和替换受损的卷。如果工作负载不会驱动挂载到实例的任何 EBS 卷的 I/O，并且 EBS 状态检查表明存在受损，则可以停止并启动该实例，以将工作负载转移到新的主机。这可以解决影响 EBS 卷可访问性的底层主机问题。有关更多信息，请参阅 [Amazon EBS 的 Amazon CloudWatch 指标](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)。

您还可以配置 Amazon EC2 Auto Scaling 组来检测附加 EBS 状态检查失败情况，然后用新的实例替换受影响的实例。有关更多信息，请参阅《Amazon EC2 Auto Scaling User Guide》**中的 [Monitor and replace Auto Scaling instances with impaired Amazon EBS volumes](https://docs.aws.amazon.com/autoscaling/ec2/userguide/monitor-and-replace-instances-with-impaired-ebs-volumes.html)。

**注意**  
附加的 EBS 状态检查指标仅适用于 Nitro 实例。

# 查看 Amazon EC2 实例的状态检查
查看状态检查

如果实例状态检查失败，通常必须由您自行解决问题（例如，通过重启实例或更改实例配置）。要自行解决系统或实例状态检查失败问题，请参阅 [通过失败状态检查来排查 Amazon EC2 Linux 实例问题](TroubleshootingInstances.md)。

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

**查看状态检查，需要进行以下操作**

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

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

1. **实例**页面上的**状态检查**列中会列出每个实例的运行状态。

1. 要查看特定实例的状态，请选择该实例，然后选择**状态和警报**选项卡。

1. 要查看 CloudWatch 指标以进行状态检查，请在**状态和警报**选项卡上，展开**指标**以查看以下指标的图表：
   + **系统状态检查失败**
   + **实例状态检查失败**
   + **附加 EBS 状态检查失败**

   有关更多信息，请参阅 [状态检查指标](viewing_metrics_with_cloudwatch.md#status-check-metrics)。

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

**查看状态检查，需要进行以下操作**  
使用 [describe-instance-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html) 命令。

**示例**：获取所有正在运行的实例的状态

```
aws ec2 describe-instance-status
```

**示例**：获取所有实例的状态

```
aws ec2 describe-instance-status --include-all-instances
```

**示例**：获取单个正在运行的实例的状态

```
aws ec2 describe-instance-status --instance-ids i-1234567890abcdef0
```

**示例：**获取所有状态为 `impaired` 的实例

```
aws ec2 describe-instance-status \
--filters Name=instance-status.status,Values=impaired
```

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

**查看状态检查，需要进行以下操作**  
使用 [Get-EC2InstanceStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceStatus.html) 命令。

**示例**：获取所有正在运行的实例的状态

```
Get-EC2InstanceStatus
```

**示例**：获取所有实例的状态

```
Get-EC2InstanceStatus -IncludeAllInstance $true
```

**示例**：获取单个正在运行的实例的状态

```
Get-EC2InstanceStatus -InstanceId i-1234567890abcdef0
```

**示例：**获取所有状态为 `impaired` 的实例

```
Get-EC2InstanceStatus \
-Filter @{Name="instance-status.status"; Values="impaired"}
```

------

# 为未能通过状态检查的 Amazon EC2 实例创建 CloudWatch 警报
创建状态检查警报

您可以使用[状态检查指标](viewing_metrics_with_cloudwatch.md#status-check-metrics)创建 CloudWatch 警报，以在实例的状态检查失败时向您发送通知。

如果缺少指标数据点，状态检查和状态检查警报可能会暂时进入*数据不足*状态。尽管很少见，但当指标报告系统出现中断时，即使实例运行正常，也会发生这种情况。我们建议将此状态视为数据丢失，而不是状态检查失败或警报违例。为了响应事件而对实例执行停止、终止、重启或恢复操作时，这一点尤其重要。

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

此示例配置了当实例未通过状态检查时发送通知的警报。您可以选择停止、终止或恢复实例。

**创建状态检查警报**

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

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

1. 选择实例，选择**状态检查**选项卡，然后依次选择**操作**、**创建状态检查警报**。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）页面的 **Add or edit alarm**（添加或编辑警报）下，选择 **Create an alarm**（创建警报）。

1. 对于**警报通知**，打开开关以配置 Amazon Simple Notification Service (Amazon SNS) 通知。选择现有 Amazon SNS 主题或输入名称来创建新主题。

   如果您向收件人列表添加了电子邮件地址或创建了新的主题，则 Amazon SNS 会向每个新地址发送一封确认电子邮件。每位收件人都必须在电子邮件中选择确认链接。仅已确认的地址会收到提醒通知。

1. 对于**警报操作**，打开开关以指定触发警报时要执行的操作。选择操作。

1. 对于**警报阈值**，请指定警报的指标和条件。

   您可以保留**样本分组依据**（**平均值**）和**样本数据类型**（**状态检查 failed:either**）的默认设置，也可以根据自己的需求进行更改。

   在 **Consecutive period**（连续周期）中，设置要评估的周期数，然后在 **Period**（时间段）中输入评估时间段的持续时间，此评估时间段结束后才会触发警报并发送电子邮件。

1. （可选）对于**样本指标数据**，选择**添加到控制面板**。

1. 选择**创建**。

如果需要更改实例状态警报，则可以对其进行编辑。

**编辑状态检查警报**

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

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

1. 选择所需实例，然后依次选择**操作**、**监控**、**管理 CloudWatch 警报**。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）页面的 **Add or edit alarm**（添加或编辑警报）下，选择 **Edit an alarm**（编辑警报）。

1. 对于 **Search for alarm**（搜索警报），选择警报。

1. 完成更改后，选择 **Update**（更新）。

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

在以下示例中，当实例的实例检查或系统状态检查在至少两个期间连续失败后，警报将向 SNS 主题发送通知。使用的 CloudWatch 指标为 `StatusCheckFailed`。

**创建状态检查警报**

1. 选择一个现有 SNS 主题或创建一个新的主题。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[在 AWS CLI 中访问 Amazon SNS](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-sns.html)。

1. 使用以下 [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) 命令查看 Amazon EC2 的可用 Amazon CloudWatch 指标。

   ```
   aws cloudwatch list-metrics --namespace AWS/EC2
   ```

1. 使用以下 [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) 命令创建警报。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name StatusCheckFailed-Alarm-for-i-1234567890abcdef0 \
       --metric-name StatusCheckFailed \
       --namespace AWS/EC2 \
       --statistic Maximum \
       --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
       --unit Count \
       --period 300 \
       --evaluation-periods 2 \
       --threshold 1 \
       --comparison-operator GreaterThanOrEqualToThreshold \
       --alarm-actions arn:aws:sns:us-west-2:111122223333:my-sns-topic
   ```

   周期为收集 Amazon CloudWatch 指标所需的时间范围（以秒为单位）。此示例使用 300，这是 60 秒乘以 5 分钟得到的结果。评估期是必须将指标数值与阈值相比较的连续周期数。此示例使用 2。警报操作是要在此警报触发时执行的操作。

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

**创建状态检查警报**  
当实例的状态检查在至少两个期间连续失败后，按如下方式使用 [Write-CWMetricAlarm](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-CWMetricAlarm.html) cmdlet 将通知发送到 SNS 主题。

```
Write-CWMetricAlarm `
    -AlarmName "StatusCheckFailed-Alarm-for-i-1234567890abcdef0" `
    -MetricName "StatusCheckFailed" `
    -Namespace "AWS/EC2" `
    -Statistic "Maximum" `
    -Dimension @{Name="InstanceId"; Values="i-1234567890abcdef0"} `
    -Unit "Count" `
    -Period 300 `
    -EvaluationPeriod 2 `
    -Threshold 1 `
    -ComparisonOperator "GreaterThanOrEqualToThreshold" `
    -AlarmAction "arn:aws:sns:us-west-2:111122223333:my-sns-topic"
```

周期为收集 Amazon CloudWatch 指标所需的时间范围（以秒为单位）。此示例使用 300，这是 60 秒乘以 5 分钟得到的结果。评估期是必须将指标数值与阈值相比较的连续周期数。此示例使用 2。警报操作是要在此警报触发时执行的操作。

------

# Amazon EC2 实例的状态更改事件
状态更改事件

当实例状态发生更改时，Amazon EC2 会向 Amazon EventBridge 发送 `EC2 Instance State-change Notification` 事件。

以下是此事件的示例数据。在此示例中，实例进入了 `pending` 状态。

```
{
   "id":"7bf73129-1428-4cd3-a780-95db273d1602",
   "detail-type":"EC2 Instance State-change Notification",
   "source":"aws.ec2",
   "account":"123456789012",
   "time":"2021-11-11T21:29:54Z",
   "region":"us-east-1",
   "resources":[
      "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
   ],
   "detail":{
      "instance-id":"i-1234567890abcdef0",
      "state":"pending"
   }
}
```

`state` 可使用的值为：
+ `pending`
+ `running`
+ `stopping`
+ `stopped`
+ `shutting-down`
+ `terminated`

当您启用或启动实例时，它会进入 `pending` 状态，然后进入 `running` 状态。当您停止实例时，它会进入 `stopping` 状态，然后进入 `stopped` 状态。当您终止实例时，它会进入 `shutting-down` 状态，然后进入 `terminated` 状态。有关更多信息，请参阅 [Amazon EC2 实例状态更改](ec2-instance-lifecycle.md)。

# 创建会在 Amazon EC2 实例更改状态时发送电子邮件的警报
为实例状态更改创建警报

若要在实例状态更改时接收电子邮件通知，请创建一个 Amazon SNS 主题，然后为 `EC2 Instance State-change Notification` 事件创建一条 EventBridge 规则。

**创建 SNS 主题**

1. 通过 [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) 打开 Amazon SNS 控制台。

1. 在导航窗格中，选择**主题**。

1. 选择**创建主题**。

1. 对于**类型**，选择**标准**。

1. 对于 **Name**（名称），请为主题输入一个名称。

1. 选择**创建主题**。

1. 选择**创建订阅**。

1. 对于**协议**，选择**电子邮件**。

1. 对于 **Endpoint**（端点），请输入接收通知的电子邮件地址。

1. 选择**创建订阅**。

1. 您将收到电子邮件消息，其主题行为：AWS Notification - Subscription Confirmation。请按照说明确认订阅。

**创建 EventBridge 规则**

1. 打开位于 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 的 Amazon EventBridge 控制台。

1. 选择 **Create rule**（创建规则）。

1. 对于 **Name**（名称），请为规则输入一个名称。

1. 对于**规则类型**，选择**具有事件模式的规则**。

1. 选择**下一步**。

1. 对于 **Event pattern**（事件模式），执行以下操作：

   1. 对于**事件源**，选择 **AWS 服务**。

   1. 对于 **AWS 服务**，请选择 **EC2**。

   1. 对于**事件类型**，请选择 **EC2 实例状态更改通知**。

   1. 默认情况下，我们会就任何实例的任何状态更改发送通知。如果愿意，您可以选择特定状态或特定实例。

1. 选择**下一步**。

1. 按以下操作指定目标：

   1. 对于 **Target types**（目标类型），选择 **AWS 服务**。

   1. 对于 **Select a target**（选择一个目标），选择 **SNS topic**（SNS 主题）。

   1. 对于 **Topic**（主题），请选择您在上一步中创建的 SNS 主题。

1. 选择**下一步**。

1. （可选）向规则添加标签。

1. 选择**下一步**。

1. 选择 **Create rule**（创建规则）。

1. 为测试规则，请发起状态更改。例如，开始已停止的实例、停止正在运行的实例或启动实例。您将收到电子邮件消息，其主题行为：AWS Notification Message。电子邮件正文包含事件数据。

# Amazon EC2 实例的计划事件
计划的事件

为确保基础设施的可靠性和性能，AWS 可以计划事件来重启、停止和停用您的实例。这些事件不会频繁发生。

如果您的一个实例将受某计划事件影响，则 AWS 将使用与您的 AWS 账户关联的电子邮件地址提前通知您。该电子邮件将提供有关该事件的详细信息，包括开始和结束日期。根据事件类型的不同，您也许能够执行操作来控制事件的发生时间。AWS 还会发送 AWS Health 事件，您可以使用 Amazon EventBridge 对该事件进行监控和管理。有关更多信息，请参阅 [Monitoring events in AWS Health with Amazon EventBridge](https://docs.aws.amazon.com/health/latest/ug/cloudwatch-events-health.html)。

计划的事件由 AWS 管理。您无法为实例计划事件。不过，您可以：
+ 查看实例的计划事件。
+ 您可以自定义计划事件通知，以便在电子邮件通知中包含或删除标签。
+ 重新计划某些已计划的事件。
+ 为计划事件创建自定义事件窗口。
+ 在实例按计划重启、停止或停用时执行操作。

为确保您会收到计划事件的通知，请在[账户](https://console.aws.amazon.com/billing/home?#/account)页面上验证您的联系信息。

**注意**  
当实例受计划事件的影响并且它属于自动扩缩组的一部分时，Amazon EC2 Auto Scaling 最终将其替换为其运行状况检查的一部分，您无需采取进一步措施。有关由 Amazon EC2 Auto Scaling 执行的运行状况检查的更多信息，请参阅《*Amazon EC2 Auto Scaling 用户指南*》中的 [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)。

## 计划的事件类型


Amazon EC2 可以创建以下类型的计划实例事件，这些事件会在计划的时间发生：


| 事件类型 | 事件代码 | 事件操作 | 
| --- | --- | --- | 
| 实例停止 | instance-stop | 实例将在计划的时间停止。再次启动实例时，实例会迁移至新主机。仅适用于具有 Amazon EBS 根卷的实例。 | 
| 实例指令引退 | instance-retirement | 如果实例具有 Amazon EBS 根卷，则实例将在计划的时间停止；如果实例具有实例存储根卷，则实例将在计划的时间终止。 | 
| 实例重启 | instance-reboot | 实例将在计划的时间重启。实例将保留在主机上，并且主机将在重启期间进行维护。这称为就地重启。 | 
| 系统重启 | system-reboot | 实例将在计划的时间重启并迁移至新的主机。这称为重启迁移。 | 
| 系统维护 | system-maintenance | 实例可能会在计划的时间因网络维护或电源维护而临时受到影响。 | 

## 确定事件类型


您可以检查为实例计划的事件类型。

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

**确定事件类型**

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

1. 在导航窗格中，选择 **Events**。

1. 事件代码会显示在表中的**事件类型**列中。

1. 要对该表进行筛选以仅显示涉及相关实例的事件，请在搜索字段的筛选条件列表中选择**资源类型：实例**。

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

**确定实例的事件类型**  
使用 [describe-instance-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html) 命令。如果实例具有关联的计划事件，则输出会提供有关该计划事件的信息。

```
aws ec2 describe-instance-status \
    --instance-id i-1234567890abcdef0 \
    --query InstanceStatuses[].Events
```

下面是示例输出。计划的事件代码是 `system-reboot`。

```
[
    "Events": [
        {
            "InstanceEventId": "instance-event-0d59937288b749b32",
            "Code": "system-reboot",
            "Description": "The instance is scheduled for a reboot",
            "NotAfter": "2020-03-14T22:00:00.000Z",
            "NotBefore": "2020-03-14T20:00:00.000Z",
            "NotBeforeDeadline": "2020-04-05T11:00:00.000Z"
        }
    ]
]
```

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

**确定实例的事件类型**  
使用 [Get-EC2InstanceStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceStatus.html) cmdlet。如果实例具有关联的计划事件，则输出会提供有关该计划事件的信息。

```
(Get-EC2InstanceStatus `
    -InstanceId i-1234567890abcdef0).Events
```

下面是示例输出。计划的事件代码是 `system-reboot`。

```
Code              : system-reboot
Description       : The instance is scheduled for a reboot
InstanceEventId   : instance-event-0d59937288b749b32
NotAfter          : 2020-03-14T22:00:00.000Z
NotBefore         : 2020-03-14T20:00:00.000Z
NotBeforeDeadline : 2020-04-05T11:00:00.000Z
```

------

**Topics**
+ [

## 计划的事件类型
](#types-of-scheduled-events)
+ [

## 确定事件类型
](#scheduled-event-type)
+ [

# 管理计划停止或停用的 Amazon EC2 实例
](schedevents_actions_retire.md)
+ [

# 管理计划重启的 Amazon EC2 实例
](schedevents_actions_reboot.md)
+ [

# 管理计划维护的 Amazon EC2 实例
](schedevents_actions_maintenance.md)
+ [

# 查看会影响 Amazon EC2 实例的计划事件
](viewing_scheduled_events.md)
+ [

# 针对 EC2 实例自定义计划事件通知
](customizing_scheduled_event_notifications.md)
+ [

# 重新计划 EC2 实例的计划事件
](reschedule-event.md)
+ [

# 为会影响 Amazon EC2 实例的计划事件创建自定义事件窗口
](event-windows.md)

# 管理计划停止或停用的 Amazon EC2 实例
管理计划停止或停用的实例

当 AWS 检测到您的实例的基础主机存在无法修复的故障时，它会计划停止或终止实例，这取决于实例的根卷类型。
+ 如果实例具有 Amazon EBS 根卷，则将计划停止实例。
+ 如果实例具有实例存储根卷，则将计划终止实例。

有关更多信息，请参阅 [实例指令引退](instance-retirement.md)。

**重要**  
实例停止、休眠或终止后，实例存储卷上存储的所有数据都会丢失。这包括附加到具有 EBS 根卷的实例的实例存储卷。在实例停止、休眠或终止之前，请务必保存实例存储卷中以后可能需要的数据。

## 您可以执行的操作


**可以对具有 EBS 根卷的实例执行的操作**

收到计划 `instance-stop` 事件通知时，您可以执行以下操作之一：
+ **等待计划停止：**您可等待实例在其计划维护时段内停止。
+ **执行手动停止并启动：**您也可在适合的时间自行停止并启动实例，这会将实例迁移至新的主机。这与重启实例不同。有关更多信息，请参阅 [启动和停止 Amazon EC2 实例](Stop_Start.md)。
+ **自动停止并启动：**您可以自动立即停止并启动以响应计划的 `instance-stop` 事件。有关更多信息，请参阅《*AWS Health 用户指南*》中的[自动在 EC2 实例上运行操作以响应 AWS Health 中的事件](https://docs.aws.amazon.com/health/latest/ug/automating-instance-actions.html)。

**可以对具有实例存储根卷的实例执行的操作**

收到计划 `system-retirement` 事件通知，并且您希望保留数据时，您可以执行以下操作之一：

1. 从最新的 AMI 启动替换实例。

1. 在实例按计划终止之前，将所有必需的数据迁移至替换实例。

1. 终止原始实例，或等待其按计划终止。

有关您可以执行的操作的更多信息，请参阅[实例指令引退](instance-retirement.md)。

# 管理计划重启的 Amazon EC2 实例
管理计划重启的实例

当 AWS 必须执行安装更新或维护底层主机等任务时，可以计划实例重启。在计划重启期间，实例可以保留在同一主机上，也可迁移到其他主机，具体取决于事件，如下所示：
+ `instance-reboot` 事件
  + 在重启期间，实例仍保留在主机上。这称为*就地重启*。
  + 当前主机正在执行维护。
  + 这通常会在几秒钟内完成。
+ `system-reboot` 事件
  + 实例将在重启期间迁移至新的主机。这称为*重启迁移*，
  + 通常在几分钟内完成。

要检查为实例安排计划的事件类型，请参阅[确定事件类型](monitoring-instances-status-check_sched.md#scheduled-event-type)。

## 您可以执行的操作


收到计划的 `instance-reboot` 或 `system-reboot` 事件通知时，您可以执行以下操作之一：
+ **等待计划重启：**您可以等待实例在计划的维护时段内重启。
+ **将计划重启改期：**您可以将实例重启[改期](reschedule-event.md)为适合自己的其他日期和时间。
+ **执行用户发起的重启：**您可以在自己方便的时间自行手动[重启](ec2-instance-reboot.md)实例。但结果因事件而异：
  + `instance-reboot` 事件：实例将保留在当前硬件上（就地重启），不会进行主机维护，并且事件将保持打开状态。
  + `system-reboot` 事件
    + 如果实例启用了重启迁移，则用户发起的重启会尝试将实例迁移到新硬件上。如果操作成功，事件将被清除。如果操作不成功，则会执行就地重启并保留计划事件。
    + 如果实例禁用了重启迁移，则用户发起的重启会使实例保留在相同的硬件上（就地重启），不会进行主机维护但会保留计划事件。当计划事件最终发生时，AWS 会将实例移至新硬件（重启迁移）。

**在 AWS 重启实例后**

在 AWS 重启实例后，将会发生以下情况：
+ 该计划事件将被清除。
+ 事件描述将被更新。
+ 对于 `instance-reboot` 事件：
  + 底层主机的维护将会完成。
+ 对于 `system-reboot` 事件：
  + 实例将迁移至新主机。
  + 实例将保留其 IP 地址和 DNS 名称。
  + 本地实例存储卷上的所有数据都会保留。
+ 您可在实例完全启动之后使用实例。

**替代方案**

如果无法将重启事件改期或为用户发起的重启启用重启迁移，但希望在计划维护时段内保持正常运行，则可以执行以下操作：
+ **对于具有 EBS 根卷的实例**
  + 手动停止并启动实例，以将其迁移至新的主机。这与手动重启实例不同，手动重启时实例会保留在同一主机上。
  + 此外也可以自动立即停止并启动实例以响应计划重启事件。有关更多信息，请参阅《*AWS Health 用户指南*》中的[自动在 EC2 实例上运行操作以响应 AWS Health 中的事件](https://docs.aws.amazon.com/health/latest/ug/automating-instance-actions.html)。
**重要**  
停止实例后，实例存储卷上的数据将会丢失。有关更多信息，请参阅 [启动和停止 Amazon EC2 实例](Stop_Start.md)。
+ **对于具有实例存储根卷的实例**

  1. 从最新的 AMI 启动替换实例。

  1. 在计划维护时段开始之前，将所有必需的数据迁移至替换实例。

  1. 终止原始实例。

## 启用或禁用重启迁移


在为实例计划某个 `system-reboot` 事件后，您可以在事件到来之前重启该实例。用户发起的重启的结果取决于实例的重启迁移设置：
+ 已启用：用户发起的重启会尝试将实例迁移到新硬件上（重启迁移）。如果操作成功，事件将被清除。如果操作不成功，则会执行就地重启并保留计划事件。请注意，即使启用了重启迁移，也只能在实例满足[重启迁移要求](#requirements-for-reboot-migration)的前提下进行重启迁移。
+ 已禁用：用户发起的重启会使实例保留在相同的硬件上（就地重启），不会进行主机维护但会保留计划事件。当计划事件最终发生时，AWS 会将实例移至新硬件（重启迁移）。

迁移后重启所需的时间比就地重启的时间长：
+ 就地重启：大约 30 秒
+ 迁移后重启：几分钟

**注意**  
收到 `system-reboot` 事件通知的实例会为用户发起的重启默认启用此功能。

### 启用重启迁移的要求


只有满足以下条件的实例才能启用重启迁移：

**实例类型**  
并非所有实例类型都支持启用重启迁移。您可以查看支持启用重启迁移的实例类型。  

**查看支持启用重启迁移的实例类型**

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

1. 在左侧导航窗格中，选择 **Instance Types**（实例类型）。

1. 在筛选条件栏中，输入**重启迁移支持：已支持**。选择输入字符时出现的筛选条件名称。

   **实例类型**表会显示支持启用重启迁移的所有实例类型。
**查看支持启用重启迁移的实例类型**  
使用 [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) 命令和 `reboot-migration-support` 筛选条件。

```
aws ec2 describe-instance-types \
    --filters Name=reboot-migration-support,Values=supported \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```
**查看支持启用重启迁移的实例类型**  
使用 [Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) cmdlet 和 `reboot-migration-support` 筛选条件。

```
Get-EC2InstanceType `
    -Filter @{Name="reboot-migration-support";Values="true"} | `
    Select InstanceType | Sort-Object InstanceType
```

**租赁**  
+ 已共享
+ 专用实例
有关更多信息，请参阅 [Amazon EC2 专用实例](dedicated-instance.md)。

**限制**

具有以下特征的实例**不**支持重启迁移：
+ 平台：在 Xen 虚拟机监控程序上原生运行的实例
+ 实例大小：`metal` 实例
+ 租赁：专属主机。对专属主机使用[专属主机自动恢复](dedicated-hosts-recovery.md)
+ 存储：具有实例存储卷的实例
+ 网络：使用 Elastic Fabric Adapter 的实例
+ 自动扩缩：属于自动扩缩组的实例

### 启用或禁用重启迁移的步骤


实例收到 `system-reboot` 事件后，则会默认启用重启迁移。您可以禁用重启迁移，以便在用户发起的重启期间将实例保留在相同的硬件上（就地重启）。

`default` 配置不能为不受支持的实例启用重启迁移。有关更多信息，请参阅 [启用重启迁移的要求](#requirements-for-reboot-migration)。

您可以在正在运行或已停止的实例上禁用或启用重启迁移。

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

**禁用重启迁移**  
使用e [modify-instance-maintenance-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-maintenance-options.html) 命令，并将 `--reboot-migration` 参数设置为 `disabled`。

```
aws ec2 modify-instance-maintenance-options \ 
    --instance-id i-0abcdef1234567890 \ 
    --reboot-migration disabled
```

**启用重启迁移**  
使用e [modify-instance-maintenance-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-maintenance-options.html) 命令，并将 `--reboot-migration` 参数设置为 `default`。

```
aws ec2 modify-instance-maintenance-options \ 
    --instance-id i-0abcdef1234567890 \ 
    --reboot-migration default
```

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

**禁用重启迁移**  
使用 [Edit-EC2InstanceMaintenanceOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMaintenanceOption.html) cmdlet。

```
Edit-EC2InstanceMaintenanceOption `
    -InstanceId  `
    -RebootMigration Disabled
```

**启用重启迁移**  
使用 [Edit-EC2InstanceMaintenanceOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMaintenanceOption.html) cmdlet。

```
Edit-EC2InstanceMaintenanceOption `
    -InstanceId i-1234567890abcdef0 `
    -RebootMigration Enabled
```

------

# 管理计划维护的 Amazon EC2 实例
管理计划维护的实例

当 AWS 必须维护实例的基础主机时，它将计划实例的维护。维护事件有两种：网络维护和电源维护。
+ 在网络维护期间，计划的实例会在短时间内失去网络连接。在维护完成后，将恢复与实例的正常网络连接。
+ 在电源维护期间，计划的实例将短时间脱机，然后重启。执行重启后，将保留您的所有实例的配置设置。

在实例重启后 (这通常需要几分钟)，验证您的应用程序是否按预期运行。此时，您的实例应该不再具有与之关联的计划事件，或者如果有，该计划事件的描述应该以 **[Completed]** 开头。实例状态说明的刷新有时需要长达 1 个小时。已完成的维护事件将在 Amazon EC2 控制台面板上显示长达一周时间。

## 您可以执行的操作


**可以对具有 EBS 根卷的实例执行的操作**

收到 `system-maintenance` 事件通知时，您可以执行以下操作之一：
+ **等待执行计划维护：**您可等待按计划执行维护。
+ **执行手动停止并启动：**您可以停止并启动实例，这会将实例迁移至新的主机。这与重启实例不同。有关更多信息，请参阅 [启动和停止 Amazon EC2 实例](Stop_Start.md)。
+ **自动停止并启动：**您可以自动立即停止并启动以响应计划维护事件。有关更多信息，请参阅《*AWS Health 用户指南*》中的[自动在 EC2 实例上运行操作以响应 AWS Health 中的事件](https://docs.aws.amazon.com/health/latest/ug/automating-instance-actions.html)。

**可以对具有实例存储根卷的实例执行的操作**

收到 `system-maintenance` 事件通知时，您可以执行以下操作之一：
+ **等待执行计划维护：**您可等待按计划执行维护。
+ **启动替换实例：**如果想在计划维护时段内保持正常运行，请执行以下操作：

  1. 从最新的 AMI 启动替换实例。

  1. 在计划维护时段开始之前，将所有必需的数据迁移至替换实例。

  1. 终止原始实例。

# 查看会影响 Amazon EC2 实例的计划事件
查看计划的事件

除了通过电子邮件接收计划事件的通知外，您还可以查看计划的事件。

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

**查看实例的计划事件**

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

1. 控制面板的**计划的事件**下将显示与事件关联的所有资源。  
![\[使用控制面板查看事件。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/dashboard-scheduled-events.png)

1. 有关更多详细信息，在导航窗格中，选择**事件**。将显示与事件关联的所有资源。您可以按事件类型、资源类型和可用区等特征进行筛选。  
![\[使用“Events”页查看事件。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/events-instance-scheduled-stop.png)

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

**查看实例的计划事件**  
使用 [describe-instance-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html) 命令。

```
aws ec2 describe-instance-status \
    --instance-id i-1234567890abcdef0 \
    --query "InstanceStatuses[].Events"
```

以下示例输出显示重启事件：

```
[
    "Events": [
        {
            "InstanceEventId": "instance-event-0d59937288b749b32",
            "Code": "system-reboot",
            "Description": "The instance is scheduled for a reboot",
            "NotAfter": "2019-03-15T22:00:00.000Z",
            "NotBefore": "2019-03-14T20:00:00.000Z",
            "NotBeforeDeadline": "2019-04-05T11:00:00.000Z"
         }

    ]
]
```

以下示例输出显示实例停用事件。

```
[
    "Events": [
        {
            "InstanceEventId": "instance-event-0e439355b779n26",                        
            "Code": "instance-stop",
            "Description": "The instance is running on degraded hardware",
            "NotBefore": "2015-05-23T00:00:00.000Z"
        }
    ]
]
```

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

**查看实例的计划事件**  
使用以下 [Get-EC2InstanceStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceStatus.html) 命令。

```
(Get-EC2InstanceStatus -InstanceId i-1234567890abcdef0).Events
```

以下示例输出显示实例停用事件。

```
Code         : instance-stop
Description  : The instance is running on degraded hardware
NotBefore    : 5/23/2015 12:00:00 AM
```

------
#### [ Instance metadata ]

**使用实例元数据查看实例的计划事件**  
您可以使用实例元数据服务版本 2 或实例元数据服务版本 1 从[实例元数据](ec2-instance-metadata.md)中检索有关实例的活动维护事件的信息。

**IMDSv2**

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/maintenance/scheduled
```

**IMDSv1**

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/events/maintenance/scheduled
```

以下是 JSON 格式的计划系统重启事件信息的示例输出。

```
[ 
  {
    "NotBefore" : "21 Jan 2019 09:00:43 GMT",
    "Code" : "system-reboot",
    "Description" : "scheduled reboot",
    "EventId" : "instance-event-0d59937288b749b32",
    "NotAfter" : "21 Jan 2019 09:17:23 GMT",
    "State" : "active"
  } 
]
```

**使用实例元数据查看有关实例的已完成或已取消事件的事件历史记录**  
您可以使用实例元数据服务版本 2 或实例元数据服务版本 1 从[实例元数据](ec2-instance-metadata.md)中检索有关已完成或已取消的事件的信息。

**IMDSv2**

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/maintenance/history
```

**IMDSv1**

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/events/maintenance/history
```

以下是 JSON 格式的已取消和已完成系统重启事件相关信息的示例输出。

```
[ 
  {
    "NotBefore" : "21 Jan 2019 09:00:43 GMT",
    "Code" : "system-reboot",
    "Description" : "[Canceled] scheduled reboot",
    "EventId" : "instance-event-0d59937288b749b32",
    "NotAfter" : "21 Jan 2019 09:17:23 GMT",
    "State" : "canceled"
  }, 
  {
    "NotBefore" : "29 Jan 2019 09:00:43 GMT",
    "Code" : "system-reboot",
    "Description" : "[Completed] scheduled reboot",
    "EventId" : "instance-event-0d59937288b749b32",
    "NotAfter" : "29 Jan 2019 09:17:23 GMT",
    "State" : "completed"
  }
]
```

------
#### [ AWS Health ]

您可以使用 AWS Health Dashboard 了解可能影响您的实例的事件。Health Dashboard 会分三组管理问题：未处理问题、已计划更改和其他通知。已计划更改组包含正在进行或即将进行的项目。

有关更多信息，请参阅 *AWS Health 用户指南*中的[开始使用 AWS Health Dashboard](https://docs.aws.amazon.com/health/latest/ug/getting-started-health-dashboard.html)。

------

# 针对 EC2 实例自定义计划事件通知
自定义计划事件通知

您可以自定义计划事件通知，以便在电子邮件通知中包含标签。这样就可以更轻松地识别受影响的资源（实例或 专用主机），并为即将到来的事件确定操作的优先级。

当您自定义事件通知以包含标签时，您可以选择包括：
+ 与受影响资源关联的所有标签
+ 仅限与受影响资源关联的特定标签

例如，假设您为所有实例分配 `application`、`costcenter`、`project` 和 `owner` 标签。您可以选择在事件通知中包含所有标签。或者，如果您只想在事件通知中查看 `owner` 和 `project` 标签，则可以选择仅包含这些标签。

选择要包含的标签后，事件通知将包含与受影响资源关联的资源 ID（实例 ID 或专用主机 ID）以及标签键/值对。

**Topics**
+ [

## 在事件通知中包含标签
](#register-tags)
+ [

## 从事件通知中删除标签
](#deregister-tags)
+ [

## 查看要包含在事件通知中的标签
](#view-tags)

## 在事件通知中包含标签


您选择包含的标签将应用于选定区域中的所有资源（实例和 专用主机）。要自定义其他区域中的事件通知，请首先选择所需的区域，然后执行以下步骤。

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

**在事件通知中包含标签**

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

1. 在导航窗格中，选择 **Events**。

1. 选择**操作**、**Manage event notifications (管理事件通知)**。

1. 启用**在事件通知中包含标签**。

1. 根据要包含在事件通知中的标签，执行以下操作之一：
   + 要包含与受影响实例或专属主机关联的所有标签，请选择**包含所有标签**。
   + 要选择要包含的标签，请选择**选择要包含的标签**，然后选择或输入标签键。

1. 选择**保存**。

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

**在事件通知中包含所有标签**  
使用 [register-instance-event-notification-attributes](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-instance-event-notification-attributes.html) 命令，并将 `IncludeAllTagsOfInstance` 参数设置为 `true`。

```
aws ec2 register-instance-event-notification-attributes \
    --instance-tag-attribute "IncludeAllTagsOfInstance=true"
```

**在事件通知中包含特定标签**  
使用 [register-instance-event-notification-attributes](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-instance-event-notification-attributes.html) 命令，并使用 `InstanceTagKeys` 参数指定要包含的标签。

```
aws ec2 register-instance-event-notification-attributes \
    --instance-tag-attribute 'InstanceTagKeys=["tag_key_1", "tag_key_2", "tag_key_3"]'
```

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

**在事件通知中包含所有标签**  
使用 [Register-EC2InstanceEventNotificationAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2InstanceEventNotificationAttribute.html) cmdlet。

```
Register-EC2InstanceEventNotificationAttribute `
    -InstanceTagAttribute_IncludeAllTagsOfInstance $true
```

**在事件通知中包含特定标签**  
使用 [Register-EC2InstanceEventNotificationAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2InstanceEventNotificationAttribute.html) cmdlet。

```
Register-EC2InstanceEventNotificationAttribute `
    -InstanceTagAttribute_InstanceTagKey tag_key_1, tag_key_2, tag_key_3
```

------

## 从事件通知中删除标签


您可以从事件通知中删除标签。

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

**从事件通知中删除标签**

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

1. 在导航窗格中，选择 **Events**。

1. 选择**操作**、**Manage event notifications (管理事件通知)**。

1. 要从事件通知中删除所有标签，请关闭**在事件通知中包含标签**。

1. 要从事件通知中删除特定标签，请为相应的标签键选择 **X**)。

1. 选择**保存**。

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

**从事件通知中删除所有标签**  
使用 [deregister-instance-event-notification-attributes](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-instance-event-notification-attributes.html) 命令，并将 `IncludeAllTagsOfInstance` 参数设置为 `false`。

```
aws ec2 deregister-instance-event-notification-attributes \
    --instance-tag-attribute "IncludeAllTagsOfInstance=false"
```

**从事件通知中删除标签**  
使用 [deregister-instance-event-notification-attributes](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-instance-event-notification-attributes.html) 命令，并使用 `InstanceTagKeys` 参数指定要删除的标签。

```
aws ec2 deregister-instance-event-notification-attributes \
    --instance-tag-attribute 'InstanceTagKeys=["tag_key_3"]'
```

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

**从事件通知中删除所有标签**  
使用 [Unregister-EC2InstanceEventNotificationAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2InstanceEventNotificationAttribute.html) cmdlet。

```
Unregister-EC2InstanceEventNotificationAttribute `
    -InstanceTagAttribute_IncludeAllTagsOfInstance $false
```

**从事件通知中删除标签**  
使用 [Unregister-EC2InstanceEventNotificationAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2InstanceEventNotificationAttribute.html) cmdlet。

```
Unregister-EC2InstanceEventNotificationAttribute `
    -InstanceTagAttribute_InstanceTagKey tag_key_3
```

------

## 查看要包含在事件通知中的标签


您可以查看要包含在事件通知中的标签。

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

**查看要包含在事件通知中的标签**

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

1. 在导航窗格中，选择 **Events**。

1. 选择**操作**、**Manage event notifications (管理事件通知)**。

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

**查看要包含在事件通知中的标签**  
使用 [describe-instance-event-notification-attributes](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-event-notification-attributes.html) 命令。

```
aws ec2 describe-instance-event-notification-attributes
```

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

**查看要包含在事件通知中的标签**  
使用 [Get-EC2InstanceEventNotificationAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceEventNotificationAttribute.html) cmdlet。

```
Get-EC2InstanceEventNotificationAttribute
```

------

# 重新计划 EC2 实例的计划事件
对计划事件进行重新计划

您可以重新安排一个事件，以便它在适合您的特定日期和时间发生。重新计划事件后，可能需要一两分钟才能显示更新后的日期。

**限制**
+ 只有具有事件截止日期的事件才可以重新计划。可以将事件重新计划到事件截止日期之前的日期。**截止期限**列（控制台）和 `NotBeforeDeadline` 字段（AWS CLI）会指示事件的截止日期。
+ 只有尚未开始的事件才可以重新计划。**开始时间**列（控制台）和 `NotBefore` 字段（AWS CLI）会指示事件的开始时间。距离开始时间只剩 5 分钟的计划事件无法改期。
+ 新的事件开始时间离当前时间必须至少有 60 分钟。
+ 如果您使用控制台重新计划多个事件，则事件截止期限由具有最早的事件截止期限的事件决定。

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

**重新安排事件**

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

1. 在导航窗格中，选择 **Events**。

1. 从筛选器列表中选择 **Resource type: instance (资源类型：实例)**。

1. 选择一个或多个实例，然后依次选择 **Actions (操作)**、**Schedule Event (计划事件)**。

   只有具有事件截止期限（由 **Deadline (截止期限)** 值指示）的事件才可以重新计划。如果某个选定的事件没有截止期限，则会禁用 **Actions (操作)** 下的 **Schedule Event (计划事件)**。

1. 对于 **New start time (新的开始时间)**，为事件输入新的日期和时间。新的日期和时间必须早于 **Event deadline (事件截止期限)**。

1. 选择**保存**。

   更新的事件开始时间可能需要一两分钟才会反映在控制台中。

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

**重新安排事件**  
使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-event-start-time.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-event-start-time.html) 命令。

```
aws ec2 modify-instance-event-start-time \
    --instance-id i-1234567890abcdef0 \
    --instance-event-id instance-event-0d59937288b749b32 \
    --not-before 2020-03-25T10:00:00.000
```

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

**重新安排事件**  
使用 [Edit-EC2InstanceEventStartTime](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceEventStartTime.html) cmdlet。

```
Edit-EC2InstanceEventStartTime `
    -InstanceId i-1234567890abcdef0 `
    -InstanceEventId instance-event-0d59937288b749b32 `
    -NotBefore 2020-03-25T10:00:00.000
```

------

# 为会影响 Amazon EC2 实例的计划事件创建自定义事件窗口
创建自定义事件窗口

您可以为重新启动、停止或终止 Amazon EC2 实例的计划事件定义自定义事件窗口。您可以将一个或多个实例与事件窗口关联。如果计划了这些实例的计划事件，AWS 将在关联事件窗口中调度事件。

通过指定工作负载在非高峰期间发生的事件窗口，可以使用事件窗口最大化工作负载可用性。您还可以将事件窗口与内部维护计划保持一致。

您可以通过指定一组时间范围来定义事件窗口。最短持续时间为 2 小时。总计组合时间范围必须至少为 4 小时。

您可以使用实例 ID 或实例标签将一个或多个实例与事件窗口相关联。您还可以使用主机 ID 将专属主机与事件窗口相关联。

**警告**  
事件窗口仅适用于停止、重新启动或终止实例的计划事件。  
事件窗口不适用于：  
加速计划事件和网络维护事件。
[自动实例恢复](ec2-instance-recover.md)等非计划维护和非计划重启。

**Topics**
+ [

## 注意事项
](#event-windows-considerations)
+ [

## 创建事件窗口
](#create-event-windows)
+ [

## 将目标与事件窗口关联
](#associate-target-event-window)
+ [

## 取消目标与事件窗口的关联
](#disassociate-target-event-window)
+ [

## 修改事件窗口
](#modify-event-windows)
+ [

## 删除事件窗口
](#delete-event-windows)

## 注意事项

+ 所有事件窗口均采用 UTC 时间。
+ 一个事件窗口可以包含多个时间范围。虽然每个范围必须至少为 2 小时，但所有范围的总持续时间必须至少为 4 小时。
+ 一个事件窗口只能关联一个目标类型（实例 ID、专属主机 ID 或实例标签）。
+ 一个目标（实例 ID、专属主机 ID 或实例标签）只能关联一个事件窗口。
+ 一个事件窗口最多可以关联 100 个实例 ID 或 50 个专属主机 ID 或 50 个实例标签。实例标签可以关联任意数量的实例。
+ 每个 AWS 区域最多可以创建 200 个事件窗口。
+ 与事件窗口关联的多个实例可能会同时发生计划的事件。
+ 如果 AWS 已计划事件，修改事件窗口不会更改计划事件的时间。如果事件有截止日期，您可以[重新计划事件](reschedule-event.md)。
+ 您可以在计划事件开始之前停止并启动实例。这会将实例迁移至新主机并清除该事件。

## 创建事件窗口


您可以创建一个或多个事件窗口。对于每个事件窗口，您可以指定一个或多个时间块。例如，您可以创建一个带有时间块的事件窗口，发生于每天凌晨 4 点，持续 2 个小时。或者，您可以创建一个带有时间块的事件窗口，发生于星期日凌晨 2 点至凌晨 4 点以及星期三凌晨 3 点至凌晨 5 点。

事件窗口每周重复出现，直至将其删除。

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

**创建事件窗口**

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

1. 在导航窗格中，选择 **Events**。

1. 选择 **Actions (操作)**，然后选择 **Manage event windows (管理事件窗口)**。

1. 选择 **Create instance event window (创建实例事件窗口)**。

1. 对于 **Event window name (事件窗口名称)**，输入事件窗口的描述性名称。

1. 对于 **Event window schedule (事件窗口时间表)**，选择通过使用 Cron schedule builder（Cron 计划生成器）或指定时间范围来指定事件窗口中的时间块。
   + 如果选择 **Cron schedule builder (Cron 计划生成器)**，请指定以下内容：

     1. 对于 **Days (UTC) (天数(UTC))**，请指定发生事件窗口的具体日期。

     1. 对于 **Start time (UTC) (开始时间(UTC))**，请指定事件窗口开始的时间。

     1. 对于 **Duration (持续时间)**，请指定事件窗口中时间块的持续时间。每个时间块的最短持续时间为 2 小时。事件窗口的最短持续时间总计必须等于或超过 4 小时。所有时间均采用 UTC。
   + 如果选择 **Time ranges (时间范围)**，选择 **Add new time range (添加新时间范围)**，并指定开始以及结束日期和时间。每个时间范围重复此操作。每个时间范围的最短持续时间为 2 小时。所有时间范围总计最小持续时间必须等于或超过 4 小时。

1. （可选）对于**目标详细信息**，将一个或多个实例关联到该事件时段。使用实例 ID 或实例标签来关联实例。使用主机 ID 来关联专属主机。当这些目标列入计划维护时，该事件将在此事件时段内出现。

   请注意，您可以在不将目标与窗口关联的情况下创建事件窗口。稍后，您可以修改窗口以关联一个或多个目标。

1. （可选）对于 **Event window tags (事件窗口标签)**，选择 **Add tag (添加标签)**，然后输入标签键和值。对每个标签重复此操作。

1. 选择 **Create event window (创建事件窗口)**。

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

**创建有时间范围的事件窗口**  
使用 [create-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-event-window.html) 命令。

```
aws ec2 create-instance-event-window \
    --time-range StartWeekDay=monday,StartHour=2,EndWeekDay=wednesday,EndHour=8 \
    --tag-specifications "ResourceType=instance-event-window,Tags=[{Key=K1,Value=V1}]" \
    --name myEventWindowName
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "TimeRanges": [
            {
                "StartWeekDay": "monday",
                "StartHour": 2,
                "EndWeekDay": "wednesday",
                "EndHour": 8
            }
        ],
        "Name": "myEventWindowName",
        "State": "creating",
        "Tags": [
            {
                "Key": "K1",
                "Value": "V1"
            }
        ]
    }
}
```

**创建有 Cron 表达式的事件窗口**  
使用 [create-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-event-window.html) 命令。

```
aws ec2 create-instance-event-window \
    --cron-expression "* 21-23 * * 2,3" \
    --tag-specifications "ResourceType=instance-event-window,Tags=[{Key=K1,Value=V1}]" \
    --name myEventWindowName
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "State": "creating",
        "Tags": [
            {
                "Key": "K1",
                "Value": "V1"
            }
        ]
    }
}
```

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

**创建有时间范围的事件窗口**  
使用 [New-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceEventWindow.html) cmdlet。

```
$timeRange = New-Object Amazon.EC2.Model.InstanceEventWindowTimeRangeRequest
$timeRange.StartWeekDay = "monday"
$timeRange.EndWeekDay = "wednesday"
$timeRange.StartHour = 2
$timeRange.EndHour = 8
$tag = @{Key="key1"; Value="value1"}
$tagspec = New-Object Amazon.EC2.Model.TagSpecification
$tagspec.ResourceType = "instance-event-window"
$tagspec.Tags.Add($tag)
New-EC2InstanceEventWindow `
    -Name my-event-window `
    -TagSpecification $tagspec `
    -TimeRange @($timeRange)
```

下面是示例输出。

```
AssociationTarget     : 
CronExpression        : 
InstanceEventWindowId : iew-0abcdef1234567890
Name                  : my-event-window
State                 : creating
Tags                  : {key1}
TimeRanges            : {Amazon.EC2.Model.InstanceEventWindowTimeRange}
```

**创建有 Cron 表达式的事件窗口**  
使用 [New-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceEventWindow.html) cmdlet。

```
$tag = @{Key="key1"; Value="value1"}
$tagspec = New-Object Amazon.EC2.Model.TagSpecification
$tagspec.ResourceType = "instance-event-window"
$tagspec.Tags.Add($tag)
New-EC2InstanceEventWindow `
    -Name my-event-window `
    -TagSpecification $tagspec`
    -CronExpression "* 21-23 * * 2,3"
```

下面是示例输出。

```
AssociationTarget     : 
CronExpression        : * 21-23 * * 2,3
InstanceEventWindowId : iew-0abcdef1234567890
Name                  : my-event-window
State                 : creating
Tags                  : {key1}
TimeRanges            : {}
```

------

## 将目标与事件窗口关联


创建事件窗口后，您可以将目标与事件窗口相关联。一个事件窗口只能关联一个目标类型。您可以指定实例 ID、专属主机 ID 或实例标签。

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

**将目标与事件窗口相关联**

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

1. 在导航窗格中，选择 **Events**。

1. 选择要修改的事件窗口。

1. 选择**操作**、**修改实例事件窗口**。

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

**将实例标签与事件窗口相关联**  
使用 [associate-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-instance-event-window.html) 命令。

```
aws ec2 associate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceTags=[{Key=k2,Value=v2},{Key=k1,Value=v1}]"
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [],
            "Tags": [
                {
                    "Key": "k2",
                    "Value": "v2"
                },
                {
                    "Key": "k1",
                    "Value": "v1"
                }
            ],
            "DedicatedHostIds": []
        },
        "State": "creating"
    }
}
```

**将实例 ID 与事件窗口相关联**  
使用 [associate-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-instance-event-window.html) 命令。

```
aws ec2 associate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceIds=i-1234567890abcdef0,i-0598c7d356eba48d7"
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [
                "i-1234567890abcdef0",
                "i-0598c7d356eba48d7"
            ],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating"
    }
}
```

**将专属主机与事件窗口相关联**  
使用 [associate-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-instance-event-window.html) 命令。

```
aws ec2 associate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "DedicatedHostIds=h-029fa35a02b99801d"
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [],
            "Tags": [],
            "DedicatedHostIds": [
                "h-029fa35a02b99801d"
            ]
        },
        "State": "creating"
    }
}
```

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

**将实例标签与事件窗口相关联**  
使用 [Register-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2InstanceEventWindow.html) cmdlet。

```
$tag1 = @{Key="key1"; Value="value1"}
$tag2 = @{Key="key2"; Value="value2"}
Register-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -AssociationTarget_InstanceTag @($tag1,$tag2)
```

**将实例 ID 与事件窗口相关联**  
使用 [Register-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2InstanceEventWindow.html) cmdlet。

```
Register-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -AssociationTarget_InstanceId i-1234567890abcdef0, i-0598c7d356eba48d7
```

**将专属主机与事件窗口相关联**  
使用 [Register-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2InstanceEventWindow.html) cmdlet。

```
Register-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -AssociationTarget_DedicatedHostId h-029fa35a02b99801d
```

------

## 取消目标与事件窗口的关联


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

**取消目标与事件窗口的关联**

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

1. 在导航窗格中，选择 **Events**。

1. 选择要修改的事件窗口。

1. 选择**操作**、**修改实例事件窗口**。

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

**取消实例标签与事件窗口的关联**  
使用[disassociate-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference//ec2/disassociate-instance-event-window.html) 命令。

```
aws ec2 disassociate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceTags=[{Key=k2,Value=v2},{Key=k1,Value=v1}]"
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating"
    }
}
```

**取消实例 ID 与事件窗口的关联**  
使用[disassociate-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-instance-event-window.html) 命令。

```
aws ec2 disassociate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceIds=i-1234567890abcdef0,i-0598c7d356eba48d7"
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating"
    }
}
```

**取消专属主机与事件窗口的关联**  
使用[disassociate-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-instance-event-window.html) 命令。

```
aws ec2 disassociate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target DedicatedHostIds=h-029fa35a02b99801d
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating"
    }
}
```

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

**取消实例标签与事件窗口的关联**  
使用 [Unregister-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2InstanceEventWindow.html) cmdlet。

```
$tag1 = @{Key="key1"; Value="value1"}
$tag2 = @{Key="key2"; Value="value2"}
Unregister-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -AssociationTarget_InstanceTag @($tag1, $tag2)
```

**取消实例 ID 与事件窗口的关联**  
使用 [Unregister-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2InstanceEventWindow.html) cmdlet。

```
Unregister-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -AssociationTarget_InstanceId i-1234567890abcdef0, i-0598c7d356eba48d7
```

**取消专属主机与事件窗口的关联**  
使用 [Unregister-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2InstanceEventWindow.html) cmdlet。

```
Unregister-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -AssociationTarget_DedicatedHostId h-029fa35a02b99801d
```

------

## 修改事件窗口


您可以修改事件窗口中除 ID 之外的所有字段。例如，夏令时开始时，您可能需要修改事件窗口计划。对于现有事件窗口，您可能需要添加或移除目标。

您可以在修改事件窗口时修改时间范围或 Cron 表达式，但不能同时修改两者。

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

**修改事件窗口**

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

1. 在导航窗格中，选择 **Events**。

1. 选择 **Actions (操作)**，然后选择 **Manage event windows (管理事件窗口)**。

1. 选择要修改的事件窗口，然后选择 **Actions (操作)**、**Modify instance event window (修改实例事件窗口)**。

1. 在事件窗口中修改字段，然后选择 **Modify event window (修改事件窗口)**。

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

**修改事件窗口的时间范围**  
使用 [modify-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-event-window.html) 命令。

```
aws ec2 modify-instance-event-window 
    --instance-event-window-id iew-0abcdef1234567890 \
    --time-range StartWeekDay=monday,StartHour=2,EndWeekDay=wednesday,EndHour=8
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "TimeRanges": [
            {
                "StartWeekDay": "monday",
                "StartHour": 2,
                "EndWeekDay": "wednesday",
                "EndHour": 8
            }
        ],
        "Name": "myEventWindowName",
        "AssociationTarget": {
            "InstanceIds": [
                "i-0abcdef1234567890",
                "i-0be35f9acb8ba01f0"
            ],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating",
        "Tags": [
            {
                "Key": "K1",
                "Value": "V1"
            }
        ]
    }
}
```

**修改事件窗口的一组时间范围**  
使用 [modify-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-event-window.html) 命令。

```
aws ec2 modify-instance-event-window 
    --instance-event-window-id iew-0abcdef1234567890 \
    --time-range '[{"StartWeekDay": "monday", "StartHour": 2, "EndWeekDay": "wednesday", "EndHour": 8},
	  {"StartWeekDay": "thursday", "StartHour": 2, "EndWeekDay": "friday", "EndHour": 8}]'
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "TimeRanges": [
            {
                "StartWeekDay": "monday",
                "StartHour": 2,
                "EndWeekDay": "wednesday",
                "EndHour": 8
            },
            {
                "StartWeekDay": "thursday",
                "StartHour": 2,
                "EndWeekDay": "friday",
                "EndHour": 8
            }
        ],
        "Name": "myEventWindowName",
        "AssociationTarget": {
            "InstanceIds": [
                "i-0abcdef1234567890",
                "i-0be35f9acb8ba01f0"
            ],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating",
        "Tags": [
            {
                "Key": "K1",
                "Value": "V1"
            }
        ]
    }
}
```

**修改事件窗口的 Cron 表达式**  
使用 [modify-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-event-window.html) 命令。

```
aws ec2 modify-instance-event-window 
    --instance-event-window-id iew-0abcdef1234567890 \
    --cron-expression "* 21-23 * * 2,3"
```

下面是示例输出。

```
{
    "InstanceEventWindow": {
        "InstanceEventWindowId": "iew-0abcdef1234567890",
        "Name": "myEventWindowName",
        "CronExpression": "* 21-23 * * 2,3",
        "AssociationTarget": {
            "InstanceIds": [
                "i-0abcdef1234567890",
                "i-0be35f9acb8ba01f0"
            ],
            "Tags": [],
            "DedicatedHostIds": []
        },
        "State": "creating",
        "Tags": [
            {
                "Key": "K1",
                "Value": "V1"
            }
        ]
    }
}
```

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

**修改事件窗口的时间范围**  
使用 [Edit-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceEventWindow.html) cmdlet。

```
$timeRange1 = New-Object Amazon.EC2.Model.InstanceEventWindowTimeRangeRequest
$timeRange1.StartWeekDay = "monday"
$timeRange1.EndWeekDay = "wednesday"
$timeRange1.StartHour = 2
$timeRange1.EndHour = 8
$timeRange2 = New-Object Amazon.EC2.Model.InstanceEventWindowTimeRangeRequest
$timeRange2.StartWeekDay = "thursday"
$timeRange2.EndWeekDay = "friday"
$timeRange2.StartHour = 1
$timeRange2.EndHour = 6
Edit-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -TimeRange @($timeRange1, $timeRange2)
```

**修改事件窗口的 Cron 表达式**  
使用 [Edit-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceEventWindow.html) cmdlet。

```
Edit-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -CronExpression "* 21-23 * * 2,3"
```

------

## 删除事件窗口


您可以一次删除一个事件窗口。

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

**删除事件窗口**

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

1. 在导航窗格中，选择 **Events**。

1. 选择 **Actions (操作)**，然后选择 **Manage event windows (管理事件窗口)**。

1. 选择要删除的事件窗口，然后选择 **Actions (操作)**、**Delete instance event window (删除实例事件窗口)**。

1. 当系统提示时，输入 **delete**，然后选择**删除**。

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

**删除事件窗口**  
使用 [delete-instance-event-window](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-event-window.html) 命令并指定要删除的事件窗口。

```
aws ec2 delete-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890
```

**强制删除事件时段**  
使用 `--force-delete` 参数（如果事件窗口当前与目标相关联）。

```
aws ec2 delete-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --force-delete
```

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

**删除事件窗口**  
使用 [Remove-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2InstanceEventWindow.html) cmdlet。

```
Remove-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890
```

**强制删除事件时段**  
使用 [Remove-EC2InstanceEventWindow](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2InstanceEventWindow.html) cmdlet。

```
Remove-EC2InstanceEventWindow `
    -InstanceEventWindowId iew-0abcdef1234567890 `
    -ForceDelete $true
```

------

# 使用 CloudWatch 监控您的实例


您可以使用 Amazon CloudWatch 监控您的实例，此工具可从 Amazon EC2 收集原始数据，并将数据处理为易读的近乎实时的指标。这些统计数据会保存 15 个月，从而使您能够访问历史信息，并能够更好地了解您的 Web 应用程序或服务的执行情况。

默认情况下，Amazon EC2 每隔 5 分钟向 CloudWatch 发送一次指标数据。要每隔 1 分钟向 CloudWatch 发送一次实例的指标数据，可以对实例启用详细监控。有关更多信息，请参阅 [管理 EC2 实例的详细监控](manage-detailed-monitoring.md)。

Amazon EC2 控制台将根据来自 Amazon CloudWatch 的原始数据显示一系列图表。根据您的需求，您可能更愿意从 Amazon CloudWatch 而非控制台中的图表中获取实例数据。

有关 Amazon CloudWatch 账单和成本信息，请参阅《Amazon CloudWatch 用户指南》中的 [CloudWatch 账单和成本](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_billing.html)。**

**Topics**
+ [

# 在 Amazon EC2 控制台中管理 EC2 实例的 CloudWatch 警报
](ec2-instance-alarms.md)
+ [

# 管理 EC2 实例的详细监控
](manage-detailed-monitoring.md)
+ [

# 可用于实例的 CloudWatch 指标
](viewing_metrics_with_cloudwatch.md)
+ [

# 使用 Amazon EC2 控制台安装和配置 CloudWatch 代理以添加其他指标
](install-and-configure-cloudwatch-agent-using-ec2-console.md)
+ [

# 实例的 CloudWatch 指标的统计数据
](monitoring_get_statistics.md)
+ [

# 查看实例的监控图形
](graphs-in-the-aws-management-console.md)
+ [

# 为实例创建 CloudWatch 警报
](using-cloudwatch-createalarm.md)
+ [

# 创建停止、终止、重启或恢复实例的警报
](UsingAlarmActions.md)

# 在 Amazon EC2 控制台中管理 EC2 实例的 CloudWatch 警报
实例警报

从 Amazon EC2 控制台的**实例**屏幕中，您可以管理实例的 Amazon CloudWatch 警报。在**实例**表中，**警报状态**列提供了两个控制台控件：一个用于查看警报，一个用于创建或编辑警报。以下屏幕截图显示了这些控制台控件，编号为 **1**（**查看警报**）和 **2**（**\$1** 号表示创建或编辑警报）。

![\[EC2 控制台“实例”表中的控件，用于查看和创建警报。1. 查看警报 2. 加号。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/instance-alarms.png)


## 从“实例”屏幕查看警报


您可以从**实例**屏幕查看每个实例的警报。

**从“实例”屏幕查看实例的警报**

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

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

1. 在**实例**表中，对于您选择的实例，选择**查看警报**（上一屏幕截图中编号为 **1**）。

1. 在 ***i-1234567890abcdef0* 的警报详细信息**窗口中，选择该警报名称以在 CloudWatch 控制台查看该警报。

## 从“实例”屏幕创建警报


您可以从**实例**屏幕为每个实例创建警报。

**从“实例”屏幕为实例创建警报**

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

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

1. 在**实例**表中，对于您选择的实例，选择加号（上一屏幕截图中编号为 **2**）。

1. 在**管理 CloudWatch 警报**屏幕中，创建警报。有关更多信息，请参阅 [为实例创建 CloudWatch 警报](using-cloudwatch-createalarm.md)。

## 从实例屏幕编辑警报


您可以从**实例**屏幕编辑实例的警报。

**要从实例屏幕编辑实例的警报**

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

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

1. 在**实例**表中，对于您选择的实例，选择加号（上一屏幕截图中编号为 **2**）。

1. 在**管理 CloudWatch 警报**屏幕中，编辑警报。有关更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[编辑或删除 CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Manage-CloudWatch-Alarm.html#Edit-CloudWatch-Alarm)。

# 管理 EC2 实例的详细监控
管理详细监控

Amazon CloudWatch 提供两类监控：*基本监控*和*详细监控*。默认情况下，您的实例已配置为基本监控。您可以选择启用详细监控，以帮助您更快地识别运行问题并对其采取措施。可以在实例启动时或在实例运行或停止时，启用或关闭详细监控。

在实例上启用详细监控不会影响其附加的 EBS 卷的监控。有关更多信息，请参阅 [Amazon EBS 的 Amazon CloudWatch 指标](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)。

下面突出显示了实例的基本监控和详细监控之间的区别。


| 监控类型 | 描述 | 收费 | 
| --- | --- | --- | 
| 基本监控 |  状态检查指标在 1 分钟内可用。所有其他指标均在 5 分钟内可用。  | 免费。 | 
| 详细监控 | 只要您为实例开启详细监控功能，便每隔 1 分钟获取一次指标。 一旦您启用了详细监控功能，就可以聚合相似实例组的数据。 | 您需要按 Amazon EC2 发送到 CloudWatch 的每个指标付费。您无需为数据存储付费。有关更多信息，请参阅 [Amazon CloudWatch 定价页面](https://aws.amazon.com/cloudwatch/pricing/#Paid_tier)中的付费套餐。 | 

**Topics**
+ [

## 所需权限
](#iam-detailed-monitoring)
+ [

## 启动时启用详细监控
](#enable-detailed-monitoring)
+ [

## 管理详细监控
](#disable-detailed-monitoring)

## 所需权限


要启用对实例的详细监控，用户必须具有使用 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_MonitorInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_MonitorInstances.html) API 操作的权限。要关闭对实例的详细监控，用户必须具有使用 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_UnmonitorInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_UnmonitorInstances.html) API 操作的权限。

## 启动时启用详细监控


使用以下过程在启动时启用详细监控。默认情况下，您的实例使用基本监控。

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

**要在启动实例时启用详细监视**  
当使用 Amazon EC2 控制台启动实例时，请在**高级详细信息**下，选中**详细 CloudWatch 监控**复选框。

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

**要在启动实例时启用详细监视**  
使用 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 命令和 `--monitoring` 选项。

```
--monitoring Enabled=true
```

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

**要在启动实例时启用详细监视**  
将 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet 与 `-Monitoring` 参数结合使用。

```
-Monitoring $true
```

------

## 管理详细监控


使用以下过程管理正在运行或已停止实例的详细监控。

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

**管理详细监控**

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

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

1. 选择实例。

1. 依次选择**操作**、**监控和故障排除**以及**管理详细监控**。

1. 在**详细监控**页面上，对于**详细监控**，执行以下操作之一：
   + 详细监控：选择**启用**。
   + 基本监控：清除**启用**。

1. 选择**确认**。

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

**启用详细监控**  
使用以下 [monitor-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/monitor-instances.html) 命令。

```
aws ec2 monitor-instances --instance-ids i-1234567890abcdef0
```

**禁用详细监控**  
使用 [unmonitor-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/unmonitor-instances.html) 命令。

```
aws ec2 unmonitor-instances --instance-ids i-1234567890abcdef0
```

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

**启用详细监控**  
使用 [Start-EC2InstanceMonitoring](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2InstanceMonitoring.html) cmdlet。

```
Start-EC2InstanceMonitoring -InstanceId i-1234567890abcdef0
```

**禁用详细监控**  
使用 [Stop-EC2InstanceMonitoring](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2InstanceMonitoring.html) cmdlet。

```
Stop-EC2InstanceMonitoring -InstanceId i-1234567890abcdef0
```

------

# 可用于实例的 CloudWatch 指标
CloudWatch 指标

Amazon EC2 将指标发送到 Amazon CloudWatch。可使用 AWS 管理控制台、AWS CLI 或 API 列出 Amazon EC2 发送到 CloudWatch 的指标。默认情况下，每个数据点中包含的是实例自启动后的 5 分钟内的活动。如果您启用了详细监控，则每个数据点包含自启动后的 1 分钟内的活动。请注意，对于统计数据 Minimum、Maximum 和 Average，EC2 提供的指标的最小粒度为 1 分钟。

有关如何使用 AWS 管理控制台或 AWS CLI 查看可用指标的信息，请参阅《Amazon CloudWatch 用户指南》**中的[查看可用的指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)。

有关获取这些指标的统计数据的信息，请参阅 [实例的 CloudWatch 指标的统计数据](monitoring_get_statistics.md)。

**Topics**
+ [

## 实例指标
](#ec2-cloudwatch-metrics)
+ [

## 加速器指标
](#accelerator-metrics)
+ [

## CPU 积分指标
](#cpu-credit-metrics)
+ [

## 专属主机指标
](#dh-metrics)
+ [

## 基于 Nitro 的实例的 Amazon EBS 指标
](#ebs-metrics-nitro)
+ [

## 状态检查指标
](#status-check-metrics)
+ [

## 流量镜像指标
](#traffic-mirroring-metrics)
+ [

## 自动扩缩组指标
](#autoscaling-metrics)
+ [

## Amazon EC2 指标维度
](#ec2-cloudwatch-dimensions)
+ [

## Amazon EC2 使用情况指标
](#service-quota-metrics)

## 实例指标


`AWS/EC2` 命名空间包括以下实例指标。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
| CPUUtilization |  Amazon EC2 用于运行 EC2 实例的物理 CPU 时间的百分比，包括运行用户代码和 Amazon EC2 代码所花费的时间。 在很高的级别上，`CPUUtilization` 是 guest `CPUUtilization` 和 hypervisor `CPUUtilization` 的总和。 由于旧设备模拟、非旧设备配置、中断密集型工作负载、实时迁移和实时更新等因素，操作系统中的工具显示的百分比可能与 CloudWatch 不同。  |  Percent  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| DiskReadOps |  在指定时间段内从可供实例使用的所有实例存储卷完成的读取操作数。 要计算该周期的每秒平均 I/O 操作数 (IOPS)，请将该周期的总操作数除以总秒数。 如果没有实例存储卷，则值为 0 或不报告指标。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| DiskWriteOps |  在指定时间段内向可供实例使用的所有实例存储卷完成的写入操作数。 要计算该周期的每秒平均 I/O 操作数 (IOPS)，请将该周期的总操作数除以总秒数。 如果没有实例存储卷，则值为 0 或不报告指标。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| DiskReadBytes |  从可供实例使用的所有实例存储卷读取的字节数。 该指标用来确定应用程序从实例的硬盘读取的数据量。它可以用来确定应用程序的速度。 报告的数量是该期间内接收的字节数。如果您使用的是基本（5 分钟）监控，则可以将此数字除以 300 以获得字节/秒。如果您使用的是详细（1 分钟）监控，请将其除以 60。您也可以使用 CloudWatch 指标数学函数 `DIFF_TIME` 来查找每秒字节数。例如，如果您在 CloudWatch 中绘制 `DiskReadBytes` 为 `m1`，指标数学公式 `m1/(DIFF_TIME(m1))` 会返回以字节/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。 如果没有实例存储卷，则值为 0 或不报告指标。  |  Bytes  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| DiskWriteBytes |  向可供实例使用的所有实例存储卷写入的字节数。 该指标用来确定应用程序向实例的硬盘写入的数据量。它可以用来确定应用程序的速度。 报告的数量是该期间内接收的字节数。如果您使用的是基本（5 分钟）监控，则可以将此数字除以 300 以获得字节/秒。如果您使用的是详细（1 分钟）监控，请将其除以 60。您也可以使用 CloudWatch 指标数学函数 `DIFF_TIME` 来查找每秒字节数。例如，如果您在 CloudWatch 中绘制 `DiskWriteBytes` 为 `m1`，指标数学公式 `m1/(DIFF_TIME(m1))` 会返回以字节/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。 如果没有实例存储卷，则值为 0 或不报告指标。  |  Bytes  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| MetadataNoToken |  在没有令牌的情况下成功访问实例元数据服务（IMDS）的次数。 该指标用于确定是否有任何进程正在使用实例元数据服务版本 1（IMDSv1）访问实例元数据，但未使用令牌。如果所有请求都使用支持令牌的会话（即实例元数据服务版本 2（IMDSv2）），则该值为 0。有关更多信息，请参阅 [转换为使用 实例元数据服务版本 2](instance-metadata-transition-to-version-2.md)。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| MetadataNoTokenRejected |  在 IMDSv1 被禁用后尝试进行 IMDSv1 调用的次数。 如果出现此指标，则表示尝试了 IMDSv1 调用但被拒绝。您可以重新启用 IMDSv1，也可以确保所有调用都使用 IMDSv2。有关更多信息，请参阅 [转换为使用 实例元数据服务版本 2](instance-metadata-transition-to-version-2.md)。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| NetworkIn |  实例在所有网络接口上收到的字节数。此指标用于确定流向单个实例的传入网络流量。 报告的数量是该期间内接收的字节数。如果您使用的是基本（5 分钟）监控且统计数据为 Sum，则可以将此数字除以 300 以获得字节/秒。如果您使用的是详细（1 分钟）监控且统计数据为 Sum，请将其除以 60。  |  Bytes  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| NetworkOut |  实例在所有网络接口上发送的字节数。此指标用于确定来自单个实例的传出网络流量。 报告的数字是该时间段内发送的字节数。如果您使用的是基本（5 分钟）监控且统计数据为 Sum，则可以将此数字除以 300 以获得字节/秒。如果您使用的是详细（1 分钟）监控且统计数据为 Sum，请将其除以 60。  |  Bytes  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| NetworkPacketsIn |  实例在所有网络接口上收到的数据包数。此指标依据单个实例上的数据包数量来标识传入流量的量。 此指标仅可用于基本监控（5 分钟期间）。要计算实例 5 分钟内每秒收到的数据包数 (PPS)，请将 Sum 统计数据除以 300。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| NetworkPacketsOut |  实例在所有网络接口上发送的数据包数。此指标依据单个实例上的数据包数量标识传出流量的量。 此指标仅可用于基本监控（5 分钟期间）。要计算实例 5 分钟内每秒发送的数据包数（PPS），请将 Sum 统计数据除以 300。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

## 加速器指标


`AWS/EC2` 命名空间包括您的[加速型计算实例](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html)的以下加速器指标。仅在部分加速型计算实例类型中受支持。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
| GPUPowerUtilization | 有功功率使用量占最大有功功率的百分比。 | 百分比 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

## CPU 积分指标


`AWS/EC2` 命名空间包括 [可突增性能实例](burstable-performance-instances.md)的以下 CPU 积分指标。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
| CPUCreditUsage |  实例为保持 CPU 使用率而花费的 CPU 积分数。一个 CPU 积分等于一个 vCPU 按 100% 利用率运行一分钟，或者 vCPU、利用率和时间的等效组合（例如， 一个 vCPU 按 50% 利用率运行两分钟，或者两个 vCPU 按 25% 利用率运行两分钟）。 CPU 信用指标仅每 5 分钟提供一次。如果您指定一个大于五分钟的时间段，请使用`Sum` 统计数据，而非 `Average` 统计数据。  |  积分 (vCPU 分钟)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| CPUCreditBalance |  实例自启动后已累积获得的 CPU 积分数。对于 T2 标准，`CPUCreditBalance` 还包含已累积的启动积分数。 在获得积分后，积分将在积分余额中累积；在花费积分后，将从积分余额中扣除积分。积分余额具有最大值限制，这是由实例大小决定的。在达到限制后，将丢弃获得的任何新积分。对于 T2 标准，启动积分不计入限制。 实例可以花费 `CPUCreditBalance` 中的积分，以便突增到基准 CPU 使用率以上。 在实例运行过程中，`CPUCreditBalance` 中的积分不会过期。在 T3 或 T3a 实例停止时，`CPUCreditBalance` 值将保留七天。之后，所有累积的积分都将丢失。在 T2 实例停止时，`CPUCreditBalance` 值不会保留，并且所有累积的积分都将丢失。 CPU 信用指标仅每 5 分钟提供一次。  |  积分（vCPU 分钟）  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| CPUSurplusCreditBalance  |  在 `unlimited` 值为零时，`CPUCreditBalance` 实例花费的超额积分数。 `CPUSurplusCreditBalance` 值由获得的 CPU 积分支付。如果超额积分数超出实例可在 24 小时周期内获得的最大积分数，则超出最大积分数的已花费超额积分将产生额外费用。 CPU 信用指标仅每 5 分钟提供一次。  |  积分（vCPU 分钟）  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| CPUSurplusCreditsCharged |  未由获得的 CPU 积分支付并且会产生额外费用的已花费超额积分数。 在出现以下任一情况时，将对花费的超额积分收费： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html) CPU 信用指标仅每 5 分钟提供一次。  |  积分（vCPU 分钟）  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

## 专属主机指标


`AWS/EC2` 命名空间包括 T3 专属主机的下列指标。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
|  DedicatedHostCPUUtilization |  在专属主机上运行的实例当前正在使用的已分配计算容量的百分比。  |  Percent  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

## 基于 Nitro 的实例的 Amazon EBS 指标


`AWS/EC2` 命名空间包括所添加的卷的基于 Nitro 的实例（非裸机实例）的其他 Amazon EBS 指标。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
|  InstanceEBSIOPSExceededCheck  |  报告应用程序是否在最后一分钟内尝试驱动超过实例最大 EBS IOPS 限制的 IOPS。此指标可以是 `0`（未超过 IOPS），也可以是 `1`（已超过 IOPS）。  |  无  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  InstanceEBSThroughputExceededCheck  |  报告应用程序是否在最后一分钟内尝试驱动超过实例最大 EBS 吞吐量限制的吞吐量。此指标可以是 `0`（未超过吞吐量），也可以是 `1`（超出吞吐量）。  |  无  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  EBSReadOps |  在指定时间段内在挂载到实例的所有 Amazon EBS 卷中完成的读取操作数。 要计算该时间段的平均每秒读取 I/O 操作数（读取 IOPS），请将该时间段的总操作数除以秒数。如果使用基本（5 分钟）监控，您可以将该数字除以 300 以计算读取 IOPS。如果您使用的是详细（1 分钟）监控，请将其除以 60。您也可以使用 CloudWatch 指标数学函数 `DIFF_TIME` 来查找每秒操作数。例如，如果您在 CloudWatch 中绘制 `EBSReadOps` 为 `m1`，指标数学公式 `m1/(DIFF_TIME(m1))` 会返回以操作/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。  |  计数  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  EBSWriteOps  |  在指定时间段内在附加到实例的所有 EBS 卷中完成的写入操作数。 要计算该时间段的平均每秒写入 I/O 操作数（写入 IOPS），请将该时间段的总操作数除以秒数。如果使用基本（5 分钟）监控，您可以将该数字除以 300 以计算写入 IOPS。如果您使用的是详细（1 分钟）监控，请将其除以 60。您也可以使用 CloudWatch 指标数学函数 `DIFF_TIME` 来查找每秒操作数。例如，如果您在 CloudWatch 中绘制 `EBSWriteOps` 为 `m1`，指标数学公式 `m1/(DIFF_TIME(m1))` 会返回以操作/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。  |  计数  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  EBSReadBytes  |  在指定时间段内从附加到实例的所有 EBS 卷中读取的字节数。 报告的数字是在该时间段内读取的字节数。如果使用基本（5 分钟）监控，您可以将该数字除以 300 以计算每秒读取的字节数。如果您使用的是详细（1 分钟）监控，请将其除以 60。您也可以使用 CloudWatch 指标数学函数 `DIFF_TIME` 来查找每秒字节数。例如，如果您在 CloudWatch 中绘制 `EBSReadBytes` 为 `m1`，指标数学公式 `m1/(DIFF_TIME(m1))` 会返回以字节/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。  |  字节  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  EBSWriteBytes  |  在指定时间段内写入附加到实例的所有 EBS 卷的字节数。 报告的数字是在该时间段内写入的字节数。如果使用基本（5 分钟）监控，您可以将该数字除以 300 以计算每秒写入的字节数。如果您使用的是详细（1 分钟）监控，请将其除以 60。您也可以使用 CloudWatch 指标数学函数 `DIFF_TIME` 来查找每秒字节数。例如，如果您在 CloudWatch 中绘制 `EBSWriteBytes` 为 `m1`，指标数学公式 `m1/(DIFF_TIME(m1))` 会返回以字节/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。  |  字节  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  EBSIOBalance%  |  提供有关突增存储桶中剩余的 I/O 积分百分比的信息。此指标仅对基本监控可用。 此指标仅适用于某些 `*.4xlarge` 大小和更小的实例，这样的实例仅需 30 分钟便可突增到最高性能，且至少每 24 小时发生一次。 `Sum` 统计数据不适用于该指标。  |  百分比  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
|  EBSByteBalance%  |  提供有关突增存储桶中剩余的吞吐量积分百分比的信息。此指标仅对基本监控可用。 此指标仅适用于某些 `*.4xlarge` 大小和更小的实例，这样的实例仅需 30 分钟便可突增到最高性能，且至少每 24 小时发生一次。 `Sum` 统计数据不适用于该指标。  |  百分比  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

有关为 EBS 卷提供的指标的信息，请参阅《Amazon EBS 用户指南》**中的 [Amazon EBS 卷的指标](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html#ebs-volume-metrics)。有关为 EC2 实例集和竞价型实例集提供的指标的信息，请参阅[使用 CloudWatch 监控 EC2 实例集或竞价型实例集](ec2-fleet-cloudwatch-metrics.md)。

## 状态检查指标


默认情况下，状态检查指标可在 1 分钟的频率下免费提供。对于新启动的实例，状态检查指标数据仅在实例完成初始化状态之后（实例进入 `running` 状态的几分钟之内）提供。有关 EC2 状态检查的更多信息，请参阅[Amazon EC2 实例的状态检查](monitoring-system-instance-status-check.md)。

`AWS/EC2` 命名空间包括以下状态检查指标。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
| StatusCheckFailed |  报告实例在上一分钟内是否通过了所有系统状态检查。 此指标可以是 `0`（通过）或 `1`（失败）。 默认情况下，此指标可在 1 分钟的频率下免费提供。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| StatusCheckFailed\$1Instance |  报告实例在上个 1 分钟内是否通过了 实例状况检查。 此指标可以是 `0`（通过）或 `1`（失败）。 默认情况下，此指标可在 1 分钟的频率下免费提供。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| StatusCheckFailed\$1System |  报告实例在上一分钟内是否通过了 系统状况检查。 此指标可以是 `0`（通过）或 `1`（失败）。 默认情况下，此指标可在 1 分钟的频率下免费提供。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 
| StatusCheckFailed\$1AttachedEBS |  报告实例在上一分钟内是否通过了附加的 EBS 卷状态检查。 此指标可以是 `0`（通过）或 `1`（失败）。 默认情况下，此指标可在 1 分钟的频率下免费提供。  |  Count  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

`AWS/EBS` 命名空间包括以下状态检查指标。


| 指标 | 说明 | 单位 | 有意义的统计数据 | 
| --- | --- | --- | --- | 
| VolumeStalledIOCheck |  **注意：**仅适用于 Nitro 实例。对附加到 Amazon ECS 和 AWS Fargate 任务的卷未发布。 报告卷在最后一分钟是否通过*停滞的 IO 检查*。此指标可以是 `0`（通过）或 `1`（失败）。  |  无  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)  | 

## 流量镜像指标


`AWS/EC2` 命名空间包含镜像流量的指标。有关更多信息，请参阅《Amazon VPC Traffic Mirroring 指南》中的[使用 Amazon CloudWatch 监控镜像的流量](https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirror-cloudwatch.html)。

## 自动扩缩组指标


`AWS/AutoScaling` 命名空间包括 Auto Scaling 组的指标。有关更多信息，请参阅《Amazon EC2 Auto Scaling User Guide》**中的 [Monitor CloudWatch metrics for your Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-cloudwatch-monitoring.html)。

## Amazon EC2 指标维度


您可以使用以下维度来优化上表中列出的指标。


| 维度 | 描述 | 
| --- | --- | 
|  AutoScalingGroupName  |  该维度筛选您为指定容量组中的所有实例请求的数据。如果您使用 Auto Scaling，*Auto Scaling 组*就是您定义的实例集合。当实例在上述 Auto Scaling 组中时，该维度仅供 Amazon EC2 指标使用。可供启用了详细或基本监控的实例使用。  | 
|  ImageId  |  该维度筛选您为运行此 Amazon EC2 亚马逊机器映像（AMI）的所有实例而请求的数据。可供启用了详细监控功能的实例使用。  | 
|  InstanceId  |  该维度筛选您仅为已识别实例请求的数据。这样有助于您精确定位要对其监控数据的确切实例。  | 
|  InstanceType  |  该维度筛选您为以这一指定实例类型运行的所有实例请求的数据。这样有助于您按运行的实例类型给数据分类。例如，您可以比较 m1.small 实例和 m1.large 实例的数据，以确定哪一个对您的应用程序具有更好的商业价值。可供启用了详细监控功能的实例使用。  | 

## Amazon EC2 使用情况指标


您可以使用 CloudWatch 用量指标来提供账户资源使用情况的可见性。使用这些指标在 CloudWatch 图表和控制面板上可视化当前服务用量。

Amazon EC2 用量指标与 AWS 服务配额对应。您可以配置警报，以在用量接近服务配额时向您发出警报。有关 CloudWatch 与 Service Quotas 集成的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的 [AWS 使用情况指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Service-Quota-Integration.html)。

Amazon EC2 在 `AWS/Usage` 命名空间中发布以下指标。


| 指标 | 描述 | 
| --- | --- | 
| `ResourceCount` |  您账户中运行的指定资源的数量。资源由与指标关联的维度定义。 此指标最有用的统计数据是 `MAXIMUM`，这表示 1 分钟期间内使用的最大资源数。  | 

以下维度用于优化由 Amazon EC2 发布的用量指标。


| 维度 | 描述 | 
| --- | --- | 
|  Service  |  包含该资源的 AWS 服务的名称。对于 Amazon EC2 用量指标，此维度的值为 `EC2`。  | 
|  Type  |  正在报告的实体的类型。目前，Amazon EC2 用量指标的唯一有效值为 `Resource`。  | 
|  Resource  |  正在运行的资源的类型。目前，Amazon EC2 用量指标的唯一有效值是 `vCPU`，它返回有关正在运行的实例的信息。  | 
|  Class  |  所跟踪的资源的类。对于以 `vCPU` 作为 `Resource` 维度的值的 Amazon EC2 用量指标，有效值为 `Standard/OnDemand`、`F/OnDemand`、`G/OnDemand`、`Inf/OnDemand`、`P/OnDemand` 和 `X/OnDemand`。 此维度的值定义由该指标报告的实例类型的第一个字母。例如，`Standard/OnDemand` 返回有关类型以 A、C、D、H、I、M、R、T 和 Z 开头的所有正在运行的实例的信息，并且 `G/OnDemand` 返回有关类型以 G 开头的所有正在运行的实例的信息。  | 

# 使用 Amazon EC2 控制台安装和配置 CloudWatch 代理以添加其他指标
安装和配置 CloudWatch 代理


|  | 
| --- |
| 对于 Amazon EC2，使用 Amazon EC2 控制台安装和配置 CloudWatch 代理的功能为试用版，可能随时更改。 | 

默认情况下，Amazon CloudWatch 提供基本指标（例如 `CPUUtilization` 和 `NetworkIn`）用于监控 Amazon EC2 实例。要收集其他指标，您可以在 EC2 实例上安装 CloudWatch 代理，然后将该代理配置为发出所选指标。您可以使用 Amazon EC2 控制台执行此操作，而不必在每个 EC2 实例上手动安装和配置 CloudWatch 代理。

您可以使用 Amazon EC2 控制台在实例上安装 CloudWatch 代理以及配置代理以发出所选指标。

或者，要手动完成此过程，请参阅《Amazon CloudWatch 用户指南》**中的[安装 CloudWatch 代理](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html)。有关 CloudWatch 代理的更多信息，请参阅[使用 CloudWatch 代理采集指标、日志和跟踪数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)。

**Topics**
+ [

## 前提条件
](#install-and-configure-cw-agent-prerequisites)
+ [

## 工作原理
](#install-and-configure-cw-agent-how-it-works)
+ [

## 成本
](#install-and-configure-cw-agent-costs)
+ [

## 安装和配置 CloudWatch 代理
](#install-and-configure-cw-agent-procedure)

## 前提条件


要使用 Amazon EC2 安装和配置 CloudWatch 代理，您必须满足本节所述的用户和实例前提条件。

**提示**  
此功能并非在所有 AWS 区域 中都可用。如果 Amazon EC2 控制台中不存在本页安装过程中描述的菜单项，并且您可以灵活决定实例的运行位置，请尝试其他区域。否则，可以使用《Amazon CloudWatch 用户指南》**中的手动说明安装和配置代理。

**用户先决条件**  
要使用此功能，您的 IAM 控制台用户或角色必须具有使用 Amazon EC2 所需的权限以及下列 IAM 权限：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter",
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:*:*:parameter/EC2-Custom-Metrics-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand",
                "ssm:ListCommandInvocations",
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetInstanceProfile",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**实例先决条件**
+ 实例状态：`running`
+ 支持的操作系统：Linux
+ AWS Systems Manager Agent（SSM Agent）：已安装。关于 SSM Agent 的两个注意事项：
  + SSM Agent 预装在由 AWS 和受信任的第三方提供的一些亚马逊机器映像（AMI）上。有关支持的 AMI 和 SSM Agent 安装说明的信息，请参阅《*AWS Systems Manager 用户指南*》中的[预装了 SSM Agent 的亚马逊机器映像（AMI）](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html)。
  + 如果在使用 SSM Agent 时遇到问题，请参阅《*AWS Systems Manager 用户指南*》中的 [SSM Agent 故障排除](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)。
+ 实例的 IAM 权限：必须将以下 AWS 托管策略添加到附加到实例的 IAM 角色中：
  + [AmazonSSMManagedInstanceCore](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html) – 使实例能够使用 Systems Manager 安装和配置 CloudWatch 代理。
  + [CloudWatchAgentServerPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchAgentServerPolicy.html) – 使实例能够使用 CloudWatch 代理将数据写入 CloudWatch。

  有关如何为实例添加 IAM 权限的信息，请参阅《IAM 用户指南》**中的[使用实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。

## 工作原理


在使用 Amazon EC2 控制台安装和配置 CloudWatch 代理之前，必须确保 IAM 用户或角色以及要添加指标的实例满足某些先决条件。然后，可以使用 Amazon EC2 控制台在所选实例上安装和配置 CloudWatch 代理。

**首先满足[先决条件](#install-and-configure-cw-agent-prerequisites)**
+ **需要所需的 IAM 权限** – 开始之前，请确保控制台用户或角色具有使用此功能所需的 IAM 权限。
+ **实例** – 要使用该功能，EC2 实例必须是 Linux 实例，安装了 SSM Agent，具有所需的 IAM 权限并且正在运行。

**然后可以[使用该功能](#install-and-configure-cw-agent-procedure)**

1. **选择实例** – 在 Amazon EC2 控制台中，选择要在其上安装和配置 CloudWatch 代理的实例。然后，可以通过选择“**配置 CloudWatch 代理**”来开始该过程。

1. **验证 SSM Agent** – Amazon EC2 会检查每个实例上是否安装并启动了 SSM Agent。未通过此检查的任何实例都将从过程中排除。在此过程中，SSM Agent 用于对实例执行操作。

1. **验证 IAM 权限** – Amazon EC2 会检查每个实例是否具有此过程所需的 IAM 权限。未通过此检查的任何实例都将从过程中排除。IAM 权限使 CloudWatch 代理能够从实例收集指标并与AWS Systems Manager 集成以使用 SSM Agent。

1. **验证 CloudWatch 代理** – Amazon EC2 检查 CloudWatch 代理是否已安装并在每个实例上运行。如果任何实例未通过此检查，Amazon EC2 会主动为您安装和启动 CloudWatch 代理。此过程完成后，CloudWatch 代理将收集每个实例上的选定指标。

1. **选择指标配置** – 选择 CloudWatch 代理要从实例中发出的指标。选择后，Amazon EC2 会将配置文件存储在 Parameter Store 中，该文件将一直保留到过程完成。除非过程中断，否则 Amazon EC2 将从 Parameter Store 中删除配置文件。请注意，如果没有选择某指标，但之前已将其添加到实例中，则在此过程完成后，将从实例中删除该指标。

1. **更新 CloudWatch 代理配置** – Amazon EC2 将指标配置发送到 CloudWatch 代理。这是过程的最后一步。如果成功，则实例可以为所选指标发出数据，Amazon EC2 将从 Parameter Store 中删除配置文件。

## 成本


在此过程中添加的其他指标将作为自定义指标计费。有关 CloudWatch 指标定价的信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

## 安装和配置 CloudWatch 代理


可以使用 Amazon EC2 控制台来安装和配置 CloudWatch 代理，以添加其他指标。

**注意**  
每次执行此过程时，都将覆盖现有 CloudWatch 代理配置。如果没有选择之前选中的指标，则将从实例中删除该指标。

**使用 Amazon EC2 控制台安装和配置 CloudWatch 代理**

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

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

1. 选择要在其上安装和配置 CloudWatch 代理的实例。

1. 选择**操作**、**监控和故障排除**、**配置 CloudWatch 代理**。

1. 对于该过程中的每个步骤，请阅读控制台文本，然后选择**下一步**。

1. 要完成该过程，请在最后一步中选择**完成**。

**更新 Amazon EC2 控制台创建的代理配置**  
您可以手动自定义 EC2 控制台创建的配置。有关更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[手动创建或编辑 CloudWatch 代理配置文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)。

# 实例的 CloudWatch 指标的统计数据
指标的统计数据

您可以获取有关实例的 CloudWatch 指标的统计信息。*统计数据*是指定时间段内的指标数据汇总。CloudWatch 提供统计数据的依据是您的自定义数据所提供的指标数据点，或其他 AWS 服务向 CloudWatch 提供的指标数据点。聚合通过使用命名空间、指标名称、维度以及数据点度量单位在您指定的时间段内完成。下表介绍了可用的统计信息。


| 统计数据 | 描述 | 
| --- | --- | 
| Minimum |  指定时间段内的最低观察值。可以使用此值来决定应用程序的活动量是否较低。  | 
| Maximum |  指定时间段内的最高观察值。可以使用此值来决定应用程序的活动量是否较高。  | 
| Sum |  为匹配指标所提交的所有的值添加在一起。此统计信息的作用是决定指标的总量。  | 
| Average |  指定时间段内 `Sum` / `SampleCount` 的值。通过将此统计信息与 `Minimum` 和 `Maximum` 进行比较，可以决定指标的完整范围以及平均使用率与 `Minimum` 和 `Maximum` 的接近程度。这样的比较可以帮助了解何时应该根据需要增加或减少资源。  | 
| SampleCount |  数据点计数 (数量) 用于统计信息的计算。  | 
| pNN.NN |  指定的百分位数的值。您可以指定任何百分位数，最多使用两位小数 (例如 p95.45)。  | 

**Topics**
+ [

# 获取特定实例的统计数据
](US_SingleMetricPerInstance.md)
+ [

# 聚合不同实例的统计数据
](GetSingleMetricAllDimensions.md)
+ [

# 按 Auto Scaling 组聚合统计数据
](GetMetricAutoScalingGroup.md)
+ [

# 按 AMI 聚合统计数据
](US_SingleMetricPerAMI.md)

# 获取特定实例的统计数据


您可以使用 AWS 管理控制台或 AWS CLI 来获取特定实例的统计数据。以下示例显示了如何使用 AWS 管理控制台 或 AWS CLI 来确定特定 EC2 实例的最大 CPU 利用率。

**要求**
+ 您必须拥有实例的 ID。可使用 AWS 管理控制台 或 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令获取实例 ID。
+ 默认情况下，基本监控已启用，但您可以启用详细监控。有关更多信息，请参阅 [管理 EC2 实例的详细监控](manage-detailed-monitoring.md)。

**显示指定实例的 CPU 利用率（控制台）**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**指标**。

1. 选择 **EC2** 指标命名空间。

1. 选择 **Per-Instance Metrics (每个实例的指标)** 维度。

1. 在搜索框中，输入 **CPUUtilization** 并按 Enter。选择特定实例所在的行，这将显示该实例的 **CPUUtilization** 指标的图表。要为该图标命名，请选择铅笔图标。要更改时间范围，请选择某个预定义的值或选择 **custom**。  
![\[绘制单个指标的图表\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/metric_statistics_ec2_instance.png)

1. 要更改指标的统计数据或时间段，请选择 **Graphed metrics** 选项卡。选择列标题或单个值，然后选择其他值。  
![\[更改指标的统计数据或时段\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/metric_statistics_ec2_instance_statistic_period.png)

**获取特定实例的 CPU 利用率 (AWS CLI)**  
使用以下 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 命令获取指定实例的 **CPUUtilization** 指标（使用指定周期和时间间隔）：

```
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization  --period 3600 \
--statistics Maximum --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2022-10-18T23:18:00 --end-time 2022-10-19T23:18:00
```

下面是示例输出。每个数值代表一个 EC2 实例的最大 CPU 使用率百分比。

```
{
    "Datapoints": [
        {
            "Timestamp": "2022-10-19T00:18:00Z", 
            "Maximum": 0.33000000000000002, 
            "Unit": "Percent"
        }, 
        {
            "Timestamp": "2022-10-19T03:18:00Z", 
            "Maximum": 99.670000000000002, 
            "Unit": "Percent"
        }, 
        {
            "Timestamp": "2022-10-19T07:18:00Z", 
            "Maximum": 0.34000000000000002, 
            "Unit": "Percent"
        }, 
        {
            "Timestamp": "2022-10-19T12:18:00Z", 
            "Maximum": 0.34000000000000002, 
            "Unit": "Percent"
        }
    ], 
    "Label": "CPUUtilization"
}
```

# 聚合不同实例的统计数据


聚合统计信息适用于已经启用详细监控的实例。聚合中不包含使用基本监控的实例。在获取多实例聚合统计数据前，必须[启用详细监控](manage-detailed-monitoring.md#enable-detailed-monitoring)（另外收费），以提供以 1 分钟为间隔的数据。

请注意，Amazon CloudWatch 不能跨各个 AWS 区域聚合数据。指标在各区域间彼此独立。

此示例显示了如何使用详细监控来获取 EC2 实例的平均 CPU 使用率。因为未指定任何维度，所以 CloudWatch 会返回 `AWS/EC2` 命名空间中所有维度的统计数据。

**重要**  
此方法可以在 AWS 命名空间中检索所有维度，但不适用于发布到 Amazon CloudWatch 的自定义命名空间。对于自定义命名空间，必须指定与任意给定数据关联的完整的维度组，以检索包含数据点的统计数据。

**显示实例的平均 CPU 利用率（控制台）**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**指标**。

1. 选择 **EC2** 命名空间，然后选择 **Across All Instances (跨所有实例)**。

1. 选择包含 **CPUUtilization** 的行，这将显示所有 EC2 实例的指标的图表。要为该图标命名，请选择铅笔图标。要更改时间范围，请选择某个预定义的值或选择 **custom**。  
![\[跨您的 EC2 实例聚合的指标\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/metric_aggregated_instances.png)

1. 要更改指标的统计数据或时间段，请选择 **Graphed metrics** 选项卡。选择列标题或单个值，然后选择其他值。

**获取实例的平均 CPU 利用率 (AWS CLI)**  
使用 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 命令 (如下所示) 获取实例的平均 **CPUUtilization** 指标。

```
aws cloudwatch get-metric-statistics \
    --namespace AWS/EC2 \
    --metric-name CPUUtilization \ 
    --period 3600  --statistics "Average" "SampleCount" \ 
    --start-time 2022-10-11T23:18:00 \
    --end-time 2022-10-12T23:18:00
```

下面是示例输出：

```
{
    "Datapoints": [
        {
            "SampleCount": 238.0, 
            "Timestamp": "2022-10-12T07:18:00Z", 
            "Average": 0.038235294117647062, 
            "Unit": "Percent"
        }, 
        {
            "SampleCount": 240.0, 
            "Timestamp": "2022-10-12T09:18:00Z", 
            "Average": 0.16670833333333332, 
            "Unit": "Percent"
        }, 
        {
            "SampleCount": 238.0, 
            "Timestamp": "2022-10-11T23:18:00Z", 
            "Average": 0.041596638655462197, 
            "Unit": "Percent"
        }
    ], 
    "Label": "CPUUtilization"
}
```

# 按 Auto Scaling 组聚合统计数据


您可以聚合 Auto Scaling 组中 EC2 实例的统计数据。请注意，Amazon CloudWatch 不能跨各个 AWS 区域聚合数据。指标在各区域间彼此独立。

此示例说明如何检索为一个 Auto Scaling 组写入磁盘的字节总数。总数以 1 分钟为周期 24 小时为间隔针对指定 Auto Scaling 组中的所有 EC2 实例计算得出。

**显示一个 Auto Scaling 组中的实例的 DiskWriteBytes（控制台）**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**指标**。

1. 选择 **EC2** 命名空间，然后选择 **By Auto Scaling Group**。

1. 选择 **DiskWriteBytes** 指标和特定 Auto Scaling 组所在的行，这将显示 Auto Scaling 组中实例的指标的图表。要为该图标命名，请选择铅笔图标。要更改时间范围，请选择某个预定义的值或选择 **custom**。

1. 要更改指标的统计数据或时间段，请选择 **Graphed metrics** 选项卡。选择列标题或单个值，然后选择其他值。

**显示一个 Auto Scaling 组中的实例的 DiskWriteBytes（AWS CLI）**  
使用 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 命令，如下所示。

```
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name DiskWriteBytes --period 360 \
--statistics "Sum" "SampleCount" --dimensions Name=AutoScalingGroupName,Value=my-asg --start-time 2022-10-16T23:18:00 --end-time 2022-10-18T23:18:00
```

下面是示例输出：

```
{
    "Datapoints": [
        {
            "SampleCount": 18.0, 
            "Timestamp": "2022-10-19T21:36:00Z", 
            "Sum": 0.0, 
            "Unit": "Bytes"
        }, 
        {
            "SampleCount": 5.0, 
            "Timestamp": "2022-10-19T21:42:00Z", 
            "Sum": 0.0, 
            "Unit": "Bytes"
        }
    ], 
    "Label": "DiskWriteBytes"
}
```

# 按 AMI 聚合统计数据


您可以通过 AMI 聚合已启用详细监控的实例的统计数据。聚合中不包含使用基本监控的实例。在获取多实例聚合统计数据前，必须[启用详细监控](manage-detailed-monitoring.md#enable-detailed-monitoring)（另外收费），以提供以 1 分钟为间隔的数据。

请注意，Amazon CloudWatch 不能跨各个 AWS 区域聚合数据。指标在各区域间彼此独立。

此示例显示了如何确定使用特定亚马逊机器映像（AMI）的所有实例的平均 CPU 使用率。平均值以 60 秒为时间间隔 1 天为周期。

**按 AMI 显示平均 CPU 利用率（控制台）**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**指标**。

1. 选择 **EC2** 命名空间，然后选择 **By Image (AMI) Id**。

1. 选择 **CPUUtilization** 指标和特定 AMI 所在的行，这将显示指定 AMI 的指标的图表。要为该图标命名，请选择铅笔图标。要更改时间范围，请选择某个预定义的值或选择 **custom**。

1. 要更改指标的统计数据或时间段，请选择 **Graphed metrics** 选项卡。选择列标题或单个值，然后选择其他值。

**获取某个映像 ID 的平均 CPU 利用率 (AWS CLI)**  
使用 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 命令，如下所示。

```
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization  --period 3600 \
--statistics Average --dimensions Name=ImageId,Value=ami-3c47a355 --start-time 2022-10-10T00:00:00 --end-time 2022-10-11T00:00:00
```

下面是示例输出。每个数值代表运行指定 AMI 的 EC2 实例的平均 CPU 使用率百分比。

```
{
    "Datapoints": [
        {
            "Timestamp": "2022-10-10T07:00:00Z", 
            "Average": 0.041000000000000009, 
            "Unit": "Percent"
        }, 
        {
            "Timestamp": "2022-10-10T14:00:00Z", 
            "Average": 0.079579831932773085, 
            "Unit": "Percent"
        }, 
        {
            "Timestamp": "2022-10-10T06:00:00Z", 
            "Average": 0.036000000000000011, 
            "Unit": "Percent"
        }
    ], 
    "Label": "CPUUtilization"
}
```

# 查看实例的监控图形
查看监控图表

在您启动实例后，可以打开 Amazon EC2 控制台并在 **Monitoring**（监控）选项卡上查看实例的监控图表。每个图表以一个可用的 Amazon EC2 指标为基础。

可供使用图形如下：
+ CPU 平均使用率 (%)
+ 平均读磁盘数 (字节)
+ 平均写磁盘数 (字节)
+ 最大网络输入 (字节)
+ 最大网络输出 (字节)
+ 读磁盘操作概括 (计数)
+ 写磁盘操作概括 (计数)
+ 状态概括 (任意)
+ 实例状态概括 (计数)
+ 系统状态概括 (计数)

有关指标及其向图表提供的数据的更多信息，请参阅 [可用于实例的 CloudWatch 指标](viewing_metrics_with_cloudwatch.md)。

**使用 CloudWatch 控制台绘制指标图标**  
您还可以使用 CloudWatch 控制台将 Amazon EC2 和其他 AWS 服务生成的指标数据绘制成图表。有关更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[绘制指标图表](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph_metrics.html)。

# 为实例创建 CloudWatch 警报
创建警报

您可以创建 CloudWatch 警报来监控您的任一实例的 CloudWatch 指标。当该指标达到指定阈值时，CloudWatch 自动向您发送通知。您可以使用 Amazon EC2 控制台创建 CloudWatch 警报，或者使用 CloudWatch 控制台提供的更多高级选项。

**使用 CloudWatch 控制台创建警报**  
有关示例，请参阅*Amazon CloudWatch 用户指南*中的[创建 Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

**使用 Amazon EC2 控制台创建警报**

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

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

1. 选择所需实例，然后依次选择 **Actions**（操作）、**Monitor and troubleshoot**（监控和问题排查）、**Manage CloudWatch alarms**（管理 CloudWatch 警报）。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）详细信息页面中的 **Add or edit alarm**（添加或编辑警报）下，选择 **Create an alarm**（创建警报）。

1. 对于**警报通知**，选择是否配置 Amazon Simple Notification Service（Amazon SNS）通知。输入现有 Amazon SNS 主题或输入名称来创建新主题。

1. 对于**警报操作**，选择是否指定触发警报时要执行的操作。从列表中选择操作。

1. 对于**警报阈值**，选择警报的指标和条件。例如，要创建一个当 CPU 利用率在 5 分钟内达到 80% 时触发的警报，请执行以下操作：

   1. 为**样本分组依据**（**平均**）和**要采样的数据类型**（**CPU 利用率**）保留默认设置。

   1. 对于**警报触发条件**，选择 **>=** 并输入 **0.80** 作为**百分比**。

   1. 对于**连续周期**，输入 **1** 并选择 **5 分钟**作为**周期**。

1. （可选）对于**样本指标数据**，选择**添加到控制面板**。

1. 选择**创建**。

您可以从 Amazon EC2 控制台或 CloudWatch 控制台编辑 CloudWatch 警报设置。如果要删除警报，可以从 CloudWatch 控制台执行此操作。有关更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[编辑或删除 CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Manage-CloudWatch-Alarm.html#Edit-CloudWatch-Alarm)。

# 创建停止、终止、重启或恢复实例的警报


利用 Amazon CloudWatch 警报操作，您可创建自动停止、终止、重启或恢复实例的警报。当不再需要某个实例运行时，您可使用停止或终止操作来帮助您节省资金。如果发生了系统损害，您可使用重启和恢复操作自动重启这些实例或将它们恢复到新硬件上。

**注意**  
有关 Amazon CloudWatch 告警账单和成本信息，请参阅《Amazon CloudWatch 用户指南》中的 [CloudWatch 账单和成本](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_billing.html)。**

`AWSServiceRoleForCloudWatchEvents` 服务相关角色使 AWS 能够代表您执行警报操作。当您首次在 AWS 管理控制台、AWS CLI 或 IAM API 中创建告警时，CloudWatch 会为您创建服务相关角色。

在许多情况下，您可能需要自动终止或停止实例。例如，您可能拥有专用于批工资单处理作业或科学计算任务的实例，这些实例在运行一段时间后就完成了其工作。与其让这些实例空闲 (并产生费用)，不如将其停止或终止以节省开支。使用停止警报操作和使用终止警报操作的主要区别在于，停止的实例在以后需要再次运行时，可以轻松地启动，并且可以保留相同的实例 ID 和根卷，而终止的实例则无法再启动。如此就必须启动一个新的实例。停止或终止实例后，实例存储卷上的数据将丢失。

您可以向为 Amazon EC2 每个实例指标设置的任何警报添加停止、终止、重启或恢复操作，这些指标包括 Amazon CloudWatch 提供的基本和详细监控指标（在 `AWS/EC2` 命名空间中），以及包含 `InstanceId` 维度的任何自定义指标，只要其值引用有效运行的 Amazon EC2 实例。

**重要**  
如果缺少指标数据点，状态检查警报可能会暂时进入 `INSUFFICIENT_DATA` 状态。尽管很少见，但当指标报告系统出现中断时，即使实例运行正常，也会发生这种情况。我们建议您将 `INSUFFICIENT_DATA` 状态视为数据丢失而不是警报违例，尤其是在配置警报以停止、终止、重启或恢复实例时。

**控制台支持**  
可使用 Amazon EC2 控制台或 CloudWatch 控制台创建警报。本文档中的过程使用 Amazon EC2 控制台。有关使用 CloudWatch 控制台的过程，请参阅《Amazon CloudWatch 用户指南》**中的[创建停止、终止、重新启动或恢复实例的告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/UsingAlarmActions.html)。

**权限**  
您必须拥有 `iam:CreateServiceLinkedRole` 才能创建或修改执行 EC2 告警操作的告警。服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务 委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**Topics**
+ [

## 在 Amazon CloudWatch 警报中添加停止操作
](#AddingStopActions)
+ [

## 在 Amazon CloudWatch 警报中添加终止操作
](#AddingTerminateActions)
+ [

## 在 Amazon CloudWatch 警报中添加重启操作
](#AddingRebootActions)
+ [

## 在 Amazon CloudWatch 警报中添加恢复操作
](#AddingRecoverActions)
+ [

# Amazon CloudWatch 警报操作场景
](AlarmActionScenarios.md)

## 在 Amazon CloudWatch 警报中添加停止操作


可以创建当达到一定阈值后停止 Amazon EC2 实例的警报。例如，您可能运行了开发或测试实例而偶尔忘记将其关闭。可以创建当平均 CPU 使用率低于 10% 达 24 小时时触发的警报，同时告知其为空闲并不再使用。可以根据需要调整阈值、持续时间和周期，还可以添加 Amazon Simple Notification Service (Amazon SNS) 通知，以便在触发警报后，您能够收到电子邮件。

可以停止或终止将 Amazon EBS 卷用作根卷的实例，但只能终止将实例存储用作根卷的实例。停止或终止实例后，实例存储卷上的数据将丢失。

**创建停止空闲实例的警报（Amazon EC2 控制台）**

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

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

1. 选择所需实例，然后依次选择 **Actions**（操作）、**Monitor and troubleshoot**（监控和问题排查）、**Manage CloudWatch alarms**（管理 CloudWatch 警报）。

   或者，您可以在 **Alarm status**（警报状态）列中选择加号 (![\[Plus sign.\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/add-plus.png))。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）页面上，执行以下操作：

   1. 选择 **Create an alarm**（创建警报）。

   1. 要在警报触发时接收电子邮件，对于 **Alarm notification**（警报通知），选择现有的 Amazon SNS 主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息，请参阅*Amazon Simple Notification Service 开发人员指南*中的[使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送](https://docs.aws.amazon.com/sns/latest/dg/sns-user-notifications.html)。

   1. 开启 **Alarm action**（警报操作），然后选择 **Stop**（停止）。

   1. 对于 **Group samples by**（样本分组方式）和 **Type of data to sample**（要采样的数据类型），选择统计数据和指标。在此示例中，选择 **Average**（平均值）和 **CPU utilization**（CPU 利用率）。

   1. 对于 **Alarm When**（警报时间）和 **Percent**（百分比），请指定指标阈值。在此示例中，请指定 **<=** 和 **10**%。

   1. 对于 **Consecutive period**（连续周期）和 **Period**（周期），请指定警报的评估周期。在此示例中，将 **1** 个连续周期指定为 **5 分钟**。

   1. Amazon CloudWatch 自动为您创建警报名称。要更改名称，请在 **Alarm name**（警报名称）中输入新名称。警报名称必须仅包含 ASCII 字符。
**注意**  
可以在创建警报前根据自己的要求调整警报配置，也可以在之后编辑配置。这包括指标、阈值、时长、操作和通知等设置。但是，警报创建后其名称无法再次编辑。

   1. 选择**创建**。

## 在 Amazon CloudWatch 警报中添加终止操作


可以创建当达到一定阈值时自动终止 EC2 实例的警报 (只要该实例未启用终止保护)。例如，某个实例已经完成工作，您不再需要此实例而想将其终止。如果可能在之后使用该实例，则应该选择停止而不是终止。终止实例后，实例存储卷上的数据将丢失。有关为实例启用和禁用终止保护的信息，请参阅 [更改实例终止保护](Using_ChangingDisableAPITermination.md)。

**创建终止空闲实例的警报（Amazon EC2 控制台）**

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

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

1. 选择所需实例，然后依次选择 **Actions**（操作）、**Monitor and troubleshoot**（监控和问题排查）、**Manage CloudWatch alarms**（管理 CloudWatch 警报）。

   或者，您可以在 **Alarm status**（警报状态）列中选择加号 (![\[Plus sign.\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/add-plus.png))。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）页面上，执行以下操作：

   1. 选择 **Create an alarm**（创建警报）。

   1. 要在警报触发时接收电子邮件，对于 **Alarm notification**（警报通知），选择现有的 Amazon SNS 主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息，请参阅*Amazon Simple Notification Service 开发人员指南*中的[使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送](https://docs.aws.amazon.com/sns/latest/dg/sns-user-notifications.html)。

   1. 开启 **Alarm action**（警报操作），然后选择 **Terminate**（终止）。

   1. 对于 **Group samples by**（样本分组方式）和 **Type of data to sample**（要采样的数据类型），选择统计数据和指标。在此示例中，选择 **Average**（平均值）和 **CPU utilization**（CPU 利用率）。

   1. 对于 **Alarm When**（警报时间）和 **Percent**（百分比），请指定指标阈值。在此示例中，请指定 **=>** 和 **10**%。

   1. 对于 **Consecutive period**（连续周期）和 **Period**（周期），请指定警报的评估周期。在此示例中，将 **24** 个连续周期指定为 **1 小时**。

   1. Amazon CloudWatch 自动为您创建警报名称。要更改名称，请在 **Alarm name**（警报名称）中输入新名称。警报名称必须仅包含 ASCII 字符。
**注意**  
可以在创建警报前根据自己的要求调整警报配置，也可以在之后编辑配置。这包括指标、阈值、时长、操作和通知等设置。但是，警报创建后其名称无法再次编辑。

   1. 选择**创建**。

## 在 Amazon CloudWatch 警报中添加重启操作


您可创建监控 Amazon EC2 实例并自动重启此实例的 Amazon CloudWatch 警报。在实例运行状况检查失败时，推荐重启警报操作（与恢复警报操作相反，该操作适合系统运行状况检查失败的情况）。实例重启相当于操作系统重启。在许多情况下，只需要几分钟时间即可重启您的实例。重启实例时，其仍驻留在相同的物理主机上，因此您的实例将保留其公有 DNS 名称、私有 IP 地址及其实例存储卷上的任何数据。

与停止并重新启动您的实例不同，重启实例不会启动新的实例计费周期（最低收取一分钟的费用）。重启实例后，实例存储卷上的数据会保留。重启后，必须将实例存储卷重新挂载到文件系统中。有关更多信息，请参阅 [重启 Amazon EC2 实例](ec2-instance-reboot.md)。

**重要**  
为了避免重启操作与恢复操作之间的竞争情况，请避免为重启警报和恢复警报设置相同的评估周期数。我们建议您将重启警报设置为 3 个 1 分钟的评估期。有关更多信息，请参阅 *Amazon CloudWatch 用户指南* 中的[评估警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation)。

**创建重启实例的警报（Amazon EC2 控制台）**

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

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

1. 选择所需实例，然后依次选择 **Actions**（操作）、**Monitor and troubleshoot**（监控和问题排查）、**Manage CloudWatch alarms**（管理 CloudWatch 警报）。

   或者，您可以在 **Alarm status**（警报状态）列中选择加号 (![\[Plus sign.\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/add-plus.png))。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）页面上，执行以下操作：

   1. 选择 **Create an alarm**（创建警报）。

   1. 要在警报触发时接收电子邮件，对于 **Alarm notification**（警报通知），选择现有的 Amazon SNS 主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息，请参阅*Amazon Simple Notification Service 开发人员指南*中的[使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送](https://docs.aws.amazon.com/sns/latest/dg/sns-user-notifications.html)。

   1. 开启 **Alarm action**（警报操作），然后选择 **Reboot**（重启）。

   1. 对于 **Group samples by**（样本分组方式）和 **Type of data to sample**（要采样的数据类型），选择统计数据和指标。在此示例中，选择 **Average**（平均值）和 **Status check failed: instance**（状态检查失败：实例）。

   1. 对于 **Consecutive period**（连续周期）和 **Period**（周期），请指定警报的评估周期。在此示例中，输入 **3** 个 **1 分钟**的连续周期。如果**禁用 1 分钟**，则必须[启用详细监控](manage-detailed-monitoring.md#enable-detailed-monitoring)，您也可以选择 **5 分钟**。

   1. Amazon CloudWatch 自动为您创建警报名称。要更改名称，请在 **Alarm name**（警报名称）中输入新名称。警报名称必须仅包含 ASCII 字符。

   1. 选择**创建**。

## 在 Amazon CloudWatch 警报中添加恢复操作


您可以创建 Amazon CloudWatch 警报来监控 Amazon EC2 实例。如果实例因需要 AWS 参与才能修复的基础硬件故障或问题而受损，您可自动恢复实例。无法恢复终止的实例。恢复的实例与原始实例相同，包括实例 ID、私有 IP 地址、弹性 IP 地址以及所有实例元数据。

CloudWatch 会阻止您将恢复操作添加到位于不支持恢复操作的实例上的警报。

当 `StatusCheckFailed_System` 警报触发且恢复操作启动时，您在创建警报及相关恢复操作时所选择的 Amazon SNS 主题将向您发出通知。在实例恢复过程中，实例将在重启时迁移，并且内存中的所有数据都将丢失。当该过程完成后，会向您已配置警报的 SNS 主题发布信息。任何订阅此 SNS 主题的用户都将收到一封电子邮件通知，其中包括恢复尝试的状态以及任何进一步的指示。您将注意到，实例会在已恢复的实例上重启。

**注意**  
恢复操作仅适用于 `StatusCheckFailed_System`，而不能用于 `StatusCheckFailed_Instance`。

下列问题可能导致系统状态检查失败：
+ 网络连接丢失
+ 系统电源损耗
+ 物理主机上的软件问题
+ 物理主机上影响到网络连接状态的硬件问题

仅具有以下特性的实例支持恢复操作。有关更多信息，请参阅 [实例自动恢复](ec2-instance-recover.md)。

如果您的实例具有公有 IP 地址，它会在恢复后保留公有 IP 地址。

**重要**  
为了避免重启操作与恢复操作之间的竞争情况，请避免为重启警报和恢复警报设置相同的评估周期数。我们建议您将恢复警报设置为 2 个 1 分钟的评估期。有关更多信息，请参阅 *Amazon CloudWatch 用户指南* 中的[评估警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation)。

**创建恢复实例的警报（Amazon EC2 控制台）**

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

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

1. 选择所需实例，然后依次选择 **Actions**（操作）、**Monitor and troubleshoot**（监控和问题排查）、**Manage CloudWatch alarms**（管理 CloudWatch 警报）。

   或者，您可以在 **Alarm status**（警报状态）列中选择加号 (![\[Plus sign.\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/add-plus.png))。

1. 在 **Manage CloudWatch alarms**（管理 CloudWatch 警报）页面上，执行以下操作：

   1. 选择 **Create an alarm**（创建警报）。

   1. 要在警报触发时接收电子邮件，对于 **Alarm notification**（警报通知），选择现有的 Amazon SNS 主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息，请参阅*Amazon Simple Notification Service 开发人员指南*中的[使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送](https://docs.aws.amazon.com/sns/latest/dg/sns-user-notifications.html)。
**注意**  
用户必须订阅指定的 SNS 主题才能在触发警报时收到电子邮件通知。执行实例自动恢复操作时，AWS 账户根用户 始终会收到电子邮件通知，即使未指定 SNS 主题或者根用户未订阅指定 SNS 主题也是如此。

   1. 开启 **Alarm action**（警报操作），然后选择 **Recover**（恢复）。

   1. 对于 **Group samples by**（样本分组方式）和 **Type of data to sample**（要采样的数据类型），选择统计数据和指标。在此示例中，选择 **Average**（平均值）和 **Status check failed: system**（状态检查失败：系统）。

   1. 对于 **Consecutive period**（连续周期）和 **Period**（周期），请指定警报的评估周期。在此示例中，输入 **2** 个 **1 分钟**的连续周期。如果**禁用 1 分钟**，则必须[启用详细监控](manage-detailed-monitoring.md#enable-detailed-monitoring)，您也可以选择 **5 分钟**。

   1. Amazon CloudWatch 自动为您创建警报名称。要更改名称，请在 **Alarm name**（警报名称）中输入新名称。警报名称必须仅包含 ASCII 字符。

   1. 选择**创建**。

# Amazon CloudWatch 警报操作场景


可以使用 Amazon EC2 控制台创建当满足一定条件时停止或终止 Amazon EC2 实例的警报操作。在下方的控制台页面屏幕截图中，您设置了警报操作，我们对设置进行了编号。我们还对后续场景中的设置进行了编号，帮助您创建合适的操作。

![\[管理 Cloudwatch 警报页面。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/manage-cloudwatch-alarms.png)


## 场景 1：停止空闲开发和测试实例


创建当用于软件开发或测试的实例空闲达到至少 1 小时时停止该实例的警报。


| 设置 | 值 | 
| --- | --- | 
|  1  |  停止  | 
|  2  |  最高  | 
|  3  |  CPU 利用率  | 
|  4  |  <=  | 
|  5  |  10%  | 
|  6  |  1  | 
|  7  |  1 小时  | 

## 场景 2：停止空闲实例


创建一个当实例空闲达到 24 小时时停止该实例并发送电子邮件的警报。


| 设置 | 值 | 
| --- | --- | 
|  1  |  停止并发送电子邮件  | 
|  2  |  平均值  | 
|  3  |  CPU 利用率  | 
|  4  |  <=  | 
|  5  |  5%  | 
|  6  |  24  | 
|  7  |  1 小时  | 

## 场景 3：发送有关出现异常高流量的 Web 服务器的电子邮件


创建一个当实例的出站网络流量每天超过 10 GB 时发送电子邮件的警报。


| 设置 | 值 | 
| --- | --- | 
|  1  |  电子邮件  | 
|  2  |  总计  | 
|  3  |  网络输出  | 
|  4  |  >  | 
|  5  |  10GB  | 
|  6  |  24  | 
|  7  |  1 小时  | 

## 场景 4：停止出现异常高流量的 Web 服务器


创建当出站流量超过每小时 1 GB 时停止实例并发送短消息 (SMS) 的警报。


| 设置 | 值 | 
| --- | --- | 
|  1  |  停止并发送短消息  | 
|  2  |  总计  | 
|  3  |  网络输出  | 
|  4  |  >  | 
|  5  |  1GB  | 
|  6  |  1  | 
|  7  |  1 小时  | 

## 场景 5：停止受损的实例


创建当实例连续 3 次状态检查 (每隔 5 分钟执行一次) 皆为故障时将其停止的警报。


| 设置 | 值 | 
| --- | --- | 
|  1  |  停止  | 
|  2  |  平均值  | 
|  3  |  状态检查失败：系统  | 
|  4  |  -  | 
|  5  |  -  | 
|  6  |  1  | 
|  7  |  15 分钟  | 

## 场景 6：在批处理作业完成时终止实例


创建当实例不再发送结果数据时终止运行批处理作业的实例的警报。


| 设置 | 值 | 
| --- | --- | 
|  1  |  终止  | 
|  2  |  最高  | 
|  3  |  网络输出  | 
|  4  |  <=  | 
|  5  |  100000 字节  | 
|  6  |  1  | 
|  7  |  5 分钟  | 

# 使用 EventBridge 自动执行 Amazon EC2
使用 EventBridge 自动执行

您可以使用 Amazon EventBridge 自动执行您的 AWS 服务 和自动响应系统事件，例如应用程序可用性问题或资源更改。AWS 服务中的事件将近乎实时传输到 EventBridge。您可以创建规则来指示要关注的事件，以及在事件匹配规则时要执行的操作。可自动触发的操作包括：
+ 调用 AWS Lambda 函数
+ 调用 Amazon EC2 Run Command
+ 将事件中继到 Amazon Kinesis Data Streams
+ 激活 AWS Step Functions 状态机
+ 通知 Amazon SNS 主题
+ 通知 Amazon SQS 队列

以下示例说明如何将 EventBridge 与 Amazon EC2 结合使用：
+ 每当实例进入运行状态时激活 Lambda 函数。
+ 在创建或修改 Amazon EBS 卷时通知 Amazon SNS 主题。
+ 当另一个 AWS 服务中发生特定事件时，使用 Amazon EC2 Run Command 向一个或多个 Amazon EC2 实例发送命令。

有关更多信息，请参阅 [Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

## Amazon EC2 事件类型


Amazon EC2 支持以下事件类型：
+ [EC2 AMI 状态变化](monitor-ami-events.md#ami-events)
+ [EC2 快速启动状态更改通知](win-fast-launch-monitor.md#win-monitor-fast-launch-events)
+ [EC2 实例集错误](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-config-not-valid)
+ [EC2 实例集信息](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-info)
+ [EC2 实例集实例更改](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-instance-change)
+ [EC2 实例集竞价型实例请求更改](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-spot-instance-request-change)
+ [EC2 实例集状态更改](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-state-change)
+ [EC2 实例再平衡建议](rebalance-recommendations.md#cp-eventbridge)
+ [EC2 实例状态更改通知](monitoring-instance-state-changes.md)
+ [EC2 竞价型实例集错误](monitor-ec2-fleet-using-eventbridge.md#spot-fleet-config-not-valid)
+ [EC2 竞价型实例集信息](monitor-ec2-fleet-using-eventbridge.md#spot-fleet-info)
+ [EC2 竞价型实例集实例更改](monitor-ec2-fleet-using-eventbridge.md#spot-fleet-instance-change)
+ [EC2 竞价型实例集竞价型实例请求更改](monitor-ec2-fleet-using-eventbridge.md#spot-fleet-spot-instance-request-change)
+ [EC2 竞价型实例集状态更改](monitor-ec2-fleet-using-eventbridge.md#spot-fleet-state-change)
+ [EC2 竞价型实例中断警告](spot-instance-termination-notices.md#ec2-spot-instance-interruption-warning-event)
+ [EC2 竞价型实例请求履行](spot-request-status.md#spot-request-fulfillment-event)
+ [EC2 ODCR 利用不足通知](cr-eventbridge.md)

有关 Amazon EBS 支持的事件类型的信息，请参阅 [Amazon EventBridge for Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-cloud-watch-events.html)。

# 使用 AWS CloudTrail 记录 Amazon EC2 API 调用
使用 CloudTrail 记录 API 调用

Amazon EC2 API 与 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) 集成，后者是一项提供用户、角色或 AWS 服务所采取操作记录的服务。CloudTrail 将所有 Amazon EC2 API 调用作为事件捕获。捕获的调用包括控制台发出的调用。借助 CloudTrail 收集的信息，您可以确定向 Amazon EC2 API 发出的请求、发出请求的 IP 地址、发出请求的时间。

每个事件或日记账条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根用户凭证还是用户凭证发出的。
+ 请求是否代表 IAM Identity Center 用户发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务 发出。

当您创建账户并可以自动访问 CloudTrail **事件历史记录**时，CloudTrail 在您的 AWS 账户 中处于活动状态。CloudTrail **事件历史记录**提供对 AWS 区域 中过去 90 天的已记录管理事件的可查看、可搜索、可下载和不可变记录。有关更多信息，请参见《AWS CloudTrail 用户指南》的 [使用 CloudTrail 事件历史记录](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)**。查看**事件历史记录**不会收取 CloudTrail 费用。

要持续记录您的 AWS 账户 过去 90 天的事件，请创建跟踪或 [CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) 事件数据存储。

**CloudTrail 跟踪**  
通过*跟踪记录*，CloudTrail 可将日志文件传送至 Simple Storage Service (Amazon S3) 存储桶。使用 AWS 管理控制台 创建的所有跟踪均具有多区域属性。您可以通过使用 AWS CLI 创建单区域或多区域跟踪。建议创建多区域跟踪，因为您可记录您账户中的所有 AWS 区域 的活动。如果您创建单区域跟踪，则只能查看跟踪的 AWS 区域 中记录的事件。有关跟踪的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[为您的 AWS 账户 创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)和[为组织创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html)。  
通过创建跟踪，您可以从 CloudTrail 免费向您的 Amazon S3 存储桶传送一份正在进行的管理事件的副本，但会收取 Amazon S3 存储费用。有关 CloudTrail 定价的更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。有关 Amazon S3 定价的信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

**CloudTrail Lake 事件数据存储**  
*CloudTrail Lake* 允许您对事件运行基于 SQL 的查询。CloudTrail Lake 可将基于行的 JSON 格式的现有事件转换为 [Apache ORC](https://orc.apache.org/) 格式。ORC 是一种针对快速检索数据进行优化的列式存储格式。事件将被聚合到*事件数据存储*中，它是基于您通过应用[高级事件选择器](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors)选择的条件的不可变的事件集合。应用于事件数据存储的选择器用于控制哪些事件持续存在并可供您查询。有关 CloudTrail Lake 的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[使用 AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html)。  
CloudTrail Lake 事件数据存储和查询会产生费用。创建事件数据存储时，您可以选择要用于事件数据存储的[定价选项](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option)。定价选项决定了摄取和存储事件的成本，以及事件数据存储的默认和最长保留期。有关 CloudTrail 定价的更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

## CloudTrail 中的 Amazon EC2 API 管理事件


[管理事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)提供对您的 AWS 账户内资源所执行管理操作的相关信息。这些也称为控制层面操作。默认情况下，CloudTrail 会记录管理事件。

所有 Amazon EC2 API 操作都被记录为管理事件。有关记录到 CloudTrail 中的 API 操作的列表，请参阅《[Amazon EC2 API 参考](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/)》。例如，对 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)、[https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html) 和 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StopInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StopInstances.html) 操作的调用被记录为管理事件。

## Amazon EC2 API 事件示例


一个事件表示一个来自任何源的请求，包括有关所请求的 API 操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪，因此事件不会按任何特定顺序显示。

下面的日志文件记录显示，用户终止了一个实例。

```
{
   "Records":[
      {
         "eventVersion":"1.03",
         "userIdentity":{
            "type":"Root",
            "principalId":"123456789012",
            "arn":"arn:aws:iam::123456789012:root",
            "accountId":"123456789012",
            "accessKeyId":"AKIAIOSFODNN7EXAMPLE",
            "userName":"user"
         },
         "eventTime":"2016-05-20T08:27:45Z",
         "eventSource":"ec2.amazonaws.com",
         "eventName":"TerminateInstances",
         "awsRegion":"us-west-2",
         "sourceIPAddress":"198.51.100.1",
         "userAgent":"aws-cli/1.10.10 Python/2.7.9 Windows/7botocore/1.4.1",
         "requestParameters":{
            "instancesSet":{
               "items":[{
                  "instanceId":"i-1a2b3c4d"
               }]
            }
         },
         "responseElements":{
            "instancesSet":{
               "items":[{
                  "instanceId":"i-1a2b3c4d",
                  "currentState":{
                     "code":32,
                     "name":"shutting-down"
                  },
                  "previousState":{
                     "code":16,
                     "name":"running"
                  }
               }]
            }
         },
         "requestID":"be112233-1ba5-4ae0-8e2b-1c302EXAMPLE",
         "eventID":"6e12345-2a4e-417c-aa78-7594fEXAMPLE",
         "eventType":"AwsApiCall",
         "recipientAccountId":"123456789012"
     }
   ]
}
```

有关 CloudTrail 记录内容的信息，请参阅《AWS CloudTrail 用户指南》**中的 [CloudTrail 记录内容](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html)。

## 审核使用 EC2 Instance Connect 建立的连接


您可以使用 AWS CloudTrail 审核通过 EC2 Instance Connect 连接到实例的用户。

**使用 AWS CloudTrail 控制台审计通过 EC2 Instance Connect 的 SSH 活动**

1. 访问 [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/)，打开 CloudTrail 控制台。

1. 验证您是否位于正确的区域中。

1. 在导航窗格中，选择**事件历史记录**。

1. 对于**筛选条件**，请选择**事件源**，然后选择 **ec2-instance-connect.amazonaws.com**。

1. （可选）对于**时间范围**，请选择一个时间范围。

1. 选择**刷新事件**图标。

1. 该页面显示与 [https://docs.aws.amazon.com/ec2-instance-connect/latest/APIReference/API_SendSSHPublicKey.html](https://docs.aws.amazon.com/ec2-instance-connect/latest/APIReference/API_SendSSHPublicKey.html) API 调用对应的事件。使用箭头展开一个事件以查看其他详细信息，例如，用于建立 SSH 连接的用户名和 AWS 访问密钥以及源 IP 地址。

1. 要以 JSON 格式显示完整事件信息，请选择**查看事件**。**requestParameters** 字段包含用于建立 SSH 连接的目标实例 ID、操作系统用户名和公有密钥。

   ```
   {
       "eventVersion": "1.05",
       "userIdentity": {
           "type": "IAMUser",
           "principalId": "ABCDEFGONGNOMOOCB6XYTQEXAMPLE",
           "arn": "arn:aws:iam::1234567890120:user/IAM-friendly-name",
           "accountId": "123456789012",
           "accessKeyId": "ABCDEFGUKZHNAW4OSN2AEXAMPLE",
           "userName": "IAM-friendly-name",
           "sessionContext": {
               "attributes": {
                   "mfaAuthenticated": "false",
                   "creationDate": "2018-09-21T21:37:58Z"}
           }
       },
       "eventTime": "2018-09-21T21:38:00Z",
       "eventSource": "ec2-instance-connect.amazonaws.com",
       "eventName": "SendSSHPublicKey ",
       "awsRegion": "us-west-2",
       "sourceIPAddress": "123.456.789.012",
       "userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
       "requestParameters": {
           "instanceId": "i-0123456789EXAMPLE",
           "osUser": "ec2-user",
           "SSHKey": {
               "publicKey": "ssh-rsa ABCDEFGHIJKLMNO01234567890EXAMPLE"
           }
        },
       "responseElements": null,
       "requestID": "1a2s3d4f-bde6-11e8-a892-f7ec64543add",
       "eventID": "1a2w3d4r5-a88f-4e28-b3bf-30161f75be34",
       "eventType": "AwsApiCall",
       "recipientAccountId": "0987654321"
   }
   ```

   如果已将 AWS 账户配置为在 S3 存储桶中收集 CloudTrail 事件，您可以按编程方式下载和审计该信息。有关更多信息，请参阅《*AWS CloudTrail 用户指南*》中的[获取和查看 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/get-and-view-cloudtrail-log-files.html)。

# 使用 CloudWatch Application Insights 监控 .NET 和 SQL Server 应用程序
监控 .NET 和 SQL Server 应用程序

CloudWatch Application Insights 可帮助您监控使用 Amazon EC2 实例以及其他 [AWS 应用程序资源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/appinsights-what-is.html#appinsights-components)的 .NET 和 SQL Server 应用程序。该服务在应用程序资源和技术堆栈 [例如：Microsoft SQL Server 数据库、Web（IIS）和应用程序服务器、操作系统、负载均衡器以及队列] 中，指定并设置关键指标日志和警报。它持续监控指标和日志，以检测异常情况和错误并将它们关联起来。在检测到错误和异常情况时，Application Insights 会生成可用于设置通知或执行操作的事件。为了帮助进行故障排除，它为检测到的问题创建自动化控制面板，其中包括关联的指标异常情况和日志错误以及指出潜在根本原因的其他信息。自动化控制面板帮助您快速采取修复措施，以将应用程序保持正常运行并防止对应用程序的最终用户造成影响。

**为检测到的问题提供的相关信息：**
+ 问题的简短摘要
+ 问题的开始时间和日期
+ 问题严重性：高/中/低
+ 检测到的问题的状态：正在进行/已解决
+ 信息：自动生成有关检测到的问题和可能的根本原因的信息
+ 信息反馈：您为有关适用于 .NET 和 SQL Server 的 CloudWatch Application Insights 生成的信息是否有用提供的反馈
+ 相关的观察结果：与各种应用程序组件中的问题相关的指标异常情况和相关日志错误片段的详细视图

**反馈**  
您可以指定为检测到的问题自动生成的信息是否有用以提供反馈。将使用您对这些信息的反馈以及应用程序诊断（指标异常情况和日志异常情况）改进将来对类似问题的检测。

有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的 [CloudWatch Application Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html) 文档。

# 跟踪 Amazon EC2 免费套餐使用情况
跟踪您的免费套餐使用情况

创建 AWS 账户后，您可以通过 [AWS 免费套餐](https://aws.amazon.com/free)开始免费使用 Amazon EC2。根据您是在 2025 年 7 月 15 日之前创建的账户，还是在 2025 年 7 月 15 日当天或之后创建的账户，免费套餐权益会有所不同。有关更多信息，请参阅《AWS Billing User Guide》**中的 [Explore AWS services with AWS Free Tier](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/free-tier.html)。

## 2025 年 7 月 15 日之前和之后的免费套餐权益


下表根据您的 AWS 账户创建日期比较免费套餐权益：


| 免费套餐权益 | 2025 年 7 月 15 日之前创建的账户 | 2025 年 7 月 15 日当天或之后创建的账户 | 
| --- | --- | --- | 
| 标记为符合免费套餐资格的实例类型 |  `t2.micro`, `t3.micro`  |  `t3.micro`, `t3.small`, `t4g.micro`, `t4g.small`, `c7i-flex.large`, `m7i-flex.large`  | 
| 标记为符合免费套餐资格的 Amazon EBS 卷类型 |  `standard`、`st1``sc1`、`gp2`、和 `gp3`  |  `standard`、`st1``sc1`、`gp2`、和 `gp3`  | 
| 标记为符合免费套餐资格的 AMI | 检查标记为符合免费套餐资格的 AMI。 | 检查标记为符合免费套餐资格的 AMI。 | 
| 使用量限制 | 有使用量限制，超出之后按实际使用量付费。 |  获得 100 美元的注册服务抵扣金，并可赚取最高 100 美元的额外服务抵扣金。  | 
| 免费套餐时长 | 您的免费套餐自账户创建之日起有效期为 12 个月。在此期间，如果超出免费套餐的使用量限制，将按实际使用量付费。 | 您的免费套餐自账户创建之日起有效期为 6 个月，或直到服务抵扣金用完为止，以先发生者为准。您不能超出免费套餐限制。 | 

**列出符合免费套餐资格的实例类型**  
使用 [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) 命令和 `free-tier-eligible` 筛选条件。

```
aws ec2 describe-instance-types \
    --filters Name=free-tier-eligible,Values=true \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```

**列出符合免费套餐资格的 AMI**  
使用 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令和 `free-tier-eligible` 筛选条件。

```
aws ec2 describe-images \
    --filters Name=free-tier-eligible,Values=true \
    --query "Images[*].[ImageId]" \
    --output text | sort
```

## 跟踪 2025 年 7 月 15 日之前创建账户的免费套餐使用情况


**注意**  
***本部分仅适用于在 2025 年 7 月 15 日之前创建 AWS 账户的免费套餐用户。如果您在 2025 年 7 月 15 日当天或之后创建账户，请参阅《AWS Billing User Guide》中的 [Tracking your AWS Free Tier usage](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/tracking-free-tier-usage.html)。***

如果您是在 2025 年 7 月 15 日之前创建的账户，成为 AWS 客户未满 12 个月，且未超出 AWS Free Tier使用限制，则可以使用 Amazon EC2，而无需支付任何费用。请务必跟踪您的免费套餐使用情况，以防止账单意外超限。如果超出免费套餐限制，则您需要按标准的即用即付费率付费。有关更多信息，请参阅 [AWS Free Tier](https://aws.amazon.com/free/)。

**注意**  
如果您成为 AWS 客户超过 12 个月，则将不再符合免费套餐使用条件，并且看不到如下过程中描述的 **EC2 免费套餐**方框。

**要跟踪您的免费套餐使用情况**

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

1. 在导航窗格中，选择 **EC2 控制面板**。

1. 找到（右上角的）**EC2 免费套餐**方框。  
![\[EC2 控制面板中的“EC2 免费套餐”方框。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ec2-free-tier-widget.png)

1. 在 **EC2 免费套餐**方框中，选中您的免费套餐使用情况，如下所示：
   + 在**正在使用的 EC2 免费套餐服务**下方，注意以下警告：
     + **月末预测** – 此警告表明，如果您继续当前的使用模式，本月将产生费用。
     + **超出免费套餐** – 此警告表明您已超出免费套餐限制，并且已经产生费用。
   + 在**服务使用情况（每月）**下方，注意您的 Linux 实例、Windows 实例和 EBS 存储空间的使用情况。此百分比表示您本月已使用的数量在免费套餐限制中所占的比重。如果达到 100%，您需要为进一步的使用支付费用。
**注意**  
只有当您创建一个实例之后，才会显示这些信息。不过，使用情况信息不会实时更新，而是每天更新三次。

1. 为避免产生更多费用，请删除所有正在产生费用或者在您超出免费套餐限制使用量之后将会产生费用的资源。
   + 有关删除实例的说明，请参阅 [终止 Amazon EC2 实例](terminating-instances.md)。
   + 要检查您在其他区域是否拥有可能正在产生费用的资源，请在 **EC2 免费套餐**方框中选择**查看全球 EC2 资源**，以打开 **EC2 全球视图**。有关更多信息，请参阅 [使用 AWS 全局视图查看跨区域的资源](global-view.md)。

1. 要在 **EC2 免费套餐**方框底部的 AWS Free Tier 下方查看所有 AWS 服务 的资源使用情况，请选择**查看所有 AWS Free Tier 服务**。有关更多信息，请参阅 *AWS Billing 用户指南*中的 [使用 AWS Free Tier 试用服务](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-free-tier.html)。

# 了解账单和使用情况报告中的 Amazon EC2 代码
账单和使用情况报告

当您使用 Amazon EC2 时，我们会在您的 AWS 账单和使用情况报告中包含相关代码。查看这些代码有助于您了解 Amazon EC2 的成本和使用模式。跟踪和管理您的支出对于优化成本至关重要。

下表描述您的账单和使用情况报告中出现的 Amazon EC2 代码。有关账单和使用情况报告中使用的区域代码列表，请参阅 [AWS Region billing codes](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html)。

**Topics**
+ [

## 实例
](#instances-billing-usage-reports)
+ [

## 裸机实例
](#bare-metal-instances-billing-usage-reports)
+ [

## 专属主机
](#dedicated-hosts-billing-usage-reports)
+ [

## Dedicated Instances
](#dedicated-instances-billing-usage-reports)
+ [

## EBS 优化
](#ebs-billing-usage-reports)
+ [

## 容量预留
](#capacity-reservation-billing-usage-reports)

**相关资源**
+ [Amazon EC2 账单和购买选项](instance-purchasing-options.md)
+ [了解 AMI 账单信息](ami-billing-info.md)
+ [Amazon EC2 定价](https://aws.amazon.com/ec2/pricing/)

## 实例



| 代码 | 描述 | 单位 | 
| --- | --- | --- | 
| region-BoxUsage:instance-type | 按需型实例的运行时间。 | Hours | 
| region-HostBoxUsage:instance-type | 专属主机上实例的运行时间。 | Hours | 
| region-SpotUsage:instance-type | 竞价型实例的运行时间。 | Hours | 



## 裸机实例



| 代码 | 描述 | 单位 | 
| --- | --- | --- | 
| region-BoxUsage:instance-family.metal | 裸机按需型实例的运行时间。 | Hours | 
| region-HostBoxUsage:instance-family.metal | 专属主机上裸机实例的运行时间。 | Hours | 
| region-SpotUsage:instance-family.metal | 裸机竞价型实例的运行时间。 | Hours | 



## 专属主机



| 代码 | 描述 | 单位 | 
| --- | --- | --- | 
| region-HostUsage:host-type | 预置专属主机的时间。 | Hours | 
| region-ReservedHostUsage:host-type | 应用专属主机预留的时间。 | Hours | 



## Dedicated Instances



| 代码 | 描述 | 单位 | 
| --- | --- | --- | 
| region-DedicatedUsage:instance-type | 专用实例的运行时间。 | 小时 \$1 每个区域的费用 | 



## EBS 优化



| 代码 | 描述 | 单位 | 
| --- | --- | --- | 
| region-EBSOptimized:instance-type | 启用 EBS 优化的时间。 | Hours | 



## 容量预留



| 代码 | 描述 | 单位 | 
| --- | --- | --- | 
| region-Reservation:instance-type | 容量预留的预留实例时间。 | Hours | 
| region-UnusedBox:instance-type | 容量预留的未使用预留实例时间。 | Hours | 
| region-DedicatedRes:instance-type | 专用容量预留的预留实例时间。 | Hours | 
| region-UnusedDed:instance-type | 专用容量预留的未使用预留实例时间。 | Hours | 



# 创建 EC2 实例的清单
清点您的 EC2 实例

Amazon EC2 提供按需、可扩展的计算容量。EC2 实例是 AWS 网络中运行的虚拟服务器。

下表描述 EC2 实例的主要特征。系统管理员可以使用本指南中提供的指导来获取有关这些特征的信息，并使用它来配置在本地或另一个云提供商网络中运行的功能等效服务器。


| 特征 | 描述 | 
| --- | --- | 
| [地理位置](#ec2-data-geographic-location) | Amazon EC2 托管在全球所有 AWS 区域。您可以为实例选择靠近客户的位置。您可以在多个位置中启动实例。 | 
| [硬件规格](#ec2-data-specifications) | Amazon EC2 提供针对不同使用案例优化的各种不同的实例类型。您为实例选择的实例类型决定了其计算、内存、网络和存储资源。 | 
| [映像](#ec2-data-images) | 亚马逊机器映像（AMI）包含启动时要在实例上安装的软件。这包括操作系统、软件包和自定义配置。 | 
| [IP 地址和 DNS 主机名](#ec2-data-ip-dns) | 实例接收私有 IP 地址和私有 DNS 主机名。如果您为实例配置了公有 IP 地址，它还会收到公有 DNS 主机名。 | 
| [安全组规则](#ec2-data-rules) | 与您的实例关联的安全组规则决定允许哪些入站流量和出站流量。 | 
| [用户数据](#ec2-data-user-data) | 用户数据在启动时可供实例使用。它包含 shell 脚本（Linux）或 PowerShell 脚本（Windows）。 | 

## 地理位置


Amazon EC2 在全球每个 AWS 区域均可用。每个区域都是一个单独的地理区域。为服务器选择靠近大多数用户的区域，可以降低网络延迟。

您可以使用 [Amazon EC2 全球视图](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/global-view.html)列出所有区域的 Amazon EC2 实例。使用 AWS 管理控制台 和 API 时，您必须单独列出每个区域的实例。

**为什么这很重要**  
确定实例所在的位置后，您可以根据需要决定是在相同位置还是不同位置部署功能等效的服务器。

**获取所有区域中 EC2 实例的摘要**

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

1. 在**区域资源管理器**选项卡的**摘要**下，查看**实例**的资源计数，其中包括实例数量和区域数量。单击带下划线的文本，查看实例计数在各区域的分布情况。

1. 在**全球搜索**选项卡上，选择客户端筛选器**资源类型 = 实例**。您可通过指定区域或标签进一步筛选结果。

**使用 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
```

要获取实例 ID 列表而不是实例计数，请改用以下 `--query` 参数。

```
--query "Reservations[*].Instances[].InstanceId"
```

## 硬件规格


您为 EC2 实例指定的实例类型决定了其可用的计算、内存、存储和联网资源。每个实例系列以不同方式兼顾计算、内存、网络和存储资源。有关更多信息，请参阅 [Amazon EC2 实例类型指南](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html)。

**为什么这些很重要**  
确定实例的硬件规格后，您可以决定功能等效的服务器所需的最低规格。

**获取您的实例所使用实例类型的摘要**  
使用以下 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令。**sed** 命令删除会带有方括号的行和空行。您必须在您有实例的每个区域运行此命令。

```
aws ec2 describe-instances \
    --query "Reservations[*].Instances[].InstanceType" | sed 's/[][]//g;/^$/d' | sort | uniq -c | sort -nr
```

下面是示例输出。

```
  20    "c6i.4xlarge",
   5    "t2.micro",
   2    "g6e.2xlarge",
```

**获取有关特定实例类型的信息**  
使用以下 [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) 命令描述实例类型。`--query` 参数在输出中仅包括指定的字段。这些是基本特征。您可以包括所需的任何其他字段，也可以参阅《Amazon EC2 Instance Types Guide》**中的 [Amazon EC2 instance type specifications](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-type-specifications.html)。

```
aws ec2 describe-instance-types \
    --instance-types c6i.4xlarge t2.micro g6e.2xlarge \
    --query "InstanceTypes[*].[InstanceType,VCpuInfo.DefaultVCpus,MemoryInfo.SizeInMiB,NetworkInfo.NetworkPerformance]" \
    --output table
```

下面是示例输出。这些列包括实例类型、vCPU、内存（GiB）和网络带宽（Gbps）。

```
------------------------------------------------------
|                DescribeInstanceTypes               |
+--------------+-----+--------+----------------------+
|  t2.micro    |  1  |  1024  |  Low to Moderate     |
|  c6i.4xlarge |  16 |  32768 |  Up to 12.5 Gigabit  |
|  g6e.2xlarge |  8  |  65536 |  Up to 20 Gigabit    |
+--------------+-----+--------+----------------------+
```

## 映像


亚马逊机器映像（AMI）提供启动时安装在实例上的软件，例如操作系统、服务、开发工具和应用程序。您可以将 AMI 导出为其他格式以供其他服务器使用。

**为什么这些很重要**  
确定实例的 AMI 后，您可以规划功能等效的服务器所需的映像。可以将您的 AMI 导出为可以在其他地方使用的格式。或者，您可能需要连接到从每个 AMI 启动的实例，确认已安装的内容及其配置方式，并确保拥有所需所有内容的副本。

**获取实例的 AMI**  
使用以下 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令。**sed** 命令删除会带有方括号的行和空行。您必须在您有实例的每个区域运行此命令。

```
aws ec2 describe-instances \
    --query "Reservations[*].Instances[].ImageId" | sed 's/[][]//g;/^$/d' | sort | uniq -c | sort -nr
```

下面是示例输出。

```
20     "ami-0a70b9d193ae8a79",
 5     "ami-07d9cf938edb0739b",
 2     "ami-09245d5773578a1d6",
```

**获取有关特定 AMI 的信息**  
使用以下 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。`--query` 参数在输出中仅包括指定的字段。您可以包括所需的任何其他字段。

```
aws ec2 describe-images \
    --image-id ami-0a70b9d193ae8a79 ami-07d9cf938edb0739b ami-09245d5773578a1d6 \
    --query "Images[*].{ID:ImageId,CreateDate:CreationDate,Name:Name,Description:Description}"
```

下面是示例输出。

```
[
    {
        "ID": "ami-0a70b9d193ae8a799",
        "CreateDate": "2025-03-01T02:22:41.000Z",
        "Name": "web-server-3.1",
        "Description": "Image for web servers"
    },
    {
        "ID": "ami-07d9cf938edb0739b",
        "CreateDate": "2025-02-01T23:59:03.000Z",
        "Name": "awesome-application-11.5",
        "Description": "Image for Awesome Application"
    },
    {
        "ID": "ami-09245d5773578a1d6",
        "CreateDate": "2025-01-31T02:22:41.000Z",
        "Name": "monitoring-4.2",
        "Description": "Monitoring software"
    }
]
```

**从 AMI 创建 VM 文件**  
使用 [export-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/export-image.html) 命令。支持的映像格式包括 VHD（与 Citrix Xen 和 Microsoft Hyper-V 兼容）、VMDK（与 VMware ESX 和 VMware vSphere 兼容）以及原始格式 raw（与 KVM 和 Xen 虚拟机监控程序兼容）。有关 VM Import/Export 要求和限制的信息，请参阅 [VM Import/Export 要求](https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html)。

## IP 地址和 DNS 主机名


您的用户使用其公有 DNS 主机名通过互联网连接到 EC2 实例。EC2 实例的公有 DNS 主机名解析为其公有 IP 地址。EC2 实例可以使用其私有 IP 地址相互通信。

**为什么这些很重要**  
IP 地址允许设备通过本地网络或互联网相互通信。通过记下实例的 IP 地址和 DNS 名称，可帮助确保功能等效的服务器可以与实例相同的客户端或设备进行通信。例如，您可以更新负载均衡器配置或更新您为 DNS 提供商创建的 DNS 记录。

**获取实例的 IP 地址和 DNS 主机名**  
使用以下 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令。您必须在您有实例的每个区域运行此命令。`--query` 参数在输出中仅包括指定的字段。您可以包括所需的任何其他字段。

```
aws ec2 describe-instances \
    --query "Reservations[*].Instances[].[InstanceId,PrivateIpAddress,PublicDnsName]" \
    --output table
```

下面是示例输出。这些列包括实例 ID、私有 IPv4 地址和公有 IPv4 DNS 名称。

```
----------------------------------------------------------------------------------------
|                                   DescribeInstances                                  |
+---------------------+------------+---------------------------------------------------+
| i-0bac57d7472c89bac | 10.0.2.139 | ec2-192-0-2-142.us-east-2.compute.amazonaws.com   |
| i-0fa8b7678975a3fff | 10.0.14.85 | ec2-198-51-100-56.us-east-2.compute.amazonaws.com |
  ...
  ...
| i-08fd74f3f1595fdbd | 10.0.1.241 | ec2-203.0.113.13.us-east-2.compute.amazonaws.com  |
+---------------------+------------+---------------------------------------------------+
```

## 安全组规则


安全组起到虚拟防火墙的作用。在将安全组与 EC2 实例关联后，其规则会允许该 EC2 实例通过特定端口和协议的入站和出站流量。

**为什么这些很重要**  
确定允许到达服务器的入站流量和允许离开服务器的出站流量之后，您可以规划功能等效的服务器所需的防火墙规则。

**获取实例的安全组**  
使用以下 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令。**sed** 命令删除会带有方括号的行和空行。您必须在您有实例的每个区域运行此命令。

```
aws ec2 describe-instances \
    --query "Reservations[*].Instances[].SecurityGroups[].GroupId" | sed 's/[][]//g;/^$/d' | sort | uniq -c | sort -nr
```

下面是示例输出。

```
27     "sg-01dd3383691d02f42",
10     "sg-08c77cc910c0b3b2c",
 2     "sg-00f4e409629f1a42d",
```

**获取安全组的入站规则**  
使用以下 [describe-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-group-rules.html) 命令显示 `IsEgress` 为 `false` 的指定安全组的规则。

```
aws ec2 describe-security-group-rules \
    --filters Name=group-id,Values=sg-01dd3383691d02f42 \
    --query 'SecurityGroupRules[?IsEgress==`false`]'
```

下面是示例输出。第一条规则是默认入站规则，其允许分配给此安全组的所有资源的入站流量。另一条规则允许来自指定前缀列表中 IP 地址的 SSH 流量。要描述前缀列表中的 CIDR 块，请使用 [describe-prefix-lists](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-prefix-lists.html) 命令。

```
[
    {
        "SecurityGroupRuleId": "sgr-06c8b42574a91db1b",
        "GroupId": "sg-01dd3383691d02f42",
        "GroupOwnerId": "123456789012",
        "IsEgress": false,
        "IpProtocol": "-1",
        "FromPort": -1,
        "ToPort": -1,
        "ReferencedGroupInfo": {
            "GroupId": "sg-01dd3383691d02f42",
            "UserId": "123456789012"
        },
        "Tags": [],
        "SecurityGroupRuleArn": "arn:aws:ec2:us-west-2:123456789012:security-group-rule/sgr-06c8b42574a91db1b"
    },
    {
        "SecurityGroupRuleId": "sgr-0886a5d46afcd1758",
        "GroupId": "sg-01dd3383691d02f42",
        "GroupOwnerId": "123456789012",
        "IsEgress": false,
        "IpProtocol": "tcp",
        "FromPort": 22,
        "ToPort": 22,
        "PrefixListId": "pl-f8a6439125e7bf465",
        "Tags": [],
        "SecurityGroupRuleArn": "arn:aws:ec2:us-east-2:123456789012:security-group-rule/sgr-0886a5d46afcd1758"
    }
]
```

**获取安全组的出站规则**  
使用以下 [describe-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-group-rules.html) 命令显示 `IsEgress` 为 `true` 的指定安全组的规则。

```
aws ec2 describe-security-group-rules \
    --filters Name=group-id,Values=sg-01dd3383691d02f42 \
    --query 'SecurityGroupRules[?IsEgress==`true`]'
```

下面是示例输出。其仅包含默认出站规则，允许所有出站 IPv4 流量。

```
[
    {
        "SecurityGroupRuleId": "sgr-048f09a719247dce7",
        "GroupId": "sg-01dd3383691d02f42",
        "GroupOwnerId": "123456789012",
        "IsEgress": true,
        "IpProtocol": "-1",
        "FromPort": -1,
        "ToPort": -1,
        "CidrIpv4": "0.0.0.0/0",
        "Tags": [],
        "SecurityGroupRuleArn": "arn:aws:ec2:us-east-2:123456789012:security-group-rule/sgr-048f09a719247dce7"
    }
]
```

## 用户数据


在启动 EC2 实例时，您可以使用用户数据将 shell 脚本传递给该实例。请注意，用户数据采用 base64 编码，因此您需要解码用户数据才能读取脚本。

**为什么这很重要**  
如果您在启动时运行命令作为设置实例的一部分，则在设置功能等效的服务器时，可能需要执行相同的任务。

**查看实例的解码用户数据**  
使用以下 [describe-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html) 命令。**base64** 命令会解码用户数据。

```
aws ec2 describe-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --attribute userData \
    --output text \
    --query "UserData.Value" | base64 --decode
```

下面是示例输出。

```
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
```

## 相关资源


以下是 EC2 实例的其他特征：
+ [密钥对](ec2-key-pairs.md)
+ [存储](Storage.md)
+ [标签](Using_Tags.md)

您可以验证自己是使用以下方式启动 EC2 实例，还是在 EC2 实例之间分配流量：
+ [自动扩缩组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html)
+ [EC2 Fleet](Fleets.md)
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)