

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 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.aws.amazon.com/autoscaling/ec2/APIReference/API_DeleteAutoScalingGroup.html) API 操作成功，要求您先將刪除保護設定更新為較不嚴格的層級，才能刪除 Auto Scaling 群組。

Amazon EC2 Auto Scaling 提供三種層級的刪除保護：

**無** （預設）  
 未啟用刪除保護，這表示您的 Auto Scaling 群組可以使用或不使用 `ForceDelete`選項來刪除。使用 `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.aws.amazon.com/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. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 選擇 **Create Auto Scaling group** (建立 Auto Scaling 群組)。

1. 完成 Auto Scaling 群組的組態步驟。

1. 在**設定群組大小和擴展**頁面上，展開**其他設定**。

1. 對於 **Auto Scaling 群組刪除保護**，請選擇所需的保護層級：
   + **無** - 無刪除保護 （預設）
   + **防止強制刪除** - 封鎖強制刪除操作
   + **防止所有刪除** - 封鎖所有刪除操作

1. 完成剩餘的步驟以建立 Auto Scaling 群組。

**更新現有 Auto Scaling 群組的刪除保護**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 選取 Auto Scaling 群組旁的核取方塊。

1. 選擇 **Actions** (動作)、**Edit** (編輯)。

1. **在其他設定**下，更新 **Auto Scaling 群組刪除保護**設定。

1. 選擇**更新**。

------
#### [ AWS 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>

 使用 AWS Identity and Access Management (IAM) 政策來控制哪些使用者和角色可以刪除 Auto Scaling 群組。IAM 型控制項透過限制身分層級的許可，提供額外的安全層。

當您想要執行下列動作時，IAM 政策特別有用：
+  允許不同使用者存取不同層級的 Auto Scaling 操作。
+  防止特定使用者使用 `ForceDelete`選項，即使他們可以執行其他 Auto Scaling 操作。
+  限制特定 Auto Scaling 群組的刪除許可。

 只有在群組有標籤 `environment=development` 時，下列政策才允許刪除 Auto Scaling 群組。

------
#### [ 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 群組的存取權，則可以指定 `Resource` 元素中資源的 ARN 來控制存取權。

 下列政策提供使用者使用 `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-*"
        }
    ]
}
```

------

 您也可以將多個 ARN 包含在清單中來加以指定。包含 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)。