

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 通过手动或自动回滚撤消更改
<a name="instance-refresh-rollback"></a>

您可以回滚仍在进行的实例刷新。完成后，您无法将其回滚。但是，您可以通过开始新的实例刷新来再次更新您的自动扩缩组。

回滚时，Amazon EC2 Auto Scaling 会替换到目前为止已部署的实例。新实例与您在启动实例刷新之前保存在自动扩缩组中的配置相匹配。

Amazon EC2 Auto Scaling 提供了以下回滚方式：
+ 手动回滚：手动开始回滚，以撤消部署到回滚点的内容。
+ 自动回滚：如果实例刷新由于某种原因失败或您指定的任何 CloudWatch 警报进入状态，Amazon EC2 Auto Scaling 会自动撤消已部署的`ALARM`内容。

**Topics**
+ [注意事项](#instance-refresh-rollback-considerations)
+ [手动开始回滚](#instance-refresh-manual-rollback)
+ [使用自动回滚启动实例刷新](#instance-refresh-using-auto-rollback)

## 注意事项
<a name="instance-refresh-rollback-considerations"></a>

在使用回滚时，请注意以下几点：
+ 只有在启动实例刷新时指定所需的配置时，回滚选项才可用。
+ 如果启动模板是特定编号的版本，则只能回滚到该版本的先前版本。如果自动扩缩组配置为使用`$Latest`或`$Default`启动模板版本，则回滚选项不可用。
+ 您也无法回滚到配置为使用 Param AWS Systems Manager eter Store 中的 AMI 别名的启动模板。
+ 您上次保存在自动扩缩组中的配置必须处于稳定状态。如果未处于稳定状态，回滚工作流程仍会发生，但最终会失败。在您解决问题之前，自动扩缩组可能处于失败状态，无法再成功启动实例。这可能会影响服务或应用程序的可用性。

## 手动开始回滚
<a name="instance-refresh-manual-rollback"></a>

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

**手动开始实例刷新回滚（控制台）**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 选中 Auto Scaling 组旁边的复选框。

1. 在**实例刷新**选项卡的**活跃实例刷新**中，依次选择**操作**、**开始回滚**。

1. 当系统提示进行确认时，选择 **Confirm**。

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

**手动开始实例刷新回滚 (AWS CLI)**  
使用中的[rollback-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/rollback-instance-refresh.html)命令 AWS CLI 并提供 Auto Scaling 组名。

```
aws autoscaling rollback-instance-refresh --auto-scaling-group-name my-asg
```

输出示例：

```
{
    "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b"
}
```

**提示**  
如果此命令引发错误，请确保已将 AWS CLI 本地版本更新到最新版本。

------

## 使用自动回滚启动实例刷新
<a name="instance-refresh-using-auto-rollback"></a>

使用自动回滚功能，您可以在实例刷新失败时（例如出现错误或指定的 Amazon CloudWatch 警报进入`ALARM`状态时）自动回滚实例刷新。

如果您启用了自动回滚，并且在替换实例时出现错误，则实例刷新会尝试在一小时内完成所有替换，然后才会失败并回滚。这些错误通常是由诸如 EC2 启动失败、运行状况检查配置错误或不忽略或不允许终止处于 `Standby` 状态或受保护无法横向缩减的实例等原因造成的。

指定 CloudWatch 警报是可选的。要指定警报，首先需要创建警报。您可以指定指标警报和复合警报。有关创建警报的信息，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。以 Elastic Load Balancing 指标为例，如果您使用应用程序负载均衡器，则可以使用 `HTTPCode_ELB_5XX_Count` 和 `HTTPCode_ELB_4XX_Count` 指标。

**注意事项**
+ 如果您指定了 CloudWatch 警报但未启用 auto rollback，并且警报状态变为`ALARM`，则实例刷新失败而不回滚。
+ 启动实例刷新时，您最多可以选择 10 个警报。
+ 选择 CloudWatch 警报时，警报必须处于兼容状态。如果警报状态为 `INSUFFICIENT_DATA` 或 `ALARM`，则在尝试启动实例刷新时会收到错误消息。
+ 在创建警报供 Amazon EC2 Auto Scaling 使用时，警报应包括如何处理丢失的数据点。如果指标在设计上经常缺少数据点，则在这些期间警报的状态为 `INSUFFICIENT_DATA`。发生这种情况时，在找到新的数据点之前，Amazon EC2 Auto Scaling 无法替换实例。要强制警报保持之前的 `ALARM` 或 `OK` 状态，您可以改为选择忽略缺少的数据。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[配置警报如何处理丢失的数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)。

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

**使用自动回滚启动实例刷新（控制台）**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 选中 Auto Scaling 组旁边的复选框。

1. 在 **Instance refresh**（实例刷新）选项卡上的 **Active instance refresh**（活跃实例刷新）中，选择 **Start instance refresh**（开启实例刷新）。

1. 按照 [启动实例刷新（控制台）](start-instance-refresh.md#start-instance-refresh-console) 程序进行操作并根据需要配置实例刷新设置。

1. （可选）在 **“刷新设置”** 下，对于**CloudWatch CloudWatch 警****报，选择 “启用警**报”，然后选择一个或多个警报以识别任何问题，并在警报进入`ALARM`状态时操作失败。

1. 在 **Rollback 设置**下，选择**启用自动回滚**以将失败的实例刷新自动回滚到您在启动实例刷新之前保存在自动扩缩组中的配置。

1. 查看您的选择，然后选择**启动实例刷新**。

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

**使用自动回滚启动实例刷新（AWS CLI）**  
使用[start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html)命令并在中`true`为`AutoRollback`选项指定`Preferences`。

以下示例说明如何启动实例刷新，如果出现故障，该刷新将自动回滚。将 *`italicized`* 参数值替换为您自己的值。

```
aws autoscaling start-instance-refresh --cli-input-json file://config.json
```

`config.json` 的内容。

```
{
    "AutoScalingGroupName": "my-asg",
    "DesiredConfiguration": {
      "LaunchTemplate": {
          "LaunchTemplateName": "my-launch-template",
          "Version": "1"
       }
    },
    "Preferences": {
      "AutoRollback": true
    }
}
```

或者，要在实例刷新失败或指定 CloudWatch 警报处于`ALARM`状态时自动回滚，请在中指定`AlarmSpecification`选项`Preferences`并提供警报名称，如下例所示。将 *`italicized`* 参数值替换为您自己的值。

```
{
    "AutoScalingGroupName": "my-asg",
    "DesiredConfiguration": {
      "LaunchTemplate": {
          "LaunchTemplateName": "my-launch-template",
          "Version": "1"
       }
    },
    "Preferences": {
      "AutoRollback": true,
      "AlarmSpecification": { "Alarms": [ "my-alarm" ] }
    }
}
```

如果成功，该命令将返回类似于以下内容的输出。

```
{
  "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b"
}
```

**提示**  
如果此命令引发错误，请确保已将 AWS CLI 本地版本更新到最新版本。

------