

# 监控 EC2 实例集或竞价型实例集
<a name="fleet-monitor"></a>

有效监控您的 EC2 实例集或竞价型实例集对于保持最佳性能和确保可靠性至关重要。有各种工具可以帮助您实现这一目标，包括本主题中介绍的 Amazon CloudWatch 和 Amazon EventBridge。

使用 CloudWatch，您可以收集和跟踪指标，设置警报，并自动应对实例集的状态变化。

借助 EventBridge，您可以通过编程方式监控和响应实例集发出的事件。通过在 EventBridge 中定义规则，您可以自动响应特定的实例集事件，例如实例终止或实例集状态更改，从而提高运营效率。

**Topics**
+ [使用 CloudWatch 监控 EC2 实例集或竞价型实例集](ec2-fleet-cloudwatch-metrics.md)
+ [使用 Amazon EventBridge 监控并以编程方式响应您的 EC2 实例集或竞价型实例集发出的事件](monitor-ec2-fleet-using-eventbridge.md)

# 使用 CloudWatch 监控 EC2 实例集或竞价型实例集
<a name="ec2-fleet-cloudwatch-metrics"></a>

您可以使用本节所述的 Amazon CloudWatch 指标监控 EC2 实例集或竞价型实例集。

**重要**  
为确保准确性，我们建议您在使用这些指标时启用详细监控。有关更多信息，请参阅 [管理 EC2 实例的详细监控](manage-detailed-monitoring.md)。

有关使用 CloudWatch 的更多信息，请参阅[使用 CloudWatch 监控您的实例](using-cloudwatch.md)。

## EC2 实例集和竞价型实例集指标
<a name="ec2-fleet-metrics"></a>

