

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

# 根據執行個體生命週期上限來取代 Auto Scaling 執行個體
<a name="asg-max-instance-lifetime"></a>

執行個體生命週期上限會指定一個執行個體在終止和被取代前的服務時間上限 (以秒為單位)。一個常見的使用案例可能是由於內部安全政策或外部合規控制而要求按排程取代您的執行個體。

您必須指定至少 86,400 秒 (一天) 的值。若要清除先前設定的數值，請指定新數值為 0。此設定適用於 Auto Scaling 群組中所有目前和未來的執行個體。

**Topics**
+ [

## 考量事項
](#max-instance-lifetime-considerations)
+ [

## 設定執行個體生命週期上限
](#set-maximum-instance-lifetime)
+ [

## 限制
](#maximum-instance-lifetime-limitations)

## 考量事項
<a name="max-instance-lifetime-considerations"></a>

以下是使用此功能時的考量事項：
+ 每次取代較舊執行個體並啟動新執行個體時，新執行個體都會使用目前與 Auto Scaling 群組相關聯的啟動範本或啟動組態。如果您的啟動範本或啟動組態指定應用程式不同版本的 Amazon Machine Image (AMI) ID，則會自動部署此版本的應用程式。
+ 設定過低的執行個體存留期上限可能會導致執行個體取代速度超過預期。Amazon EC2 Auto Scaling 通常會一次取代一個執行個體，並在取代之間暫停。不過，如果指定的執行個體生命週期上限無法提供足夠的時間個別取代每個執行個體，Amazon EC2 Auto Scaling 必須一次取代多個執行個體。一次取代多個執行個體，最高取代 Auto Scaling 群組目前容量的 10%。為了避免一次取代太多執行個體，請設定較長的執行個體生命週期上限，或使用執行個體縮減保護來暫時防止個別執行個體終止。如需詳細資訊，請參閱[使用執行個體縮減保護來控制執行個體終止](ec2-auto-scaling-instance-protection.md)。
+ Amazon EC2 Auto Scaling 預設會建立新的擴展活動來終止執行個體，然後將其終止。在該執行個體終止時，另一個擴展活動會啟動新的執行個體。您可以使用執行個體維護政策，將此行為變更為在終止前啟動新的執行個體。如需詳細資訊，請參閱[執行個體維護政策](ec2-auto-scaling-instance-maintenance-policy.md)。

## 設定執行個體生命週期上限
<a name="set-maximum-instance-lifetime"></a>

在主控台中建立 Auto Scaling 群組時，無法設定執行個體生命週期上限。但是，建立群組後，您可以對其進行編輯來設定執行個體生命週期上限。

**設定群組的執行個體生命週期上限 (主控台)**

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

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

   **Auto Scaling groups** (Auto Scaling 群組) 頁面底部會開啟一個分割窗格，顯示您所選群組的相關資訊。

1. 在 **Details** (詳細資訊) 索引標籤上，選擇 **Advanced configurations** (進階組態)、**Edit** (編輯)。

1. 對於 **Maximum instance lifetime** (執行個體生命週期上限)，輸入執行個體服務期間的秒數上限。

1. 選擇**更新**。

在 **Activity** (活動) 索引標籤的 **Activity history** (活動歷史記錄) 下，您可以檢視群組在其歷史記錄中執行個體的取代情況。

**設定群組的執行個體生命週期上限 (AWS CLI)**  
您也可以使用 AWS CLI 為新的或現有的 Auto Scaling 群組設定執行個體生命週期上限。

若要建立新的 Auto Scaling 群組，請使用 [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) 命令。

```
aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json
```

以下是 `config.json` 檔案的範例，顯示執行個體生命週期上限為 `2592000` 秒 (30 天)。

```
{
    "AutoScalingGroupName": "my-asg",
    "LaunchTemplate": {
        "LaunchTemplateName": "my-launch-template",
        "Version": "$Default"
    },
    "MinSize": 1,
    "MaxSize": 5,
    "MaxInstanceLifetime": 2592000,
    "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782",
    "Tags": []
}
```

若要更新現有 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-existing-asg --max-instance-lifetime 2592000
```

**確認 Auto Scaling 群組的執行個體生命週期上限**  
使用 [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-name my-asg
```

## 限制
<a name="maximum-instance-lifetime-limitations"></a>
+ **不能保證每個執行個體的生命週期上限都是精確的**：執行個體不保證只會在其最長持續時間結束時被取代。在某些情況下，Amazon EC2 Auto Scaling 可能需要在更新執行個體生命週期上限的參數後立即開始取代執行個體。這種行為的原因是避免同時取代所有執行個體。
+ **遵守執行個體縮減保護**：Amazon EC2 Auto Scaling 提供執行個體縮減保護，協助您控制可以終止的執行個體。在執行個體上啟用此保護時，即使執行個體已達到其最大執行個體生命週期，Amazon EC2 Auto Scaling 也不會終止執行個體。
+ **在啟動前終止的執行個體**：當 Auto Scaling 群組中只有一個執行個體時，執行個體生命週期上限功能可能會導致中斷，因為 Amazon EC2 Auto Scaling 會終止執行個體，然後預設啟動新的執行個體。若要將此行為變更為在終止前啟動，請參閱 [執行個體維護政策](ec2-auto-scaling-instance-maintenance-policy.md)。