

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

# 删除 Auto Scaling 基础设施
<a name="as-process-shutdown"></a>

要完全删除您的扩展基础设施，请完成以下任务。

**Topics**
+ [

## 删除 Auto Scaling 组
](#as-shutdown-lbs-delete-asg-cli)
+ [

## （可选）删除启动配置
](#as-shutdown-lbs-delete-lc-cli)
+ [

## （可选）删除启动模板
](#as-shutdown-lbs-delete-lt-cli)
+ [

## （可选）删除负载均衡器和目标组
](#as-shutdown-lbs-delete-lbs-cli)
+ [

## （可选）删除 CloudWatch 警报
](#as-shutdown-delete-alarms-cli)
+ [

# 为您的 Amazon EC2 Auto Scaling 资源配置删除保护
](resource-deletion-protection.md)

## 删除 Auto Scaling 组
<a name="as-shutdown-lbs-delete-asg-cli"></a>

当您删除 Auto Scaling 组时，其所需值、最小值和最大值设置为 0。因此，将会终止实例。删除实例还会删除任何关联的日志或数据，以及该实例上的任何卷。如果不想终止一个或多个实例，您可在删除 Auto Scaling 组之前分离它们。如果组具有扩展策略，则在删除组时，将会删除策略、基础警报操作以及不再具有关联操作的任何警报。

**删除 Auto Scaling 组（控制台）**

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

1. 选中自动扩缩组旁边的复选框并选择**操作**，**删除**。

1. 当系统提示进行确认时，键入 **delete** 以确认删除指定自动扩缩组，然后选择 **Delete**（删除）。

   **Name**（名称）列中的加载图标指示 Auto Scaling 组正在被删除。**所需**、**最小**和**最大**列显示自动扩缩组具有 `0` 个实例。终止实例并删除组需要几分钟时间。刷新列表以查看当前状态。

**要删除 Auto Scaling 组 (Amazon CLI)**  
使用以下[delete-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/delete-auto-scaling-group.html)命令删除 Auto Scaling 组。如果该组有任何 EC2 实例，则此操作不起作用；它仅适用于具有零个实例的组。

```
aws autoscaling delete-auto-scaling-group --auto-scaling-group-name my-asg
```

如果该组正在进行实例或扩展活动，请使用带`--force-delete`选项的[delete-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/delete-auto-scaling-group.html)命令。这同时将终止 EC2 实例。当您从 Amazon EC2 Auto Scaling 控制台中删除自动扩缩组时，控制台使用此操作终止所有 EC2 实例并同时删除该组。

```
aws autoscaling delete-auto-scaling-group --auto-scaling-group-name my-asg --force-delete
```

## （可选）删除启动配置
<a name="as-shutdown-lbs-delete-lc-cli"></a>

要保留启动配置以备将来使用，可跳过此步骤。

**删除启动配置（控制台）**

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

1. 在左侧导航窗格的**自动扩缩**下方，选择**自动扩缩组**。

1. 在页面顶部附近，选择**启动配置**。当提示您确认时，选择**查看启动配置**以确认您要查看**启动配置**页面。

1. 选择启动配置，选择 **操作**，然后单击 **删除启动配置**。

1. 当系统提示进行确认时，选择 **Delete（删除）**。

**删除启动配置 (Amazon CLI)**  
使用以下 [delete-launch-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/delete-launch-configuration.html) 命令。

```
aws autoscaling delete-launch-configuration --launch-configuration-name my-launch-config
```

## （可选）删除启动模板
<a name="as-shutdown-lbs-delete-lt-cli"></a>

您可以删除启动模板或仅删除启动模板的某个版本。在删除启动模板时，将删除其所有版本。

您可以跳过此步骤来保留启动模板以供将来使用。

**删除启动模板（控制台）**

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

1. 在导航窗格中的**实例**下，选择**启动模板**。

1. 选择启动模板，然后执行下列操作之一：
   + 选择 **Actions**（操作），然后选择 **Delete template**（删除模板）。当系统提示进行确认时，键入 **Delete** 以确认删除指定启动模板，然后选择 **Delete**（删除）。
   + 选择 **Actions**（操作），然后选择 **Delete template version**（删除模板版本）。选择要删除的版本，然后选择 **Delete (删除)**。

**删除启动模板 (Amazon CLI)**  
使用以下 [delete-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/delete-launch-template.html) 命令可删除您的模板及其所有版本。

```
aws ec2 delete-launch-template --launch-template-id lt-068f72b72934aff71
```

或者，您也可以使用 [delete-launch-template-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/delete-launch-template-versions.html) 命令删除启动模板的特定版本。

```
aws ec2 delete-launch-template-versions --launch-template-id lt-068f72b72934aff71 --versions 1
```

## （可选）删除负载均衡器和目标组
<a name="as-shutdown-lbs-delete-lbs-cli"></a>

如果未在 Elastic Load Balancing 负载均衡器中关联 Auto Scaling 组，或者要保留负载均衡器以供将来使用，请跳过该步骤。

**删除您的负载均衡器（控制台）**

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

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器，然后依次选择 **Actions**（操作）和 **Delete**（删除）。

1. 当系统提示进行确认时，选择 **Yes, Delete**（是，删除）。

**删除目标组（控制台）**

1. 在导航窗格上的**负载均衡**下，选择**目标组**。

1. 选择目标组，然后依次选择 **Actions**（操作）、**Delete**（删除）。

1. 当系统提示进行确认时，选择 **Yes, Delete**（是，删除）。

**删除与 Auto Scaling 组关联的负载均衡器 (Amazon CLI)**  
对于应用程序负载均衡器和网络负载均衡器，请使用以下[delete-load-balancer](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/delete-load-balancer.html)和命令。[delete-target-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/delete-target-group.html)

```
aws elbv2 delete-load-balancer --load-balancer-arn my-load-balancer-arn
aws elbv2 delete-target-group --target-group-arn my-target-group-arn
```

对于经典负载均衡器，请使用以下[delete-load-balancer](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/delete-load-balancer.html)命令。

```
aws elb delete-load-balancer --load-balancer-name my-load-balancer
```

## （可选）删除 CloudWatch 警报
<a name="as-shutdown-delete-alarms-cli"></a>

要删除与您的 Auto Scaling 组关联的 CloudWatch 警报，请完成以下步骤。例如，您可能有与步进扩缩策略或简单扩缩策略相关的警报。

**注意**  
删除 Auto Scaling 组会自动删除 Amazon EC2 Auto Scaling 为目标跟踪扩展策略管理的 CloudWatch 警报。

如果您的 Auto Scaling 组未与任何 CloudWatch 警报关联，或者您想保留警报以备将来使用，则可以跳过此步骤。

**删除 CloudWatch 警报（控制台）**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/)。

1. 在导航窗格上，选择 **Alarms**（警报）。

1. 选择警报，然后选择 **Action**（操作）、**Delete**（删除）。

1. 当系统提示进行确认时，选择 **Delete**（删除）。

**删除 CloudWatch 警报 (Amazon CLI)**  
使用 [delete-alarms](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/delete-alarms.html) 命令。您可以一次删除一个或多个警报。例如，使用以下命令可删除 `Step-Scaling-AlarmHigh-AddCapacity` 和 `Step-Scaling-AlarmLow-RemoveCapacity` 警报：

```
aws cloudwatch delete-alarms --alarm-name Step-Scaling-AlarmHigh-AddCapacity Step-Scaling-AlarmLow-RemoveCapacity
```

# 为您的 Amazon EC2 Auto Scaling 资源配置删除保护
<a name="resource-deletion-protection"></a>

 通过配置多层保护，保护您的 Amazon EC2 Auto Scaling 基础设施免遭意外删除。Auto Scaling 提供了多种方法来防止您的 Auto Scaling 群组及其管理的 Amazon EC2 实例删除不必要的资源。

**Topics**
+ [

## 配置 Auto Scaling 群组删除保护
](#asg-deletion-protection)
+ [

## 使用 IAM 策略控制删除权限
](#deletion-protection-iam-policies)

## 配置 Auto Scaling 群组删除保护
<a name="asg-deletion-protection"></a>

 删除保护是一种资源级设置，可防止您的 Amazon EC2 Auto Scaling 组被意外删除。启用删除保护后，会阻止 [ DeleteAutoScalingGroup](https://docs.amazonaws.cn/autoscaling/ec2/APIReference/API_DeleteAutoScalingGroup.html)API 操作成功，要求您先将删除保护设置更新到限制较少的级别，然后才能删除 Auto Scaling 组。

Amazon EC2 Auto Scaling 提供三个级别的删除保护：

**无**（默认）  
 未启用删除保护，这意味着无论是否使用该`ForceDelete`选项，都可以删除您的 Auto Scaling 组。使用时，由您`ForceDelete`的 Auto Scaling 组管理的所有 Amazon EC2 实例也将被强制终止，而不执行终止生命周期挂钩。

**防止强制删除**  
 使用该`ForceDelete`选项时，无法删除您的 Auto Scaling 群组。此配置允许删除空的 Auto Scaling 组（没有实例的组）。对于希望防止大规模实例终止但允许清理空组的生产工作负载，建议使用此选项。

**阻止所有删除**  
 无论是否使用该`ForceDelete`选项，都无法删除您的 Auto Scaling 群组。此选项为防止意外删除提供了最强的保护。在删除您的 Auto Scaling 组之前，需要明确禁用删除保护。对于很少或永远不应该删除的任务关键型 Auto Scaling 组，建议使用此选项。

### 删除保护的工作原理
<a name="deletion-protection-how-it-works"></a>

 当你在启用删除保护的情况下尝试 [ DeleteAutoScalingGroup](https://docs.amazonaws.cn/autoscaling/ec2/APIReference/API_DeleteAutoScalingGroup.html)API 操作时：

1.  Amazon EC2 Auto Scaling 会在处理请求之前验证删除保护设置。

1.  如果配置的删除保护级别阻止了删除尝试，则 Amazon EC2 Auto Scaling 会返回`ValidationError`。

1.  您的 Auto Scaling 组及其 Amazon EC2 实例保持不变。

1.  必须先将删除保护设置更新到限制较少的级别，然后才能删除 Auto Scaling 组。

 删除保护不会阻止其他操作，例如：
+  更新 Auto Scaling 组配置。
+  终止单个实例。
+  缩放操作（手动或自动）。
+  暂停或恢复进程。

 有关如何优雅地处理实例终止的更多信息，请参阅[设计您的应用程序以妥善处理实例终止](gracefully-handle-instance-termination.md)。

### 配置删除保护
<a name="configure-deletion-protection"></a>

 在创建 Auto Scaling 组或更新现有 Auto Scaling 组的设置时，可以设置删除保护。

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

**创建具有删除保护的 Auto Scaling 组**

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

1. 选择 **Create Auto Scaling group**（创建 Auto Scaling 组）。

1. 完成您的 Auto Scaling 组的配置步骤。

1. 在**配置群组大小和缩放比例**页面上，展开**其他设置**。

1. 对于 **Auto Scaling 组删除保护**，请选择所需的保护级别：
   + **无**-无删除保护（默认）
   + **防止强制删除**-阻止强制删除操作
   + **阻止所有删除**-阻止所有删除操作

1. 完成其余步骤以创建您的 Auto Scaling 组。

**更新现有 Auto Scaling 组的删除保护**

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

1. 选中您的自动扩缩组旁边的复选框。

1. 选择 **Actions**（操作）和 **Edit**（编辑）。

1. 在 **“其他设置”** 下，更新 **Auto Scaling 组删除保护**设置。

1. 选择**更新**。

------
#### [ Amazon CLI ]

**创建具有删除保护的 Auto Scaling 组**  
将 [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) 命令与 `--deletion-protection` 参数一起使用：

```
aws autoscaling create-auto-scaling-group \
    --auto-scaling-group-name my-asg \
    --launch-template LaunchTemplateName=my-template,Version='$Latest' \
    --min-size 1 \
    --max-size 5 \
    --desired-capacity 2 \
    --vpc-zone-identifier "subnet-12345678,subnet-87654321" \
    --deletion-protection prevent-force-deletion
```

的有效值`--deletion-protection`为：`none`\$1 `prevent-force-deletion` \$1 `prevent-all-deletion`

**更新现有 Auto Scaling 组的删除保护**  
使用 [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html) 命令：

```
aws autoscaling update-auto-scaling-group \
    --auto-scaling-group-name my-asg \
    --deletion-protection prevent-all-deletion
```

**禁用删除保护**  
将删除保护设置为`none`：

```
aws autoscaling update-auto-scaling-group \
    --auto-scaling-group-name my-asg \
    --deletion-protection none
```

**验证删除保护状态**  
使用 [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 命令：

```
aws autoscaling describe-auto-scaling-groups \
    --auto-scaling-group-names my-asg
```

------

## 使用 IAM 策略控制删除权限
<a name="deletion-protection-iam-policies"></a>

 使用 Amazon Identity and Access Management (IAM) 策略控制哪些用户和角色可以删除 Auto Scaling 群组。基于 IAM 的控件通过限制身份级别的权限来提供额外的安全保护。

当您想执行以下操作时，IAM 策略特别有用：
+  允许不同的用户对不同级别的 Auto Scaling 操作进行访问。
+  阻止特定用户使用该`ForceDelete`选项，即使他们可以执行其他 Auto Scaling 操作。
+  将删除权限限制为特定的 Auto Scaling 群组。

 以下策略仅允许在自动扩缩组具有标签时删除该组`environment=development`。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "autoscaling:DeleteAutoScalingGroup",
      "Resource": "*",
      "Condition": {
          "StringEquals": { "aws:ResourceTag/environment": "development" }
      }
   }]
}
```

------

 以下策略使用`autoscaling:ForceDelete`条件密钥来控制对 `DeleteAutoScalingGroup` API 操作的访问权限。这可能会阻止某些用户使用该`ForceDelete`操作，该操作会终止 Auto Scaling 组中的所有 Amazon EC2 实例。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Action": "autoscaling:DeleteAutoScalingGroup",
        "Resource": "*",
        "Condition": {
            "Bool": {
                "autoscaling:ForceDelete": "true"
            }
        }
    }]
}
```

------

 或者，如果您不使用条件键来控制对 Auto Scaling 组 ARNs 的访问，则可以改为指定`Resource`元素中的资源来控制访问权限。

 以下策略向用户授予使用 `DeleteAutoScalingGroup` API 操作的权限，但仅适用于名称以开头的 Auto Scaling 群组`devteam-`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "autoscaling:DeleteAutoScalingGroup",
            "Resource": "arn:aws:autoscaling:us-east-1:111122223333:autoScalingGroup:*:autoScalingGroupName/devteam-*"
        }
    ]
}
```

------

 您也可以 ARNs 通过将它们包含在列表中来指定多个。包括 UUID 可确保将访问权授予特定的 Auto Scaling 组。新群组的 UUID 与已删除的同名群组的 UUID 不同。

```
"Resource": [
    "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-1",
    "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-2",
    "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-3"
]
```

 有关 Amazon EC2 Auto Scaling 的 IAM 策略的其他示例，包括控制删除权限的策略，请参阅[基于身份的策略示例](security_iam_id-based-policy-examples.md)。