`AWS/EC2Spot` 命名空间包含以下实例集指标，以及实例集中竞价型实例的 CloudWatch 指标。有关更多信息，请参阅 [实例指标](viewing_metrics_with_cloudwatch.md#ec2-cloudwatch-metrics)。


| 指标 | 说明 | 
| --- | --- | 
| AvailableInstancePoolsCount |  实例集请求中指定的竞价型容量池。 单位：计数  | 
| BidsSubmittedForCapacity |  Amazon EC2 已提交实例集请求的容量。 单位：计数  | 
| EligibleInstancePoolCount |  在 Amazon EC2 可以完成请求的实例集请求中指定的竞价型容量池。在您愿意为竞价型实例支付的最高价格低于 Spot 价格或 Spot 价格高于按需型实例价格的池中，Amazon EC2 不会完成请求。 单位：计数  | 
| FulfilledCapacity |  Amazon EC2 已执行的容量。 单位：计数  | 
| MaxPercentCapacityAllocation |  实例集请求中指定的所有实例集池间的 `PercentCapacityAllocation` 最大值。 单位：百分比  | 
| PendingCapacity |  `TargetCapacity` 与 `FulfilledCapacity` 之间的区别。 单位：计数  | 
| PercentCapacityAllocation |  针对所指定维度的 Spot 容量池分配的容量。要获取所有 Spot 容量池中记录的最大值，请使用 `MaxPercentCapacityAllocation`。 单位：百分比  | 
| TargetCapacity |  实例集请求的目标容量。 单位：计数  | 
| TerminatingCapacity |  因预置容量大于目标容量而终止的容量。 单位：计数  | 

如果指标的度量单位是 `Count`，则最有用的统计信息是 `Average`。

## EC2 实例集和竞价型实例集维度
<a name="ec2-fleet-dimensions"></a>

要筛选实例集的数据，请使用以下维度。


| Dimensions | 描述 | 
| --- | --- | 
| AvailabilityZone |  按照可用区筛选数据。  | 
| FleetRequestId |  按照实例集请求筛选数据。  | 
| InstanceType |  按实例类型筛选数据。  | 

## 查看 EC2 实例集或竞价型实例集的 CloudWatch 指标
<a name="view-ec2-fleet-metrics"></a>

您可以使用 Amazon CloudWatch 控制台查看实例集的 CloudWatch 指标。这些指标显示为监控图表。如果实例集处于活动状态，则这些图表会显示数据点。

指标首先按命名空间进行分组，然后按各命名空间内的各种维度组合进行分组。例如，您可以按实例集请求 ID、实例类型或可用区查看所有实例集指标或实例集指标组。

**查看实例集指标**

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

1. 在导航窗格中，展开**指标**，然后选择**所有指标**。

1. 选择 **EC2 Spot** 命名空间。
**注意**  
如果未显示 **EC2 Spot** 命名空间，这种情况有两个原因。您从未在该区域中使用过 EC2 实例集或竞价型实例集 – 只有正在使用的 Amazon 服务才会将指标发送到 Amazon CloudWatch。或者，如果您在该区域中使用了 EC2 实例集或竞价型实例集，但过去两周没有使用，则不会显示命名空间。

1. 要按维度筛选指标，请选择下列选项之一：
   + **实例集请求指标** – 按实例集请求分组
   + **按可用区** – 按实例集请求和可用区分组
   + **按实例类型** – 按实例集请求和实例类型分组
   + **按可用区/实例类型** – 按实例集请求、可用区和实例类型分组

1. 要查看某指标的数据，请选中该指标旁边的复选框。

# 使用 Amazon EventBridge 监控并以编程方式响应您的 EC2 实例集或竞价型实例集发出的事件
<a name="monitor-ec2-fleet-using-eventbridge"></a>

当 EC2 实例集或竞价型实例集的状态发生变化时，其将发出通知。该通知作为发送到 Amazon EventBridge（以前称为 Amazon CloudWatch Events）的事件提供。尽最大努力发出事件。

您可以使用 Amazon EventBridge 创建触发编程操作以响应事件的规则。例如，您可以创建两个 EventBridge 规则：一个在实例集状态变化时触发，另一个在实例集中的实例终止时触发。在本例中，您可以配置第一条规则，这样如果实例集状态发生变化，该规则将调用 SNS 主题，向您发送电子邮件通知。您可以配置第二条规则，这样如果实例集中的实例被终止，该规则将调用 Lambda 函数以启动新实例。

**注意**  
只有类型 `maintain` 和 `request` 的队列才能触发事件。类型 `instant` 的队列不会触发事件，因为它们提交同步一次性请求，并且队列的状态立即可在响应中获知。要使用 Amazon EventBridge 监控实例集事件，请求类型必须为 `maintain` 或 `request`。

有关如何描述实例集事件历史记录的说明，请参阅[描述 EC2 实例集的事件历史记录](describe-ec2-fleet.md#describe-ec2-fleet-event-history)。

**Topics**
+ [创建 Amazon EventBridge 规则以监控 EC2 实例集或竞价型实例集事件](#fleet_create-eventbridge-rules)
+ [EC2 队列 事件类型](#ec2-fleet-event-types)
+ [Spot 队列事件类型](#spot-fleet-event-types)

## 创建 Amazon EventBridge 规则以监控 EC2 实例集或竞价型实例集事件
<a name="fleet_create-eventbridge-rules"></a>

当 EC2 实例集或竞价型实例集发出状态变更通知时，该通知将作为事件以 JSON 文件的形式发送到 Amazon EventBridge。如果 EventBridge 检测到与规则中定义的模式匹配的事件模式，则 EventBridge 调用规则中指定的一个或多个目标。

您可以编写 EventBridge 规则，从而根据匹配的事件模式自动执行操作。

事件中的下列字段构成规则中定义的事件模式：

`"source": "aws.ec2fleet"`  
识别来自 EC2 队列 的事件。

`"detail-type": "EC2 Fleet State Change"`  
识别事件类型。

`"detail": { "sub-type": "submitted" }`  
识别事件子类型。

有关 EC2 实例集和竞价型实例集事件和示例事件数据的列表，请参阅 [EC2 队列 事件类型](#ec2-fleet-event-types)和[Spot 队列事件类型](#spot-fleet-event-types)。

**Topics**
+ [创建 EventBridge 规则以发送通知](#eventbridge-send-notification)
+ [创建 EventBridge 规则以触发 Lambda 函数](#eventbridge-trigger-lambda)

### 创建 EventBridge 规则以发送通知
<a name="eventbridge-send-notification"></a>

下面的示例可创建 EventBridge 规则，以便在 Amazon EC2 每次发出 EC2 队列状态变化通知时发送电子邮件、短信或移动推送通知。本示例中的信号作为 `EC2 Fleet State Change` 事件发出，这将触发规则定义的操作。

**先决条件**  
创建 EventBridge 规则之前，您必须为电子邮件、短信或移动推送通知创建 Amazon SNS 主题。

**创建 EventBridge 规则以在 EC2 队列 状态变化时发送通知**

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

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

1. 对于**定义规则详细信息**，请执行以下操作：

   1. 输入规则的 **Name (名称)** 和“Description (描述)”（可选）。

      规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

   1. 对于 **Event bus**（事件总线），选择 **default**（默认）。当您账户中的某个 Amazon 服务生成一个事件时，它始终会发送到您账户的默认事件总线。

   1. 对于 **Rule type**（规则类型），选择 **Rule with an event pattern**（具有事件模式的规则）。

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

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

   1. 对于 **Event source**（事件源），选择 **Amazon 事件或 EventBridge 合作伙伴事件**。

   1. 对于 **Event pattern**（事件模式），在此示例中，您将指定以下事件模式以匹配 `EC2 Fleet Instance Change` 事件。

      ```
      {
       "source": ["aws.ec2fleet"],
       "detail-type": ["EC2 Fleet Instance Change"]
      }
      ```

      要添加事件模式，您可以通过选择 **Event pattern form**（事件模式表）使用模板，或者通过选择 **Custom pattern (JSON editor)**（自定义模式（JSON 编辑器））指定您自己的模式，如下所示：

      1. 要使用模板创建事件模式，请执行以下操作：

         1. 选择 **Event pattern form**（事件模式表）。

         1. 对于 **Event source**（事件源），选择 **Amazon services**（服务）。

         1. 对于 **Amazon 服务**，选择 **EC2 实例集**。

         1. 对于 **Event type**（事件类型），选择 **EC2 Fleet Instance Change**（EC2 实例集实例更改）。

         1. 要自定义模板，请选择 **Edit pattern**（编辑模式），然后进行更改以匹配示例事件模式。

      1. （可选）要指定自定义事件模式，请执行以下操作：

         1. 选择 **Custom pattern (JSON editor)**（自定义模式（JSON 编辑器））。

         1. 在 **Event pattern**（事件模式）框中，为此示例添加事件模式。

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

1. 对于 **Select target(s)**（选择目标），请执行以下操作：

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

   1. 对于 **Select a target**（选择目标），选择 **SNS topic**（SNS 主题）以在事件发生时发送电子邮件、短信或移动推送通知。

   1. 对于 **Topic**（主题），选择现有主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息，请参阅*Amazon Simple Notification Service 开发人员指南*中的[使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送](https://docs.amazonaws.cn//sns/latest/dg/sns-user-notifications.html)。

   1. （可选）在 **Additional settings**（其他设置）下，您可以选择配置其他设置。有关更多信息，请参阅《Amazon EventBridge User Guide》**中的 [Creating Amazon EventBridge rules that react to events](https://docs.amazonaws.cn//eventbridge/latest/userguide/eb-create-rule.html)（步骤 16）。

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

1. （可选）对于 **Tags**（标签），您可以选择向规则分配一个或多个标签，然后选择 **Next**（下一步）。

1. 对于 **Review and create**（查看与创建），执行以下操作：

   1. 查看规则的详细信息并根据需要对其进行修改。

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

有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的 [Amazon EventBridge 规则](https://docs.amazonaws.cn/eventbridge/latest/userguide/eb-rules.html)和 [Amazon EventBridge 事件模式](https://docs.amazonaws.cn/eventbridge/latest/userguide/eb-event-patterns.html)。

### 创建 EventBridge 规则以触发 Lambda 函数
<a name="eventbridge-trigger-lambda"></a>

下面的示例可创建 EventBridge 规则，以便在 Amazon EC2 每次在实例启动时发出 EC2 队列实例变更通知时触发 Lambda 函数。本示例中的信号作为 `EC2 Fleet Instance Change` 事件子类型 `launched` 发出，这将触发规则定义的操作。

在创建 EventBridge 规则之前，您必须创建 Lambda 函数。

**创建要在 EventBridge 规则中使用的 Lambda 函数**

1. 通过 [https://console.aws.amazon.com/lambda/](https://console.amazonaws.cn/lambda/) 打开 Amazon Lambda 控制台。

1. 选择**创建函数**。

1. 输入函数的名称，配置代码，然后选择 **Create function**（创建函数）。

   有关更多信息，请参阅《Amazon Lambda 开发人员指南》**中的[创建第一个 Lambda 函数](https://docs.amazonaws.cn/lambda/latest/dg/getting-started.html)。

**创建 EventBridge 规则以在 EC2 队列 中的实例改变状态时触发 Lambda 函数**

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

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

1. 对于**定义规则详细信息**，请执行以下操作：

   1. 输入规则的 **Name (名称)** 和“Description (描述)”（可选）。

      规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

   1. 对于 **Event bus**（事件总线），选择 **default**（默认）。当您账户中的某个 Amazon 服务生成一个事件时，它始终会发送到您账户的默认事件总线。

   1. 对于 **Rule type**（规则类型），选择 **Rule with an event pattern**（具有事件模式的规则）。

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

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

   1. 对于 **Event source**（事件源），选择 **Amazon 事件或 EventBridge 合作伙伴事件**。

   1. 对于 **Event pattern**（事件模式），在此示例中，您将指定以下事件模式以匹配 `EC2 Fleet Instance Change` 事件和 `launched` 子类型。

      ```
      {
       "source": ["aws.ec2fleet"],
       "detail-type": ["EC2 Fleet Instance Change"],
       "detail": {
         "sub-type": ["launched"]
      }
      ```

      要添加事件模式，您可以通过选择 **Event pattern form**（事件模式表）使用模板，或者通过选择 **Custom pattern (JSON editor)**（自定义模式（JSON 编辑器））指定您自己的模式，如下所示：

      1. 要使用模板创建事件模式，请执行以下操作：

         1. 选择 **Event pattern form**（事件模式表）。

         1. 对于 **Event source**（事件源），选择 **Amazon services**（服务）。

         1. 对于 **Amazon 服务**，选择 **EC2 实例集**。

         1. 对于 **Event type**（事件类型），选择 **EC2 Fleet Instance Change**（EC2 实例集实例更改）。

         1. 选择 **Edit pattern**（编辑模式），然后添加 `"detail": {"sub-type": ["launched"]` 以匹配示例事件模式。对于正确的 JSON 格式，在前面的方括号（`,`）之后插入一个逗号（`]`）。

      1. （可选）要指定自定义事件模式，请执行以下操作：

         1. 选择 **Custom pattern (JSON editor)**（自定义模式（JSON 编辑器））。

         1. 在 **Event pattern**（事件模式）框中，为此示例添加事件模式。

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

1. 对于 **Select target(s)**（选择目标），请执行以下操作：

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

   1. 对于 **Select a target**（选择目标），选择 **SNS topic**（SNS 主题）以在事件发生时发送电子邮件、短信或移动推送通知。

   1. 对于 **Topic**（主题），选择 **Lambda function**（Lambda 函数），对于 **Function**（函数），选择您创建的用于在事件发生时响应的函数。

   1. （可选）在 **Additional settings**（其他设置）下，您可以选择配置其他设置。有关更多信息，请参阅《Amazon EventBridge User Guide》**中的 [Creating Amazon EventBridge rules that react to events](https://docs.amazonaws.cn//eventbridge/latest/userguide/eb-create-rule.html)（步骤 16）。

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

1. （可选）对于 **Tags**（标签），您可以选择向规则分配一个或多个标签，然后选择 **Next**（下一步）。

1. 对于 **Review and create**（查看与创建），执行以下操作：

   1. 查看规则的详细信息并根据需要对其进行修改。

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

有关如何创建 Lambda 函数和运行 Lambda 函数的 EventBridge 规则的教程，请参阅 *Amazon Lambda 开发人员指南*中的[教程：使用 EventBridge 记录 Amazon EC2 实例的状态](https://docs.amazonaws.cn/eventbridge/latest/userguide/eb-log-ec2-instance-state.html)。

## EC2 队列 事件类型
<a name="ec2-fleet-event-types"></a>

EC2 队列 事件类型有五种。对于每种事件类型，都有几个子类型。

**Topics**
+ [EC2 队列状态变化](#ec2-fleet-state-change)
+ [EC2 实例集竞价型实例请求更改](#ec2-fleet-spot-instance-request-change)
+ [EC2 队列实例更改](#ec2-fleet-instance-change)
+ [EC2 队列信息](#ec2-fleet-info)
+ [EC2 队列错误](#ec2-fleet-config-not-valid)

### EC2 队列状态变化
<a name="ec2-fleet-state-change"></a>

当 EC2 队列 状态变化时，EC2 队列 会将 `EC2 Fleet State Change` 事件发送到 Amazon EventBridge。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "715ed6b3-b8fc-27fe-fad6-528c7b8bf8a2",
    "detail-type": "EC2 Fleet State Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:20Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-598fb973-87b7-422d-be4d-6b0809bfff0a"
    ],
    "detail": {
        "sub-type": "active"
    }
}
```

`sub-type` 可使用的值为：

`active`  
EC2 队列 请求已验证，并且 Amazon EC2 正在尝试使正在运行的实例保持目标数量。

`deleted`  
EC2 队列 请求已删除，没有正在运行的实例。EC2 队列 将在其实例终止两天后被删除。

`deleted_running`  
EC2 队列 请求已删除，且不启动其他实例。现有实例将继续运行，直至被中断或终止。请求会保持此状态，直到所有实例都已中断或终止。

`deleted_terminating`  
EC2 队列 请求已删除，正在终止其实例。请求会保持此状态，直到所有实例都已终止。

`expired`  
EC2 队列 请求已过期。如果请求使用 `TerminateInstancesWithExpiration` 集创建，则随后的 `terminated` 事件指示实例已终止。

`modify_in_progress`  
正在修改 EC2 队列 请求。请求将保持该状态，直到完全处理修改。

`modify_succeeded`  
EC2 队列 请求已修改。

`submitted`  
EC2 队列 正在接受评估，并且 Amazon EC2 正准备启动目标数量的实例。

`progress`  
该 EC2 队列 请求正在执行过程中。

### EC2 实例集竞价型实例请求更改
<a name="ec2-fleet-spot-instance-request-change"></a>

当队列中的 Spot 实例请求状态变化时，EC2 队列 会将 `EC2 Fleet Spot Instance Request Change` 事件发送到 Amazon EventBridge。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "19331f74-bf4b-a3dd-0f1b-ddb1422032b9",
    "detail-type": "EC2 Fleet Spot Instance Request Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:05Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-83fd4e48-552a-40ef-9532-82a3acca5f10"
    ],
    "detail": {
        "spot-instance-request-id": "sir-rmqske6h",
        "description": "SpotInstanceRequestId sir-rmqske6h, PreviousState: cancelled_running",
        "sub-type": "cancelled"
    }
}
```

`sub-type` 可使用的值为：

`active`  
竞价型实例请求已执行并有关联的竞价型实例。

`cancelled`  
您取消了竞价型实例请求，或竞价型实例请求已过期。

`disabled`  
您停止了竞价型实例。

`submitted`  
已提交竞价型实例请求。

### EC2 队列实例更改
<a name="ec2-fleet-instance-change"></a>

当队列中的实例状态变化时，EC2 队列 会将 `EC2 Fleet Instance Change` 事件发送到 Amazon EventBridge。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "542ce428-c8f1-0608-c015-e8ed6522c5bc",
    "detail-type": "EC2 Fleet Instance Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:23Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-598fb973-87b7-422d-be4d-6b0809bfff0a"
    ],
    "detail": {
        "instance-id": "i-0c594155dd5ff1829",
        "description": "{\"instanceType\":\"c5.large\",\"image\":\"ami-6057e21a\",\"productDescription\":\"Linux/UNIX\",\"availabilityZone\":\"us-east-1d\"}",
        "sub-type": "launched"
    }
}
```

`sub-type` 可使用的值为：

`launched`  
启动了一个新实例。

`terminated`  
实例已终止。

`termination_notified`  
当 Amazon EC2 在缩减期间终止竞价型实例时，机群的目标容量被缩减，例如，从目标容量 4 减至目标容量 3 时，会发送实例终止通知。

### EC2 队列信息
<a name="ec2-fleet-info"></a>

在履行过程中出错时，EC2 队列 会将 `EC2 Fleet Information` 事件发送到 Amazon EventBridge。信息事件不会阻止队列尝试实现其目标容量。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "76529817-d605-4571-7224-d36cc1b2c0c4",
    "detail-type": "EC2 Fleet Information",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T08:17:07Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-8becf5fe-bb9e-415d-8f54-3fa5a8628b91"
    ],
    "detail": {
        "description": "c4.xlarge, ami-0947d2ba12ee1ff75, Linux/UNIX, us-east-1a, Spot price in either SpotFleetRequestConfigData or SpotFleetLaunchSpecification or LaunchTemplate or LaunchTemplateOverrides is less than Spot market price $0.0619",
        "sub-type": "launchSpecUnusable"
    }
}
```

`sub-type` 可使用的值为：

`fleetProgressHalted`  
每个启动规范中的价格无效，因为它低于 Spot 价格（所有启动规范都已生成 `launchSpecUnusable` 事件）。如果 Spot 价格发生变化，启动规范可能会变为有效。

`launchSpecTemporarilyBlacklisted`  
配置无效，多次启动实例的尝试都已失败。有关更多信息，请参阅事件的描述。

`launchSpecUnusable`  
启动规范中的价格无效，因为它低于 Spot 价格。

`registerWithLoadBalancersFailed`  
尝试向负载均衡器注册实例失败。有关更多信息，请参阅事件的描述。

### EC2 队列错误
<a name="ec2-fleet-config-not-valid"></a>

在履行过程中出错时，EC2 队列 会将 `EC2 Fleet Error` 事件发送到 Amazon EventBridge。错误事件阻止了队列尝试实现其目标容量。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "69849a22-6d0f-d4ce-602b-b47c1c98240e",
    "detail-type": "EC2 Fleet Error",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-10-07T01:44:24Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-9bb19bc6-60d3-4fd2-ae47-d33e68eafa08"
    ],
    "detail": {
        "description": "m3.large, ami-00068cd7555f543d5, Linux/UNIX: IPv6 is not supported for the instance type 'm3.large'. ",
        "sub-type": "spotFleetRequestConfigurationInvalid"
    }
}
```

`sub-type` 可使用的值为：

`iamFleetRoleInvalid`  
EC2 机群没有启动或终止实例所需的权限。

`allLaunchSpecsTemporarilyBlacklisted`  
所有配置均无效，多次启动实例的尝试已失败。有关更多信息，请参阅事件的描述。

`spotInstanceCountLimitExceeded`  
您已达到可启动的竞价型实例的数量限制。

`spotFleetRequestConfigurationInvalid`  
该配置无效。有关更多信息，请参阅事件的描述。

## Spot 队列事件类型
<a name="spot-fleet-event-types"></a>

Spot 队列事件类型有五种。对于每种事件类型，都有几个子类型。

**Topics**
+ [EC2 Spot 队列状态变化](#spot-fleet-state-change)
+ [EC2竞价型实例集竞价型实例请求更改](#spot-fleet-spot-instance-request-change)
+ [EC2 Spot 队列实例更改](#spot-fleet-instance-change)
+ [EC2 Spot 队列信息](#spot-fleet-info)
+ [EC2 Spot 队列错误](#spot-fleet-config-not-valid)

### EC2 Spot 队列状态变化
<a name="spot-fleet-state-change"></a>

当 Spot 队列状态变化时，Spot 队列会将 `EC2 Spot Fleet State Change` 事件发送到 Amazon EventBridge。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "d1af1091-6cc3-2e24-203a-3b870e455d5b",
    "detail-type": "EC2 Spot Fleet State Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T08:57:06Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-4b6d274d-0cea-4b2c-b3be-9dc627ad1f55"
    ],
    "detail": {
        "sub-type": "submitted"
    }
}
```

`sub-type` 可使用的值为：

`active`  
已验证竞价型实例集请求，并且 Amazon EC2 正在尝试维护目标数量的正在运行的实例。

`cancelled`  
竞价型实例集请求已取消，没有正在运行的实例。Spot 队列将在其实例终止两天后被删除。

`cancelled_running`  
竞价型实例集请求已取消，且不启动其他实例。现有实例将继续运行，直至被中断或终止。请求会保持此状态，直到所有实例都已中断或终止。

`cancelled_terminating`  
竞价型实例集请求已取消，正在终止其实例。请求会保持此状态，直到所有实例都已终止。

`expired`  
Spot 队列请求已过期。如果请求使用 `TerminateInstancesWithExpiration` 集创建，则随后的 `terminated` 事件指示实例已终止。

`modify_in_progress`  
Spot 队列请求正在修改中。请求将保持该状态，直到完全处理修改。

`modify_succeeded`  
Spot 队列请求已修改。

`submitted`  
正在评估 Spot 队列请求，并且 Amazon EC2 正准备启动目标数量的实例。

`progress`  
Spot 队列请求正在执行过程中。

### EC2竞价型实例集竞价型实例请求更改
<a name="spot-fleet-spot-instance-request-change"></a>

当队列中的 Spot 实例请求状态变化时，Spot 队列会将 `EC2 Spot Fleet Spot Instance Request Change` 事件发送到 Amazon EventBridge。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "cd141ef0-14af-d670-a71d-fe46e9971bd2",
    "detail-type": "EC2 Spot Fleet Spot Instance Request Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T08:53:21Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-a98d2133-941a-47dc-8b03-0f94c6852ad1"
    ],
    "detail": {
        "spot-instance-request-id": "sir-a2w9gc5h",
        "description": "SpotInstanceRequestId sir-a2w9gc5h, PreviousState: cancelled_running",
        "sub-type": "cancelled"
    }
}
```

`sub-type` 可使用的值为：

`active`  
竞价型实例请求已执行并有关联的竞价型实例。

`cancelled`  
您取消了竞价型实例请求，或竞价型实例请求已过期。

`disabled`  
您停止了竞价型实例。

`submitted`  
已提交竞价型实例请求。

### EC2 Spot 队列实例更改
<a name="spot-fleet-instance-change"></a>

当队列中的实例状态变化时，Spot 队列会将 `EC2 Spot Fleet Instance Change` 事件发送到 Amazon EventBridge。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "11591686-5bd7-bbaa-eb40-d46529c2710f",
    "detail-type": "EC2 Spot Fleet Instance Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T07:25:02Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-c8a764a4-bedc-4b62-af9c-0095e6e3ba61"
    ],
    "detail": {
        "instance-id": "i-08b90df1e09c30c9b",
        "description": "{\"instanceType\":\"r4.2xlarge\",\"image\":\"ami-032930428bf1abbff\",\"productDescription\":\"Linux/UNIX\",\"availabilityZone\":\"us-east-1a\"}",
        "sub-type": "launched"
    }
}
```

`sub-type` 可使用的值为：

`launched`  
启动了一个新实例。

`terminated`  
实例已终止。

`termination_notified`  
当 Amazon EC2 在缩减期间终止竞价型实例时，机群的目标容量被缩减，例如，从目标容量 4 减至目标容量 3 时，会发送实例终止通知。

### EC2 Spot 队列信息
<a name="spot-fleet-info"></a>

在履行过程中出错时，Spot 队列会将 `EC2 Spot Fleet Information` 事件发送到 Amazon EventBridge。信息事件不会阻止队列尝试实现其目标容量。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "73a60f70-3409-a66c-635c-7f66c5f5b669",
    "detail-type": "EC2 Spot Fleet Information",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-08T20:56:12Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-2531ea06-af18-4647-8757-7d69c94971b1"
    ],
    "detail": {
        "description": "r3.8xlarge, ami-032930428bf1abbff, Linux/UNIX, us-east-1a, Spot bid price is less than Spot market price $0.5291",
        "sub-type": "launchSpecUnusable"
    }
}
```

`sub-type` 可使用的值为：

`fleetProgressHalted`  
每个启动规范中的价格无效，因为它低于 Spot 价格（所有启动规范都已生成 `launchSpecUnusable` 事件）。如果 Spot 价格发生变化，启动规范可能会变为有效。

`launchSpecTemporarilyBlacklisted`  
配置无效，多次启动实例的尝试都已失败。有关更多信息，请参阅事件的描述。

`launchSpecUnusable`  
启动规范中的价格无效，因为它低于 Spot 价格。

`registerWithLoadBalancersFailed`  
尝试向负载均衡器注册实例失败。有关更多信息，请参阅事件的描述。

### EC2 Spot 队列错误
<a name="spot-fleet-config-not-valid"></a>

在履行过程中出错时，Spot 队列会将 `EC2 Spot Fleet Error` 事件发送到 Amazon EventBridge。错误事件阻止了队列尝试实现其目标容量。

以下是此事件的示例数据。

```
{
    "version": "0",
    "id": "10adc4e7-675c-643e-125c-5bfa1b1ba5d2",
    "detail-type": "EC2 Spot Fleet Error",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T06:56:07Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-38725d30-25f1-4f30-83ce-2907c56dba17"
    ],
    "detail": {
        "description": "r4.2xlarge, ami-032930428bf1abbff, Linux/UNIX: The associatePublicIPAddress parameter can only be specified for the network interface with DeviceIndex 0. ",
        "sub-type": "spotFleetRequestConfigurationInvalid"
    }
}
```

`sub-type` 可使用的值为：

`iamFleetRoleInvalid`  
竞价型实例集不具有启动或终止实例所需的权限。

`allLaunchSpecsTemporarilyBlacklisted`  
所有配置均无效，多次启动实例的尝试已失败。有关更多信息，请参阅事件的描述。

`spotInstanceCountLimitExceeded`  
您已达到可启动的竞价型实例的数量限制。

`spotFleetRequestConfigurationInvalid`  
该配置无效。有关更多信息，请参阅事件的描述。