

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

# 取代 Auto Scaling 群組中的執行個體
<a name="ec2-auto-scaling-group-replacing-instances"></a>

Amazon EC2 Auto Scaling 提供的功能可讓您在更新後取代 Auto Scaling 群組中的 Amazon EC2 執行個體，例如使用新的 Amazon Machine Image (AMI) 新增新的啟動範本，或新增新的執行個體類型。它還可讓您選擇將更新包含在取代執行個體的相同操作中，以協助您簡化更新。

本節包含協助您執行下列操作的資訊：
+ 啟動執行個體重新整理來取代 Auto Scaling 群組中的執行個體。
+ 宣告描述所需組態的特定更新，並將 Auto Scaling 群組更新為所需組態。
+ 略過取代已更新的執行個體。
+ 使用檢查點分階段更新執行個體，並在特定點對執行個體執行驗證。
+ 使用製作時間在執行個體重新整理結束時暫停，以驗證執行個體的運作狀態。
+ 到達檢查點時，透過電子郵件接收通知。
+ 使用復原將 Auto Scaling 群組還原為先前使用的組態。
+ 如果執行個體重新整理因某些原因失敗，或者您指定的任何 Amazon CloudWatch 警示進入 `ALARM` 狀態，則會自動復原。
+ 限制執行個體的生命週期，以在整個 Auto Scaling 群組中提供一致的軟體版本和執行個體組態。
+ 在不終止執行個體的情況下取代根磁碟區，同時保留網路介面、非根磁碟區和 IAM 政策。

**Topics**
+ [執行個體重新整理](asg-instance-refresh.md)
+ [執行個體生命週期上限](asg-max-instance-lifetime.md)

# 使用執行個體重新整理來更新 Auto Scaling 群組中的執行個體
<a name="asg-instance-refresh"></a>

您可以使用執行個體重新整理來更新 Auto Scaling 群組中的執行個體。當組態變更需要您取代執行個體或其根磁碟區時，此功能非常有用，特別是當您的 Auto Scaling 群組包含大量執行個體時。

執行個體重新整理的某些情況有助於包括：
+ 在 Auto Scaling 群組中部署新的 Amazon Machine Image (AMI) 或使用者資料指令碼。您可以使用變更建立新的啟動範本，然後使用執行個體重新整理來立即推出更新。
+ 將執行個體遷移至新的執行個體類型，以利用最新的改善和最佳化。
+ 將 Auto Scaling 群組從使用啟動組態切換到使用啟動範本。您可以複製啟動組態以啟動範本，然後使用執行個體重新整理將執行個體更新為新的範本。如需遷移至啟動範本的詳細資訊，請參閱 [遷移 Auto Scaling 群組以啟動範本](migrate-to-launch-templates.md)。
+ 套用安全修補程式或軟體更新，同時保留長時間執行的執行個體狀態，並避免使用 GPU 或 Mac 執行個體等特殊執行個體類型的容量限制。

**Topics**
+ [執行個體重新整理的運作方式](instance-refresh-overview.md)
+ [了解預設值](understand-instance-refresh-default-values.md)
+ [啟動執行個體重新整理](start-instance-refresh.md)
+ [監控執行個體重新整理](check-status-instance-refresh.md)
+ [取代根磁碟區](replace-root-volume.md)
+ [取消執行個體重新整理](cancel-instance-refresh.md)
+ [使用復原來復原變更](instance-refresh-rollback.md)
+ [使用略過相符項目](asg-instance-refresh-skip-matching.md)
+ [新增檢查點](asg-adding-checkpoints-instance-refresh.md)

# 執行個體重新整理如何在 Auto Scaling 群組中運作
<a name="instance-refresh-overview"></a>

本主題說明執行個體重新整理的運作方式，並介紹有效使用它所需的重要概念。

**Topics**
+ [運作方式](#instance-refresh-how-it-works)
+ [核心概念](#instance-refresh-core-concepts)
+ [運作狀態檢查寬限期](#instance-refresh-health-check-grace-period)
+ [執行個體類型相容性](#instance-type-compatibility)
+ [限制](#instance-refresh-limitations)

## 運作方式
<a name="instance-refresh-how-it-works"></a>

若要重新整理 Auto Scaling 群組中的執行個體，您可以定義新的組態，其中包含應用程式的最新版本，以及您想要進行的任何其他更新。

執行個體重新整理支援兩種更新執行個體的策略：
+ **滾動策略 （預設）** — 根據您的偏好設定終止執行個體並批次啟動新的執行個體。這可確保 Auto Scaling 群組在整個更新過程中維持所需的容量和可用性。
+ **取代根磁碟區策略** — 僅取代根磁碟區來更新執行個體，而不終止執行個體。這會保留執行個體網路介面、非根 EBS 磁碟區和執行個體存放區資料。

取代根磁碟區策略的需求：
+ Auto Scaling 群組必須使用混合執行個體政策
+ 混合執行個體政策中的所有覆寫都必須指定 `ImageId` 
+ AMIs只能包含單一根磁碟區
+ 所有執行個體都必須符合群組的啟動範本組態
+ 您必須使用具有包含`ImageId`覆寫之混合執行個體政策的所需組態來啟動執行個體重新整理。

啟用略過比對時，Auto Scaling 會將每個執行個體目前的 AMI ID 與您所需組態中的 AMI IDs 進行比較。它只會取代 AMI IDs 不相符的執行個體，讓您略過已更新的執行個體。

### 執行執行個體重新整理
<a name="instance-refresh-process"></a>

啟動執行個體重新整理，以根據該組態將現有執行個體取代為新的執行個體。

1. 建立新的啟動範本，或使用所需的組態變更更新現有範本，例如新的 Amazon Machine Image (AMI)。如需詳細資訊，請參閱[為 Auto Scaling 群組建立啟動範本](create-launch-template.md)。

1. 使用 Amazon EC2 Auto Scaling 主控台 AWS CLI或 SDK 啟動執行個體重新整理：
   + 指定您建立的新啟動範本或啟動範本版本。這將用於啟動新的執行個體。
   + 設定偏好的運作狀態百分比下限和上限。這可控制同時取代多少執行個體，以及在終止舊執行個體之前是否啟動新執行個體。
   + 設定任何選用設定，例如：
     + **檢查點** – 在特定百分比的取代之後暫停執行個體重新整理，以驗證進度。
     + **製作時間** – 在執行個體重新整理結束時暫停，以在執行個體重新整理視為完成之前驗證執行個體的運作狀態。
     + **略過比對** – 比較舊執行個體與新組態，並僅取代不相符的執行個體。當您從主控台啟動執行個體重新整理時，略過比對預設為開啟。
     + **多個執行個體類型** – 將新的或更新的[混合執行個體政策](ec2-auto-scaling-mixed-instances-groups.md)套用為所需組態的一部分。

當執行個體重新整理開始時，Amazon EC2 Auto Scaling 將：
+ 根據運作狀態百分比下限和上限，批次取代執行個體。
+ 如果運作狀態最低百分比設定為 100%，請先啟動新執行個體，再終止舊執行個體。這可確保隨時維持所需的容量。
+ 檢查執行個體的運作狀態，並在取代更多執行個體之前給予他們暖機時間。
+ 終止並取代發現運作狀態不佳的執行個體。
+ 在執行個體重新整理成功後，使用新的組態變更自動更新 Auto Scaling 群組設定。
+ 在暖集區中的`InService`執行個體之前取代執行個體。

下列流程圖說明當您將運作狀態最低百分比設定為 100% 時，終止行為之前的啟動。

![\[顯示當運作狀態最低百分比設定為 100% 時，執行個體重新整理如何運作的圖表。\]](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/images/instance-refresh-high-level-flowchart-diagram.png)


**注意**  
只有在您未設定執行個體維護政策，或需要覆寫現有政策時，才需要指定執行個體重新整理的運作狀態百分比下限和上限。如需詳細資訊，請參閱[執行個體維護政策](ec2-auto-scaling-instance-maintenance-policy.md)。  
同樣地，如果您尚未啟用預設暖機期，或需要覆寫預設值，則只需要指定執行個體重新整理的執行個體暖機期。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

## 核心概念
<a name="instance-refresh-core-concepts"></a>

在開始使用之前，請熟悉以下執行個體重新整理核心概念：

**狀態良好最低百分比**  
*運作狀態良好的最低百分比*是在執行個體重新整理期間保持服務狀態、運作狀態良好且可供使用的所需容量百分比，以便繼續重新整理。例如，如果狀態良好最低百分比為 90%，而狀態良好最高百分比為 100%，則一次會取代 10% 的容量。如果新執行個體未通過運作狀態檢查，Amazon EC2 Auto Scaling 會終止並取代執行個體。如果執行個體重新整理無法啟動任何運作狀態良好的執行個體，則執行個體重新整理最終會失敗，而不會影響其他 90% 的群組。如果新執行個體保持運作狀態並完成暖機期，Amazon EC2 Auto Scaling 可以繼續取代其他執行個體。  
執行個體重新整理可以一次取代一個執行個體、一次取代多個執行個體，或一次取代所有執行個體。若要一次取代一個執行個體，請將狀態良好最低和最高百分比均設定為 100%。這會將執行個體重新整理的行為變更為在終止前啟動，以防止群組的容量降低至其所需容量的 100% 以下。若要一次取代所有執行個體，請將狀態良好最低百分比設為 0%。

**狀態良好最高百分比**  
*狀態良好最高百分比*是 Auto Scaling 群組在取代執行個體時可增加的所需容量百分比。上下限之間的差異不能大於 100。範圍越大，可同時取代的執行個體數量便會越多。

**執行個體暖機期**  
*執行個體暖機期*是指新執行個體的狀態變更為 `InService` 到視為已完成初始化經過的時間。在執行個體重新整理期間，如果執行個體通過其運作狀態檢查，Amazon EC2 Auto Scaling 在判斷新啟動的執行個體運作狀態良好之後，就不會立即繼續取代下一個執行個體。它會等待暖機期，然後再繼續取代下一個執行個體。如果您的應用程式仍需要一些初始化時間才能回應請求，這個功能會相當實用。  
執行個體暖機期的運作方式與預設執行個體暖機期相同。因此適用相同的擴展考量。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

**所需組態**  
*所需組態*是您希望 Amazon EC2 Auto Scaling 在整個 Auto Scaling 群組中部署的新組態。例如，您可為執行個體指定新啟動範本和新執行個體類型。在執行個體重新整理期間，Amazon EC2 Auto Scaling 會將 Auto Scaling 群組更新為所需組態。如果在執行個體重新整理期間發生擴增事件，Amazon EC2 Auto Scaling 會以所需組態 (而不是群組的目前設定) 啟動新執行個體。執行個體重新整理成功後，Amazon EC2 Auto Scaling 會更新 Auto Scaling 群組設定，以便反映您在執行個體重新整理過程中指定的所需新組態。

**略過相符項目**  
略過相符項目會讓 Amazon EC2 Auto Scaling 忽略已經有最新更新的執行個體。如此一來，您就不會取代超過需要的執行個體數量。當您想要確定 Auto Scaling 群組使用特定版本的啟動範本，並且僅取代使用不同版本的執行個體時，這會很有幫助。

**檢查點**  
*檢查點*是執行個體重新整理暫停一段指定時間的時間點。執行個體重新整理可以包含多個檢查點。Amazon EC2 Auto Scaling 會為每個檢查點發出事件。因此，您可新增 EventBridge 規則以將事件傳送到某個目標 (例如 Amazon SNS)，以便在到達檢查點時收到通知。到達檢查點後，您就能夠驗證部署。如果發現任何問題，您可以取消執行個體重新整理或進行回復。分階段部署更新的能力是檢查點的主要優點。如果不使用檢查點，輪流取代將持續執行。

若要深入了解啟動執行個體重新整理時可設定的所有預設設定，請參閱 [了解執行個體重新整理的預設值](understand-instance-refresh-default-values.md)。

## 運作狀態檢查寬限期
<a name="instance-refresh-health-check-grace-period"></a>

Amazon EC2 Auto Scaling 會根據您的 Auto Scaling 群組使用的運作狀態檢查狀態，判斷執行個體是否運作狀態良好。如需詳細資訊，請參閱[Auto Scaling 群組中的執行個體運作狀態檢查](ec2-auto-scaling-health-checks.md)。

為確保這些運作狀態檢查能夠盡快啟動，請勿將群組的運作狀態檢查寬限期設定得太高，但要足以讓您的 Elastic Load Balancing 運作狀態檢查來判斷目標是否可用來處理要求。如需詳細資訊，請參閱[設定 Auto Scaling 群組的運作狀態檢查寬限期。](health-check-grace-period.md)。

## 執行個體類型相容性
<a name="instance-type-compatibility"></a>

在變更執行個體類型之前，最好先確認它可以與您的啟動範本搭配運作。這會確認與您指定的 AMI 的相容性。例如，假設您已從全虛擬化 (PV) AMI 啟動原始執行個體，但想要變更為只有硬體虛擬機器 (HVM) AMI 支援的目前世代執行個體類型。在這種情況下，您必須在啟動範本中使用 HVM AMI。

若要在不啟動執行個體的情況下確認執行個體類型相容性，請使用 [run-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/run-instances.html) 命令搭配 `--dry-run` 選項，如下列範例所示。

```
aws ec2 run-instances --launch-template LaunchTemplateName=my-template,Version='1' --dry-run
```

如需如何判斷相容性的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[變更執行個體類型的相容性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resize-limitations.html)。

## 限制
<a name="instance-refresh-limitations"></a>
+ **總持續時間** — 執行個體重新整理可繼續主動取代執行個體的時間上限為 14 天。
+ **加權群組特定行為的差異**：如果混合執行個體群組的執行個體權重設定為大於或等於群組所需容量，Amazon EC2 Auto Scaling 可能會一次取代所有`InService`執行個體。若要避免這種情況，請遵循 [設定 Auto Scaling 群組以使用執行個體權重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md) 主題中的建議。當您將權重與 Auto Scaling 群組搭配使用時，請指定大於您最大權重的所需容量。
+ **一小時逾時** - 當執行個體重新整理因為等待取代待命或受到縮減保護的執行個體，或新執行個體未通過運作狀態檢查，而無法繼續進行取代時，Amazon EC2 Auto Scaling 會繼續重試一小時。它也會提供狀態訊息，以協助您解決問題。如果問題在一小時後仍然存在，操作會失敗。其目的是在發生暫時性問題時，給它時間恢復。
+ **透過使用者資料部署程式碼** — 略過比對不會檢查從使用者資料指令碼部署的程式碼變更。如果您使用使用者資料提取新程式碼並在新執行個體上安裝這些更新，我們建議您關閉略過比對，以確保所有執行個體都收到最新的程式碼，即使沒有啟動範本版本更新也一樣。
+ **更新限制** — 如果您在具有所需組態的執行個體重新整理處於作用中狀態時嘗試更新 Auto Scaling 群組的啟動範本、啟動組態或混合執行個體政策，請求將失敗，並出現下列驗證錯誤： `An active instance refresh with a desired configuration exists. All configuration options derived from the desired configuration are not available for update while the instance refresh is active.`
+ **以屬性為基礎的執行個體選擇** — 如果您的 Auto Scaling 群組使用以屬性為基礎的執行個體選擇 （在混合執行個體政策`InstanceRequirements`中指定），則不支援下列執行個體重新整理參數：
  + **SkipMatching** - 如果您使用已`InstanceRequirements`設定的 Auto Scaling 群組中的 `SkipMatching` 參數啟動執行個體重新整理，則會失敗。
  + **DesiredConfiguration** - 如果您使用已`InstanceRequirements`設定的 Auto Scaling 群組中的 `DesiredConfiguration` 參數啟動執行個體重新整理，則會失敗。

  如果您需要在具有屬性型執行個體選擇的 Auto Scaling 群組上執行執行個體重新整理，請在沒有這些參數的情況下啟動執行個體重新整理。
+ 根磁碟區取代不支援 Elastic Load Balancing。

# 了解執行個體重新整理的預設值
<a name="understand-instance-refresh-default-values"></a>

啟動執行個體重新整理之前，您可以先自訂影響執行個體重新整理的各種偏好設定。根據您是否使用主控台或命令列 (AWS CLI 或 AWS SDK)，某些偏好設定預設值會有所不同。

下表列出執行個體重新整理設定的預設值。


| 設定 | AWS CLI 或 AWS SDK | Amazon EC2 Auto Scaling 主控台 | 
| --- | --- | --- | 
| CloudWatch 警示 | 已停用 (null) | Disabled | 
| 自動復原 | 已停用 (false) | Disabled | 
| 製作時間 | 零 | 零 | 
| 檢查點 | 已停用 (false) | Disabled | 
| 檢查點延遲 | 1 小時（3600 秒） | 1 小時 | 
| 執行個體暖機期 | [預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md) (如果已定義) 或[運作狀態檢查寬限期](health-check-grace-period.md)。 | [預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md) (如果已定義) 或[運作狀態檢查寬限期](health-check-grace-period.md)。 | 
| 狀態良好最高百分比 | 根據您的執行個體維護政策而異。如果沒有執行個體維護政策，此預設值為 100% (null)。 | 根據您的執行個體維護政策而異。如果沒有執行個體維護政策，此預設值為 100% (null)。 | 
| 狀態良好最低百分比 | 根據您的執行個體維護政策而異。如果沒有執行個體維護政策，此預設值為 90%。 | 根據您的執行個體維護政策而異。如果沒有執行個體維護政策，此預設值為 90%。 | 
| 受縮減保護的執行個體 | 等候 | Ignore | 
| 略過相符項目 | 已停用 (false) | 已啟用 | 
| 待命執行個體 | 等候 | Ignore | 

各項設定的描述如下：

**CloudWatch 警示 (`AlarmSpecification`)**  
CloudWatch 警示規格。CloudWatch 警示可用於識別任何問題，並在警示進入 `ALARM` 狀態時使作業失敗。如需詳細資訊，請參閱[使用自動復原啟動執行個體重新整理](instance-refresh-rollback.md#instance-refresh-using-auto-rollback)。

**自動復原 (`AutoRollback`)**  
控制在執行個體重新整理失敗的情況下，Amazon EC2 Auto Scaling 是否要將 Auto Scaling 群組復原為先前的組態。如需詳細資訊，請參閱[使用手動或自動轉返復原變更](instance-refresh-rollback.md)。

**製作時間 (`BakeTime`)**  
在執行個體重新整理結束時，執行個體重新整理視為完成之前等待的時間量。

**檢查點 (`CheckpointPercentages`)**  
控制 Amazon EC2 Auto Scaling 是否分階段取代執行個體。如果您需要在取代所有執行個體之前對執行個體執行驗證，這將非常有用。如需詳細資訊，請參閱[將檢查點新增至執行個體重新整理](asg-adding-checkpoints-instance-refresh.md)。

**檢查點延遲（`CheckpointDelay`）**  
到檢查點後再繼續前的等待時間 (以秒為單位)。如需詳細資訊，請參閱[將檢查點新增至執行個體重新整理](asg-adding-checkpoints-instance-refresh.md)。

**執行個體暖機期 (`InstanceWarmup`)**  
一段單位為秒的時間期間，是指 Amazon EC2 Auto Scaling 等到新執行個體被視為已完成初始化後再繼續取代下一個執行個體所經過的時間。如果您已經正確定義 Auto Scaling 群組的預設執行個體暖機期，就不需要變更執行個體暖機期 (除非您想要覆寫預設值)。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

**狀態良好最高百分比 (`MaxHealthyPercentage`)**  
Auto Scaling 群組在取代執行個體時可增加的所需容量百分比。

**狀態良好百分比下限 (`MinHealthyPercentage`)**  
Auto Scaling 群組得以正常運作、保持狀態良好、以及隨時可用以便繼續操作的所需容量百分比。

**受縮減保護的執行個體 (`ScaleInProtectedInstances`)**  
控制 Amazon EC2 Auto Scaling 在找到受縮減保護的執行個體時所執行的動作。如需這些執行個體的詳細資訊，請參閱[使用執行個體縮減保護來控制執行個體終止](ec2-auto-scaling-instance-protection.md)。  
Amazon EC2 Auto Scaling 提供下列選項：  
+ **取代** (`Refresh`) – 取代受保護免於縮減的執行個體。
+ **忽略 **(`Ignore`) – 忽略受保護免於縮減的執行個體，並繼續取代未受保護的執行個體。
+ **等待** (`Wait`) – 等待一小時讓您移除縮減保護。如果不這樣做，執行個體重新整理就會失敗。

**略過相符項目 (`SkipMatching`)**  
控制 Amazon EC2 Auto Scaling 是否略過取代符合所需組態的執行個體。如果未指定所需組態，則會略過取代具有與 Auto Scaling 群組在執行個體重新整理開始前所使用之相同啟動範本和執行個體類型的執行個體。如需詳細資訊，請參閱[搭配略過相符項目使用執行個體重新整理](asg-instance-refresh-skip-matching.md)。

**待命執行個體 (`StandbyInstances`)**  
控制 Amazon EC2 Auto Scaling 在找到處於 `Standby` 狀態的執行個體時所執行的動作。如需這些執行個體的詳細資訊，請參閱[從 Auto Scaling 群組暫時移除執行個體](as-enter-exit-standby.md)。  
Amazon EC2 Auto Scaling 提供下列選項：  
+ **終止** (`Terminate`) – 終止 中的執行個體`Standby`。
+ **忽略 **(`Ignore`) – 忽略 中的執行個體，`Standby`並繼續取代 狀態的執行個體`InService`。
+ **等待** (`Wait`) – 等待一小時，讓您將執行個體送回 服務。如果不這樣做，執行個體重新整理就會失敗。

# 使用 AWS 管理主控台 或 啟動執行個體重新整理 AWS CLI
<a name="start-instance-refresh"></a>

**重要**  
您可復原進行中的執行個體重新整理以復原任何變更。若要使用此功能，Auto Scaling 群組必須符合在開始執行個體重新整理前使用復原的先決條件。如需詳細資訊，請參閱[使用手動或自動轉返復原變更](instance-refresh-rollback.md)。

下列程序可協助您使用 AWS 管理主控台 或 啟動執行個體重新整理 AWS CLI。

## 啟動執行個體重新整理 (主控台)
<a name="start-instance-refresh-console"></a>

如果您是第一次啟動執行個體重新整理，則使用主控台將有助於您了解這些可用的功能和選項。

### 在主控台中啟動執行個體重新整理 (基本程序)
<a name="starting-an-instance-refresh-in-the-console"></a>

如果您之前未定義 Auto Scaling 群組的[混合執行個體政策](ec2-auto-scaling-mixed-instances-groups.md)，請使用下列程序。如果您之前定義了混合執行個體政策，請參閱 [在主控台中啟動執行個體重新整理 (混合執行個體群組)](#starting-an-instance-refresh-in-the-console-mig) 以啟動執行個體重新整理。

**啟動執行個體重新整理**

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. 在 **Instance refresh** (執行個體重新整理) 索引標籤的 **Instance refreshes** (執行個體重新整理) 中，選擇 **Start instance refresh** (啟動執行個體重新整理)。

1. 針對**可用性設定**，執行以下操作：

   1. 針對**執行個體取代方法**：
      + 如果您*尚未*在 Auto Scaling 群組上設定執行個體維護政策，則**執行個體取代方法**的預設設定為**終止並啟動**。這是執行個體重新整理的舊版預設行為。
      + 如果您在 Auto Scaling 群組上設定了執行個體維護政策，則該政策會提供**執行個體取代方法**的預設值。若要覆寫執行個體維護政策，請選擇**覆寫**。覆寫功能僅適用於目前的執行個體重新整理。下次啟動執行個體重新整理時，這些值會重設為執行個體維護政策的預設值。

      下列程序說明如何更新執行個體取代方法。

      1. 選擇下列其中一種執行個體取代方法：
         + **終止前啟動**：必須先佈建新執行個體，才能終止現有執行個體。對於重視可用性多於節省成本的應用程式來說，這是理想的選擇。
         + **終止並啟動**：在終止現有執行個體的同時佈建新執行個體。對於重視節省成本多於可用性的應用程式來說，這是理想的選擇。對於不應啟動超過目前可用容量的應用程式而言，這也是一個不錯的選擇。
         + **自訂行為**：此選項可讓您根據想要在取代執行個體時的可用容量來設定自訂上下限範圍。這可協助您在成本和可用性之間取得適當的平衡。

      1. 針對**設定正常運作狀態百分比**，請輸入下列一個或兩個欄位的值。啟用欄位會因您為**執行個體取代方法**所選的選項而異。
         + **下限**：設定繼續執行個體重新整理所需的狀態良好最低百分比。
         + **上限**：設定執行個體重新整理時可能的狀態良好最高百分比。

      1. 展開**根據目前群組大小在取代期間檢視預估的臨時容量**區段，以確認如何在群組中套用**下限**和**上限**。使用的實際值取決於所需的容量值，此值會隨群組擴展而有所改變。

      1. 展開**設定無效取代大小的回復行為**區段，然後選擇是否**違反正常運作狀態百分比上限**，以排列可用性的優先順序，或選擇**違反正常運作狀態百分比下限**。

         對於非常小的群組，不建議保留預設的**違反正常運作狀態百分比下限**選項。如果 Auto Scaling 群組中只有一個執行個體，啟動執行個體重新整理可能會導致中斷。

         如果您使用的 Auto Scaling 群組尚未設定執行個體維護政策，則此步驟會設定回復行為。當您的群組有執行個體維護政策時，此選項無法使用，也不會顯示。另外，此選項僅適用於**終止並啟動**取代方法。其他取代方法將違反狀態良好最高百分比，以便優先考慮可用性。

   1. 在**執行個體暖機期**中，輸入從新執行個體的狀態變更為 `InService` 到完成初始化所經過的秒數。Amazon EC2 Auto Scaling 會等待這段時間，然後再繼續取代下一個執行個體。

      暖機時，新啟動的執行個體也不會計入 Auto Scaling 群組的彙總執行個體指標 (例如 `CPUUtilization`、`NetworkIn` 和 `NetworkOut`)。如果將擴展政策新增至 Auto Scaling 群組，則擴展活動會平行執行。如果您為執行個體重新整理暖機期設定了長間隔，則新啟動的執行個體在指標中顯示需要更多時間。因此，足夠的暖機期可防止 Amazon EC2 Auto Scaling 擴展過時的指標資料。

      如果您已經正確定義 Auto Scaling 群組的預設執行個體暖機期，就不需要變更執行個體暖機期。但是，如果您想要覆寫預設值，您可以為此選項設定一個值。如需有關設定預設執行個體暖機期的詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

1. 針對**重新整理設定**，執行以下操作：

   1. (選用) 在 **Checkpoints** (檢查點) 欄位中，選擇 **Enable checkpoints** (啟用檢查點)，以使用對執行個體重新整理的增量或分階段方法來取代執行個體。這會為每次取代之間的驗證提供額外時間。如果您選擇不啟用檢查點，則執行個體會在一次近乎連續的操作中被取代。

      如果您要啟用檢查點，請參閱 [啟用檢查點 (主控台)](enable-checkpoints-console-cli.md#enable-checkpoints-console) 了解額外的步驟。

   1. （選用） 對於**製作時間**，指定執行個體重新整理結束時，執行個體重新整理視為完成之前要等待的時間量。

   1. 啟用或關閉 **Skip matching** (略過相符項目)：
      + 若要略過取代已與啟動範本相符的執行個體，請讓**啟用略過相符項目**核取方塊保持為已勾選的狀態。
      + 如果清除此核取方塊來關閉略過相符項目，則會取代所有執行個體。

      當您啟用跳過比對時，您可以設定新啟動範本或啟動範本的新版本，而不是使用現有啟動範本。可以在**啟動執行個體重新整理**頁面的**所需組態**區段中執行這項操作。
**注意**  
若要使用略過相符項目功能來更新目前使用啟動組態的 Auto Scaling 群組，您必須在 **Desired configuration** (所需設定) 中選擇啟動範本。不支援搭配啟動組態執行跳過比對動作。

   1. 對於**待命執行個體**，請選擇**忽略**、**終止**或**等待**。這會決定找到 `Standby` 狀態的執行個體時所發生的情況。如需詳細資訊，請參閱[從 Auto Scaling 群組暫時移除執行個體](as-enter-exit-standby.md)。

      如果您選擇**等待**，則必須採取其他步驟以讓這些執行個體回到正常運作狀態。如果不這樣做，執行個體重新整理會取代所有 `InService` 執行個體，並等待一小時。然後，如果任何 `Standby` 執行個體仍然存在，執行個體重新整理就會失敗。為了避免此情況，請改為選擇**忽略**或**終止**這些執行個體。

   1. 對於**受縮減保護的執行個體**，請選擇**忽略**、**取代**或**等待**。這會決定找到受縮減保護的執行個體時所發生的情況。如需詳細資訊，請參閱[使用執行個體縮減保護來控制執行個體終止](ec2-auto-scaling-instance-protection.md)。

      如果您選擇**等待**，則必須採取其他步驟以移除這些執行個體的縮減保護。如果不這樣做，執行個體重新整理會取代所有未受保護的執行個體，並等待一小時。然後，如果任何受縮減保護的執行個體仍然存在，執行個體重新整理就會失敗。為了避免此情況，請改為選擇**忽略**或**取代**這些執行個體。

1. (選用) 針對 **CloudWatch 警示**，選擇**啟用 CloudWatch 警示**，然後選擇一個或多個警示。CloudWatch 警示可用於識別任何問題，並在警示進入 `ALARM` 狀態時使作業失敗。如需詳細資訊，請參閱[使用自動復原啟動執行個體重新整理](instance-refresh-rollback.md#instance-refresh-using-auto-rollback)。

1. (選用) 展開**所需組態**區段，指定您想要對 Auto Scaling 群組進行的更新。

   對於此步驟，您可以選擇使用 JSON 或 YAML 語法來編輯參數值，而不用在主控台界面中進行選擇。若要執行此作業，請選擇 **Use code editor** (使用程式碼編輯器)，不要選擇 **Use console interface** (使用主控台界面)。下列程序說明如何使用主控台界面進行選擇。

   1. 針對 **Update launch template** (更新啟動範本)：
      + 如果您*尚未*為 Auto Scaling 群組建立新啟動範本或新啟動範本版本，請勿勾選此核取方塊。
      + 如果您建立了新啟動範本或新啟動範本版本，請勾選此核取方塊。當您選取此選項時，Amazon EC2 Auto Scaling 會顯示目前的啟動範本和目前的啟動範本版本。還會列出任何其他可用版本。依序選擇啟動範本和版本。

        選擇版本後，便會看到版本資訊。這是執行個體重新整理過程中，取代執行個體時會使用的啟動範本版本。如果執行個體重新整理成功，則在新執行個體啟動時 (例如群組擴展時) 也會使用此版本的啟動範本。

   1. 針對 **Choose a set of instance types and purchase options to override the instance type in the launch template** (選擇一組執行個體類型和購買選項，以覆寫啟動範本中的執行個體類型)：
      + 如果您希望使用您在啟動範本中指定的執行個體類型和購買選項，請勿勾選此核取方塊。
      + 如果您希望複寫啟動範本中的執行個體類型或執行 Spot 執行個體，請勾選此核取方塊。您可以手動新增每個執行個體類型，或選擇一個主要執行個體類型和建議選項，用於為您擷取任何其他相符的執行個體類型。如果您打算啟動 Spot 執行個體，建議您新增幾種不同的執行個體類型。這樣，如果所選可用區域中的執行個體容量不足，則 Amazon EC2 Auto Scaling 可以啟動其他執行個體類型。如需詳細資訊，請參閱[具有多種執行個體類型和購買選項的 Auto Scaling 群組](ec2-auto-scaling-mixed-instances-groups.md)。
**警告**  
請勿將 Spot 執行個體與無法處理 Spot 執行個體中斷的應用程式搭配使用。如果 Amazon EC2 Spot 服務需要回收容量，則可能會發生中斷。

      如果您選中此核取方塊，請確保啟動範本尚未請求 Spot 執行個體。您無法使用執行下列操作的啟動範本：請求 Spot 執行個體建立使用多個執行個體類型的 Auto Scaling 群組，以及啟動 Spot 執行個體與隨需執行個體。
**注意**  
如果要在目前使用啟動組態的 Auto Scaling 群組中設定這些選項，您必須在 **Update launch template** (更新啟動範本) 中選擇啟動範本。不支援在啟動組態中覆寫執行個體類型。

1. (選用) 對於**復原設定**，請選擇**啟用自動復原**，以在執行個體重新整理失敗時自動復原。

   僅當 Auto Scaling 群組符合使用復原的先決條件時，才可以啟用此設定。

   如需詳細資訊，請參閱[使用手動或自動轉返復原變更](instance-refresh-rollback.md)。

1. 檢查您的所有選擇，以確認所有項目都已正確設定。

   此時，最好驗證目前更改和提議更改之間的差異，確認差異是否會以意外或不想要的方式影響您的應用程式。若要確認您的執行個體類型是否與啟動範本相容，請參閱[執行個體類型相容性](instance-refresh-overview.md#instance-type-compatibility)。

1. 若您對執行個體重新整理的選取項目感到滿意，請選擇**啟動執行個體重新整理**。

### 在主控台中啟動執行個體重新整理 (混合執行個體群組)
<a name="starting-an-instance-refresh-in-the-console-mig"></a>

如果您使用[混合執行個體政策](ec2-auto-scaling-mixed-instances-groups.md)建立了 Auto Scaling 群組，請使用下列程序。如果您尚未為您的群組定義混合執行個體政策，請參閱 [在主控台中啟動執行個體重新整理 (基本程序)](#starting-an-instance-refresh-in-the-console) 以啟動執行個體重新整理。

**啟動執行個體重新整理**

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. 在 **Instance refresh** (執行個體重新整理) 索引標籤的 **Instance refreshes** (執行個體重新整理) 中，選擇 **Start instance refresh** (啟動執行個體重新整理)。

1. 針對**可用性設定**，執行以下操作：

   1. 針對**執行個體取代方法**：
      + 如果您*尚未*在 Auto Scaling 群組上設定執行個體維護政策，則**執行個體取代方法**的預設設定為**終止並啟動**。這是執行個體重新整理的舊版預設行為。
      + 如果您在 Auto Scaling 群組上設定了執行個體維護政策，則該政策會提供**執行個體取代方法**的預設值。若要覆寫執行個體維護政策，請選擇**覆寫**。覆寫功能僅適用於目前的執行個體重新整理。下次啟動執行個體重新整理時，這些值會重設為執行個體維護政策的預設值。

      下列程序說明如何更新執行個體取代方法。

      1. 選擇下列其中一種執行個體取代方法：
         + **終止前啟動**：必須先佈建新執行個體，才能終止現有執行個體。對於重視可用性多於節省成本的應用程式來說，這是理想的選擇。
         + **終止並啟動**：在終止現有執行個體的同時佈建新執行個體。對於重視節省成本多於可用性的應用程式來說，這是理想的選擇。對於不應啟動超過目前可用容量的應用程式而言，這也是一個不錯的選擇。
         + **自訂行為**：此選項可讓您根據想要在取代執行個體時的可用容量來設定自訂上下限範圍。這可協助您在成本和可用性之間取得適當的平衡。

      1. 針對**設定正常運作狀態百分比**，請輸入下列一個或兩個欄位的值。啟用欄位會因您為**執行個體取代方法**所選的選項而異。
         + **下限**：設定繼續執行個體重新整理所需的狀態良好最低百分比。
         + **上限**：設定執行個體重新整理時可能的狀態良好最高百分比。

      1. 展開**根據目前群組大小在取代期間檢視預估的臨時容量**區段，以確認如何在群組中套用**下限**和**上限**。使用的實際值取決於所需的容量值，此值會隨群組擴展而有所改變。

      1. 展開**設定無效取代大小的回復行為**區段，然後選擇是否**違反正常運作狀態百分比上限**，以排列可用性的優先順序，或選擇**違反正常運作狀態百分比下限**。

         對於非常小的群組，不建議保留預設的**違反正常運作狀態百分比下限**選項。如果 Auto Scaling 群組中只有一個執行個體，啟動執行個體重新整理可能會導致中斷。

         如果您使用的 Auto Scaling 群組尚未設定執行個體維護政策，則此步驟會設定回復行為。當您的群組有執行個體維護政策時，此選項無法使用，也不會顯示。另外，此選項僅適用於**終止並啟動**取代方法。其他取代方法將違反狀態良好最高百分比，以便優先考慮可用性。

   1. 在**執行個體暖機期**中，輸入從新執行個體的狀態變更為 `InService` 到完成初始化所經過的秒數。Amazon EC2 Auto Scaling 會等待這段時間，然後再繼續取代下一個執行個體。

      暖機時，新啟動的執行個體也不會計入 Auto Scaling 群組的彙總執行個體指標 (例如 `CPUUtilization`、`NetworkIn` 和 `NetworkOut`)。如果將擴展政策新增至 Auto Scaling 群組，則擴展活動會平行執行。如果您為執行個體重新整理暖機期設定了長間隔，則新啟動的執行個體在指標中顯示需要更多時間。因此，足夠的暖機期可防止 Amazon EC2 Auto Scaling 擴展過時的指標資料。

      如果您已經正確定義 Auto Scaling 群組的預設執行個體暖機期，就不需要變更執行個體暖機期。但是，如果您想要覆寫預設值，您可以為此選項設定一個值。如需有關設定預設執行個體暖機期的詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

1. 針對**重新整理設定**，執行以下操作：

   1. (選用) 在 **Checkpoints** (檢查點) 欄位中，選擇 **Enable checkpoints** (啟用檢查點)，以使用對執行個體重新整理的增量或分階段方法來取代執行個體。這會為每次取代之間的驗證提供額外時間。如果您選擇不啟用檢查點，則執行個體會在一次近乎連續的操作中被取代。

      如果您要啟用檢查點，請參閱 [啟用檢查點 (主控台)](enable-checkpoints-console-cli.md#enable-checkpoints-console) 了解額外的步驟。

   1. 啟用或關閉 **Skip matching** (略過相符項目)：
      + 若要略過取代已與啟動範本相符的執行個體以及任何執行個體類型覆寫，請讓**啟用略過相符項目**核取方塊保持為已勾選的狀態。
      + 如果您選擇清除此核取方塊來關閉略過相符項目，則可取代所有執行個體。

      當您啟用跳過比對時，您可以設定新啟動範本或啟動範本的新版本，而不是使用現有啟動範本。可以在**啟動執行個體重新整理**頁面的**所需組態**區段中執行這項操作。您也可以在 **Desired configuration** (所需組態) 中更新執行個體類型覆寫。

   1. 對於**待命執行個體**，請選擇**忽略**、**終止**或**等待**。這會決定找到 `Standby` 狀態的執行個體時所發生的情況。如需詳細資訊，請參閱[從 Auto Scaling 群組暫時移除執行個體](as-enter-exit-standby.md)。

      如果您選擇**等待**，則必須採取其他步驟以讓這些執行個體回到正常運作狀態。如果不這樣做，執行個體重新整理會取代所有 `InService` 執行個體，並等待一小時。然後，如果任何 `Standby` 執行個體仍然存在，執行個體重新整理就會失敗。為了避免此情況，請改為選擇**忽略**或**終止**這些執行個體。

   1. 對於**受縮減保護的執行個體**，請選擇**忽略**、**取代**或**等待**。這會決定找到受縮減保護的執行個體時所發生的情況。如需詳細資訊，請參閱[使用執行個體縮減保護來控制執行個體終止](ec2-auto-scaling-instance-protection.md)。

      如果您選擇**等待**，則必須採取其他步驟以移除這些執行個體的縮減保護。如果不這樣做，執行個體重新整理會取代所有未受保護的執行個體，並等待一小時。然後，如果任何受縮減保護的執行個體仍然存在，執行個體重新整理就會失敗。為了避免此情況，請改為選擇**忽略**或**取代**這些執行個體。

1. (選用) 針對 **CloudWatch 警示**，選擇**啟用 CloudWatch 警示**，然後選擇一個或多個警示。CloudWatch 警示可用於識別任何問題，並在警示進入 `ALARM` 狀態時使作業失敗。如需詳細資訊，請參閱[使用自動復原啟動執行個體重新整理](instance-refresh-rollback.md#instance-refresh-using-auto-rollback)。

1. 在 **Desired configuration** (所需組態) 區段中，執行下列操作。

   對於此步驟，您可以選擇使用 JSON 或 YAML 語法來編輯參數值，而不用在主控台界面中進行選擇。若要執行此作業，請選擇 **Use code editor** (使用程式碼編輯器)，不要選擇 **Use console interface** (使用主控台界面)。下列程序說明如何使用主控台界面進行選擇。

   1. 針對 **Update launch template** (更新啟動範本)：
      + 如果您*尚未*為 Auto Scaling 群組建立新啟動範本或新啟動範本版本，請勿勾選此核取方塊。
      + 如果您建立了新啟動範本或新啟動範本版本，請勾選此核取方塊。當您選取此選項時，Amazon EC2 Auto Scaling 會顯示目前的啟動範本和目前的啟動範本版本。還會列出任何其他可用版本。依序選擇啟動範本和版本。

        選擇版本後，便會看到版本資訊。這是執行個體重新整理過程中，取代執行個體時會使用的啟動範本版本。如果執行個體重新整理成功，則在新執行個體啟動時 (例如群組擴展時) 也會使用此版本的啟動範本。

   1. 針對 **Use these settings to override the instance type and purchase option defined in the launch template** (使用這些設定覆寫啟動範本中所定義的執行個體類型和購買選項)：

      根據預設，會選取此核取方塊。Amazon EC2 Auto Scaling 會使用目前在 Auto Scaling 群組的*混合執行個體政策*中設定的值填入每個參數。僅針對您想要變更的參數來更新參數值。如需這些設定的指導，請參閱 [具有多種執行個體類型和購買選項的 Auto Scaling 群組](ec2-auto-scaling-mixed-instances-groups.md)。
**警告**  
建議您不要清除此核取方塊。只有當您想停止使用混合執行個體政策時才清除它。在執行個體重新整理成功後，Amazon EC2 Auto Scaling 會更新您的群組，以符合 **Desired configuration** (所需組態)。如果 Amazon EC2 Auto Scaling 不再包含混合執行個體政策，則會逐步終止目前正在執行的所有 Spot 執行個體，並將其取代為隨需執行個體。或者，如果您的啟動範本請求 Spot 執行個體，則 Amazon EC2 Auto Scaling 會逐漸終止目前執行的所有隨需執行個體，並用 Spot 執行個體取代它們。

1. (選用) 對於**復原設定**，請選擇**啟用自動復原**，以在執行個體重新整理因任何原因失敗時自動復原。

   僅當 Auto Scaling 群組符合使用復原的先決條件時，才可以啟用此設定。

   如需詳細資訊，請參閱[使用手動或自動轉返復原變更](instance-refresh-rollback.md)。

1. 檢查您的所有選擇，以確認所有項目都已正確設定。

   此時，最好驗證目前更改和提議更改之間的差異，確認差異是否會以意外或不想要的方式影響您的應用程式。若要確認您的執行個體類型是否與啟動範本相容，請參閱[執行個體類型相容性](instance-refresh-overview.md#instance-type-compatibility)。

   若您對執行個體重新整理的選取項目感到滿意，請選擇**啟動執行個體重新整理**。

## 啟動執行個體重新整理 (AWS CLI)
<a name="start-instance-refresh-cli"></a>

**啟動執行個體重新整理**  
請使用 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令，從 AWS CLI啟動執行個體重新整理。您可以指定要在 JSON 組態檔案中變更的任何偏好設定。當您參考組態檔案時，請提供檔案路徑和名稱，如下列範例所示。

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

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 50,
      "AutoRollback": true,
      "ScaleInProtectedInstances": Ignore,
      "StandbyInstances": Terminate
    }
}
```

如果未提供偏好設定，則會使用預設值。如需詳細資訊，請參閱[了解執行個體重新整理的預設值](understand-instance-refresh-default-values.md)。

輸出範例：

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

# 使用 AWS 管理主控台 或 監控執行個體重新整理 AWS CLI
<a name="check-status-instance-refresh"></a>

您可以使用 AWS 管理主控台 或 監控進行中執行個體重新整理，或查詢過去六週內執行個體重新整理的狀態 AWS CLI。

## 監控並檢查執行個體重新整理的狀態
<a name="monitor-and-check-status"></a>

若要監控和檢查執行個體重新整理的狀態，請使用下列其中一種方法：

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

**提示**  
在此程序中，應該已顯示具名資料欄。若要顯示隱藏的資料欄或變更顯示的資料列數，請選擇區段右上角的齒輪圖示以開啟偏好設定模式。視需要更新設定，然後選擇**確認**。

**監控和檢查執行個體重新整理的狀態 （主控台）**

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

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

   頁面底部會開啟一個分割窗格。

1. 在 **Instance refresh** (執行個體重新整理) 索引標籤的 **Instance refreshes history** (執行個體重新整理歷史記錄) 下，您可以查看 **Status** (狀態) 資料欄來判斷請求的狀態。操作在初始化時會進入 `Pending` 狀態。然後狀態應該會快速變更為 `InProgress`。當所有執行個體都更新後，狀態會變更為 `Successful`。

1. 您可以檢視群組的擴展活動，進一步監控進行中活動的成功或失敗。在 **Activity (活動)** 索引標籤的 **Activity history (活動歷史記錄)** 下，當執行個體重新整理開始時，您會在執行個體終止時看到項目，並在執行個體啟動時看到另一組項目。如果您有許多擴展活動，您可以選擇活動歷史記錄頂端的 **>** 圖示來查看更多。如需有關對可能導致活動失敗的問題進行故障診斷的資訊，請參閱 [對 Amazon EC2 Auto Scaling 中的問題進行故障診斷](CHAP_Troubleshooting.md)。

1. （選用） 在**執行個體管理**索引標籤的**執行個體**下，您可以視需要檢閱特定執行個體的進度。

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

**監控和檢查執行個體重新整理的狀態 (AWS CLI)**  
使用下列 [describe-instance-refreshes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-instance-refreshes.html) 命令。

```
aws autoscaling describe-instance-refreshes --auto-scaling-group-name my-asg
```

以下為範例輸出。

執行個體重新整理會依開始時間排序。首先說明仍在進行中的執行個體重新整理。

```
{
  "InstanceRefreshes":[
    {
      "InstanceRefreshId":"08b91cf7-8fa6-48af-b6a6-d227f40f1b9b",
      "AutoScalingGroupName":"my-asg",
      "Status":"InProgress",
      "StatusReason":"Waiting for instances to warm up before continuing. For example: i-0645704820a8e83ff is warming up.",
      "StartTime":"2023-11-24T16:46:52+00:00",
      "PercentageComplete":50,
      "InstancesToUpdate":0,
      "Preferences":{
        "MaxHealthyPercentage":120,
        "MinHealthyPercentage":90,
        "InstanceWarmup":60,
        "SkipMatching":false,
        "AutoRollback":true,
        "ScaleInProtectedInstances":"Ignore",
        "StandbyInstances":"Ignore"
      }
    },
    {
      "InstanceRefreshId":"0e151305-1e57-4a32-a256-1fd14157c5ec",
      "AutoScalingGroupName":"my-asg",
      "Status":"Successful",
      "StartTime":"2023-11-22T13:53:37+00:00",
      "EndTime":"2023-11-22T13:59:45+00:00",
      "PercentageComplete":100,
      "InstancesToUpdate":0,
      "Preferences":{
        "MaxHealthyPercentage":120,
        "MinHealthyPercentage":90,
        "InstanceWarmup":60,
        "SkipMatching":false,
        "AutoRollback":true,
        "ScaleInProtectedInstances":"Ignore",
        "StandbyInstances":"Ignore"
      }
    }
  ]
}
```

您可以檢視群組的擴展活動，進一步監控進行中活動的成功或失敗。擴展活動也可協助您深入了解更多詳細資訊，以協助您針對執行個體重新整理的問題進行疑難排解。如需詳細資訊，請參閱[對 Amazon EC2 Auto Scaling 中的問題進行故障診斷](CHAP_Troubleshooting.md)。

------

## 執行個體重新整理狀態
<a name="instance-refresh-statuses"></a>

當您啟動執行個體重新整理時，它會進入**擱置中**狀態。它會從**擱置中**傳遞至**進行中**，直到達到**成功**、**失敗**、**已取消**、**復原成功**或**復原失敗**為止。

執行個體重新整理可以具有下列狀態：


| 狀態 | Description | 
| --- | --- | 
| 待定 | 已建立請求，但執行個體重新整理尚未啟動。 | 
| InProgress | 執行個體重新整理正在進行中。 | 
| 成功 | 執行個體重新整理已成功完成。 | 
| 失敗 | 無法完成執行個體重新整理。您可以使用狀態原因和擴展活動進行疑難排解。 | 
| 取消 | 正在取消進行中的執行個體重新整理。 | 
| 已取消 | 執行個體重新整理已取消。 | 
| 復原進行中 | 正在復原執行個體重新整理。 | 
| 復原失敗 | 復原無法完成。您可以使用狀態原因和擴展活動進行疑難排解。 | 
| 復原成功 | 復原已成功完成。 | 
| 烘焙 | 執行個體重新整理完成更新執行個體後，等待指定的製作時間。 | 

# 在執行個體重新整理期間取代根磁碟區
<a name="replace-root-volume"></a>

**Topics**
+ [運作方式](#start-instance-refresh-replace-root-volume-how-it-works)
+ [要求](#start-instance-refresh-replace-root-volume-requirements)
+ [使用取代根磁碟區啟動執行個體重新整理](#start-instance-refresh-replace-root-volume-cli)
+ [限制](#start-instance-refresh-replace-root-volume-limitations)
+ [使用生命週期掛鉤取代根磁碟區](#replace-root-volume-lifecycle-hooks)

## 運作方式
<a name="start-instance-refresh-replace-root-volume-how-it-works"></a>

根磁碟區取代只會取代根 EBS 磁碟區，同時讓執行個體保持執行狀態，以更新您的執行個體。這消除了啟動新執行個體的需求，並避免潛在的容量限制。此程序會保留所有其他執行個體資源，包括：
+ 網路介面和 IP 地址 
+ 非根 EBS 磁碟區 
+ 執行個體存放區磁碟區和資料 
+ 安全群組和 IAM 角色 

在根磁碟區取代期間，您的應用程式會繼續在現有執行個體上執行。原始根磁碟區會分離，從您指定的 AMI 建立新的根磁碟區，然後連接至相同的執行個體。原始根磁碟區會在成功取代後自動刪除。

當您使用取代根磁碟區策略時，執行個體會經歷以下生命週期狀態：

1. `ReplacingRootVolume` - 根磁碟區取代開始

1. `ReplacingRootVolume:Wait` - 等待生命週期掛鉤完成 （如果已設定）

1. `ReplacingRootVolume:Proceed` - 繼續替換

1. `RootVolumeReplaced` - 已成功完成取代

根磁碟區取代完成後，Auto Scaling 會對更新的執行個體執行運作狀態檢查。如果執行個體的根磁碟區取代失敗，Auto Scaling 會將該執行個體標記為終止，並以新的執行個體取代。

## 要求
<a name="start-instance-refresh-replace-root-volume-requirements"></a>
+ Auto Scaling 群組必須使用混合執行個體政策
+ 混合執行個體政策中的所有覆寫都必須指定 `ImageId` 
+ AMIs只能包含單一根磁碟區
+ 所有執行個體都必須符合群組的啟動範本組態
+ 您必須使用具有包含`ImageId`覆寫之混合執行個體政策的所需組態來啟動執行個體重新整理。

## 使用取代根磁碟區啟動執行個體重新整理
<a name="start-instance-refresh-replace-root-volume-cli"></a>

**使用取代根磁碟區 (AWS CLI) 啟動執行個體重新整理**  
使用下列 [start-instance-refresh ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令，從 啟動執行個體重新整理 AWS CLI。您可以指定要在 JSON 組態檔案中變更的任何偏好設定。當您參考組態檔案時，請提供檔案路徑和名稱，如下列範例所示。

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

`config.json` 的內容：

**Example**  

```
{
  "AutoScalingGroupName": "my-asg",
  "Strategy" : "ReplaceRootVolume",
  "DesiredConfiguration":{
    "MixedInstancesPolicy":{
      "LaunchTemplate": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId":"my-launch-template",
          "Version": "1"
        },
        "Overrides": [
          {
            "InstanceType":"c5.large",
            "ImageId":"ami-1234example"
          },
          {
            "InstanceType":"m5.large",
            "ImageId":"ami-2345example"
          }
        ]
      }
    }
  },
  "Preferences": {
    "InstanceWarmup": 60,
    "MinHealthyPercentage": 90,
    "AutoRollback": true,
    "ScaleInProtectedInstances": Ignore,
    "StandbyInstances": Ignore
  }
}
```

如果未提供偏好設定，則會使用預設值。如需詳細資訊，請參閱[了解執行個體重新整理的預設值](understand-instance-refresh-default-values.md)。

輸出範例：

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

## 限制
<a name="start-instance-refresh-replace-root-volume-limitations"></a>
+ 如果 EC2 Auto Scaling 群組或執行個體重新整理所需的組態使用 `$Latest`或`$Default`啟動範本版本，則無法使用取代根磁碟區啟動執行個體重新整理。
+ 如果執行個體包含執行個體類型不存在於混合執行個體政策中的執行個體，則無法使用取代 Amazon EC2 Auto Scaling 群組上的根磁碟區來啟動執行個體重新整理。
+ 使用取代根磁碟區重新整理執行個體期間，您只能連接具有所需組態混合執行個體政策中存在之類型的執行個體。
+ 您無法在具有暖集區的 EC2 Auto Scaling 群組上使用取代根磁碟區來啟動執行個體重新整理。
+ 您無法將暖集區新增至使用取代根磁碟區重新整理作用中執行個體的 Amazon EC2 Auto Scaling 群組。

## 使用生命週期掛鉤取代根磁碟區
<a name="replace-root-volume-lifecycle-hooks"></a>

正在進行根磁碟區取代的執行個體會遵循自己的生命週期轉換，可讓您在取代之前和/或之後叫用動作 （例如 Lambda 函數）。如需根磁碟區取代期間生命週期狀態的詳細資訊，請參閱 [正在進行根磁碟區取代之執行個體的生命週期狀態轉換](lifecycle-hooks-overview.md#rvr-lifecycle-state-transitions)。

如需有關新增 lifecycle hook 的詳細資訊，請參閱 [將生命週期掛鉤新增至 Auto Scaling 群組](adding-lifecycle-hooks.md)。如需有關完成生命週期動作的詳細資訊，請參閱 [在 Auto Scaling 群組中完成生命週期動作](completing-lifecycle-hooks.md)。

在根磁碟區取代之前，生命週期關聯在下列案例中非常有用：
+ 您想要在取代根磁碟區並重新啟動執行個體之前，正常關閉應用程式。
+ 您想要在取代磁碟區之前，將資料從根磁碟區移至另一個位置。

在根磁碟區取代之後，生命週期掛鉤在下列案例中非常有用：
+ 您想要在新 AMI 開始接收流量之前，確認執行個體已完全就緒。
+ 您想要引導先前存在於根磁碟區上的應用程式資料。

在新增 lifecycle hook 時，請考慮以下事項：
+ 為生命週期動作設定`autoscaling:EC2_INSTANCE_TERMINATING`生命週期掛鉤時，即將進行根磁碟區取代的執行個體會在達到 `ReplacingRootVolume:Wait` 狀態時暫停，以執行自訂動作。
+ 為生命週期動作設定`autoscaling:EC2_INSTANCE_LAUNCHING`生命週期掛鉤時，剛取代其根磁碟區的執行個體會在達到 `Pending:Wait` 狀態時暫停，以執行自訂動作。

當執行個體進入等待狀態時，Amazon EC2 Auto Scaling 會傳送通知。Auto Scaling 生命週期掛鉤通知包含值為 `Action`的欄位`ReplaceRootVolume`，表示執行個體正在進行根磁碟區取代。

有關這些通知的範例，請參閱本指南的「EventBridge」章節。如需更多資訊，請參閱[執行個體重新整理取代根磁碟區生命週期事件](instance-refresh-eventbridge-events.md#instance-refresh-rvr-lifecycle-events)。

# 使用 AWS 管理主控台 或 取消執行個體重新整理 AWS CLI
<a name="cancel-instance-refresh"></a>

您可以取消仍在進行中的執行個體重新整理。該作業完成後即無法取消。

取消執行個體重新整理並不會復原任何已取代的執行個體。若要復原對執行個體所進行的變更，請改為執行復原。如需詳細資訊，請參閱[使用手動或自動轉返復原變更](instance-refresh-rollback.md)。

**Topics**
+ [取消執行個體重新整理 (主控台)](#cancel-instance-refresh-console)
+ [取消執行個體重新整理 (AWS CLI)](#cancel-instance-refresh-cli)

## 取消執行個體重新整理 (主控台)
<a name="cancel-instance-refresh-console"></a>

**取消執行個體重新整理**

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

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

1. 在**執行個體重新整理**索引標籤的**作用中執行個體重新整理**中，選擇**動作** > **取消**。

1. 出現確認提示時，選擇 **Confirm (確認)**。

執行個體重新整理的狀態隨即設定為**取消中**。取消完成後，執行個體重新整理的狀態就會設定為**已取消**。

## 取消執行個體重新整理 (AWS CLI)
<a name="cancel-instance-refresh-cli"></a>

**取消執行個體重新整理**  
使用 中的 [cancel-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/cancel-instance-refresh.html) 命令 AWS CLI ，並提供 Auto Scaling 群組名稱。

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

輸出範例：

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

**若要取消執行個體重新整理，而不等待轉換執行個體**  
使用 `--no-wait-for-transitioning-instances`選項搭配來自 的 [cancel-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/cancel-instance-refresh.html) 命令 AWS CLI ，取消執行個體重新整理，而無需等待轉換執行個體。

```
aws autoscaling cancel-instance-refresh —auto-scaling-group-name my-asg --no-wait-for-transitioning-instances
```

根據預設，當您取消執行個體重新整理時，Amazon EC2 Auto Scaling 會等待任何進行中的啟動和終止完成，然後再將狀態設定為**已取消**。如果您有長時間耗盡的執行個體，或需要立即啟動新的執行個體重新整理，您可以使用 命令，讓您不必等待這些轉換操作。

當您使用此選項時，執行個體重新整理狀態會變更為**已取消**，讓您啟動新的執行個體重新整理。任何進行中的啟動和終止都會在背景繼續。

# 使用手動或自動轉返復原變更
<a name="instance-refresh-rollback"></a>

您可以復原仍在進行中的執行個體重新整理。該作業完成後即無法復原。不過，您可以透過啟動新的執行個體重新整理，再次更新 Auto Scaling 群組。

復原時，Amazon EC2 Auto Scaling 會取代到目前為止已部署的執行個體。新執行個體會與您在啟動執行個體重新整理之前，上次儲存在 Auto Scaling 群組中的組態相符。

Amazon EC2 Auto Scaling 提供下列復原方式：
+ 手動復原：您可以手動啟動復原，以撤銷已部署到復原點的內容。
+ 自動復原：如果執行個體重新整理因某些原因而失敗，或您指定的任何 CloudWatch 警示進入 `ALARM` 狀態，Amazon EC2 Auto Scaling 會自動撤銷已部署的內容。

**Topics**
+ [考量事項](#instance-refresh-rollback-considerations)
+ [手動啟動復原](#instance-refresh-manual-rollback)
+ [使用自動復原啟動執行個體重新整理](#instance-refresh-using-auto-rollback)

## 考量事項
<a name="instance-refresh-rollback-considerations"></a>

使用復原時需要注意以下事項：
+ 只有在您指定了所需的組態作為啟動執行處理重新整理的一部分時，才能使用復原選項。
+ 如果啟動範本的版本為特定編號版本，您只能復原至一個先前版本。如果將 Auto Scaling 群組設定為使用 `$Latest` 或 `$Default` 啟動範本版本，則無法使用復原選項。
+ 您也無法轉返至設定為使用 AWS Systems Manager 參數存放區的 AMI 別名的啟動範本。
+ 您上次儲存在 Auto Scaling 群組中的組態必須處於穩定狀態。如果它未處於穩定狀態，仍會進行復原工作流程，但會以失敗告終。在您解決此問題之前，Auto Scaling 群組可能處於失敗狀態，無法再成功啟動執行個體。這可能會影響服務或應用程式的可用性。

## 手動啟動復原
<a name="instance-refresh-manual-rollback"></a>

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

**手動啟動執行個體重新整理的復原 (主控台)**

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

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

1. 在**執行個體重新整理**索引標籤的**作用中執行個體重新整理**中，選擇**動作** > **啟動復原**。

1. 出現確認提示時，選擇 **Confirm (確認)**。

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

**手動啟動執行個體重新整理的復原 (AWS CLI)**  
使用 AWS CLI 中的 [rollback-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/rollback-instance-refresh.html) 命令，並提供 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 指標為例，如果您使用 Application Load Balancer，便可以使用 `HTTPCode_ELB_5XX_Count` 和 `HTTPCode_ELB_4XX_Count` 指標。

**考量事項**
+ 如果您指定 CloudWatch 警示，但未啟用自動復原，且警示狀態進入 `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. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

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

1. 在 **Instance refresh** (執行個體重新整理) 索引標籤的 **Instance refreshes** (執行個體重新整理) 中，選擇 **Start instance refresh** (啟動執行個體重新整理)。

1. 遵循 [啟動執行個體重新整理 (主控台)](start-instance-refresh.md#start-instance-refresh-console) 的程序操作，並視需要設定執行個體重新整理。

1. (選用) 在**重新整理設定**下，針對 **CloudWatch 警示**，選擇**啟用 CloudWatch 警示**，然後選擇一個或多個警示以識別任何問題，並在警示進入 `ALARM` 狀態時使作業失敗。

1. 在**復原設定**下，選擇**啟用自動復原**，以便在開始執行個體重新整理之前，自動將失敗的執行個體重新整理復原至您上次儲存在 Auto Scaling 群組的設定。

1. 檢視您的選擇，然後選擇**啟動執行個體重新整理**。

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

**使用自動復原啟動執行個體重新整理 (AWS CLI)**  
使用 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令，並為 `Preferences` 中的 `AutoRollback` 選項指定 `true`。

下列範例示範如何在啟動執行個體重新整理時一旦發生失敗就會自動復原。以自訂值取代 *`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` 狀態時自動復原，請在 `Preferences` 中指定 `AlarmSpecification` 選項並提供警示名稱，如以下範例所示。以自訂值取代 *`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 本機將 更新為最新版本。

------

# 搭配略過相符項目使用執行個體重新整理
<a name="asg-instance-refresh-skip-matching"></a>

略過相符項目會讓 Amazon EC2 Auto Scaling 忽略已經有最新更新的執行個體。如此一來，您就不會取代超過需要的執行個體數量。當您想要確定 Auto Scaling 群組使用特定版本的啟動範本，並且僅取代使用不同版本的執行個體時，這會很有幫助。

略過相符項目有下列考量：
+ 如果同時使用略過相符項目和*所需組態*來啟動執行個體重新整理，Amazon EC2 Auto Scaling 會檢查是否有任何執行個體與所需組態相符。然後，它只會取代與您所需組態不相符的執行個體。執行個體重新整理成功後，Amazon EC2 Auto Scaling 會更新群組，以反映所需組態。
+ 如果您使用略過相符項目來啟動執行個體重新整理，但未指定所需組態，Amazon EC2 Auto Scaling 會檢查是否有任何執行個體與您上次儲存在 Auto Scaling 群組上的組態相符。然後，它只會取代與您上次儲存的組態不相符的執行個體。
+ 您可以將略過相符項目與新啟動範本、啟動範本新版本或一組執行個體類型搭配使用。如果啟用略過相符項目功能，但這些都沒有變更，則執行個體重新整理會立即成功，且不會取代任何執行個體。如果您對所需組態進行了任何其他變更 (例如變更 Spot 分配策略)，Amazon EC2 Auto Scaling 會等待執行個體重新整理成功完成。然後，它會更新 Auto Scaling 群組設定，以反映新的所需組態。
+ 您無法將略過相符項目功能與新的啟動組態搭配使用。
+ 當您啟動執行個體重新整理並提供所需的組態時，Amazon EC2 Auto Scaling 會確保所有執行個體都使用您所需的組態。因此，當您指定 `$Default`或 `$Latest`做為啟動範本的所需版本，然後在執行個體重新整理進行時建立新的啟動範本版本時，任何已取代的執行個體都會再次取代。
+ 略過比對並不知道啟動範本中的使用者資料指令碼是否會提取更新的程式碼，並將其安裝在新的執行個體上。因此，略過比對可能會略過取代已安裝過時程式碼的執行個體。在此情況下，您應該關閉略過相符項目，以確保即使沒有啟動範本版本更新，所有執行個體都會收到最新的程式碼。

本節包含啟動已啟用略過比對的執行個體重新整理 AWS CLI 的指示。如需使用主控台的說明，請參閱「[啟動執行個體重新整理 (主控台)](start-instance-refresh.md#start-instance-refresh-console)」。

## 略過相符項目 (基本程序)
<a name="skip-matching"></a>

請依照本節中的步驟，使用 AWS CLI 執行下列動作：
+ 建立您要套用到執行個體的啟動範本。
+ 啟動執行個體重新整理，以將啟動範本套用到 Auto Scaling 群組。如果您沒有啟用略過相符項目，則會取代所有執行個體。即使用於佈建執行個體的啟動範本與您為所需組態指定的啟動範本相同，也是如此。

**將略過相符項目功能與新啟動範本搭配使用**

1. 使用 [create-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-launch-template.html) 命令來為 Auto Scaling 群組建立新的啟動範本。請包含 `--launch-template-data` 選項，以及定義已為您 Auto Scaling 群組建立的執行個體詳細資訊的 JSON 輸入。

   例如，使用下列命令建立具有 AMI ID *`ami-0123456789abcdef0`* 和 `t2.micro` 執行個體類型的基本啟動範本。

   ```
   aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \
     --launch-template-data '{"ImageId":"ami-0123456789abcdef0","InstanceType":"t2.micro"}'
   ```

   如果成功，此命令傳回的輸出會類似如下。

   ```
   {
      "LaunchTemplate": {
        "LaunchTemplateId": "lt-068f72b729example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "CreateTime": "2023-01-30T18:16:06.000Z",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
     }
   }
   ```

   如需詳細資訊，請參閱[使用 建立和管理啟動範本的範例 AWS CLI](examples-launch-templates-aws-cli.md)。

1. 使用 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令來啟動執行個體取代工作流程，並套用具有 ID *`lt-068f72b729example`* 的新啟動範本。由於啟動範本是全新內容，因此只有一個版本。這表示啟動範本第 `1` 版是此執行個體重新整理的目標。如果在執行個體重新整理期間發生橫向擴展事件，而 Amazon EC2 Auto Scaling 使用此第 `1` 版啟動範本佈建新執行個體，它們則不會遭到取代。成功完成此操作後，新啟動範本便已成功套用到 Auto Scaling 群組。

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

   `config.json` 的內容。

   ```
   {
       "AutoScalingGroupName": "my-asg",
       "DesiredConfiguration": {
         "LaunchTemplate": {
             "LaunchTemplateId": "lt-068f72b729example",
             "Version": "$Default"
          }
       },
       "Preferences": {
         "SkipMatching": true
       }
   }
   ```

   如果成功，此命令傳回的輸出會類似如下。

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

## 略過相符項目 (混合執行個體群組)
<a name="skip-matching-mixed-instances-group"></a>

如果您有具有[混合執行個體政策](ec2-auto-scaling-mixed-instances-groups.md)的 Auto Scaling 群組，請依照本節中的步驟使用 AWS CLI 來啟動執行個體重新整理，並略過相符項目。您有下列選項：
+ 提供新啟動範本，以套用到政策中指定的所有執行個體類型。
+ 提供一組更新的執行個體類型 (不論是否變更政策中的啟動範本)。例如，您可能會想要從不需要的執行個體類型遷移。您可以依現狀使用啟動範本，而不變更要取代之執行個體的 AMI、安全群組或其他具體內容。

根據符合您需求的選項，依照下列其中一節中的步驟進行操作。

**將略過相符項目功能與新啟動範本搭配使用**

1. 使用 [create-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-launch-template.html) 命令來為 Auto Scaling 群組建立新的啟動範本。請包含 `--launch-template-data` 選項，以及定義已為您 Auto Scaling 群組建立的執行個體詳細資訊的 JSON 輸入。

   例如，使用下列命令建立具有 AMI ID *`ami-0123456789abcdef0`* 的啟動範本。

   ```
   aws ec2 create-launch-template --launch-template-name my-new-template --version-description version1 \
     --launch-template-data '{"ImageId":"ami-0123456789abcdef0"}'
   ```

   如果成功，此命令傳回的輸出會類似如下。

   ```
   {
      "LaunchTemplate": {
        "LaunchTemplateId": "lt-04d5cc9b88example",
        "LaunchTemplateName": "my-new-template",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "CreateTime": "2023-01-31T15:56:02.000Z",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
     }
   }
   ```

   如需詳細資訊，請參閱[使用 建立和管理啟動範本的範例 AWS CLI](examples-launch-templates-aws-cli.md)。

1. 若要檢視 Auto Scaling 群組的現有混合執行個體政策，請執行 [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 命令。當您啟動執行個體重新整理時，您在下一個步驟中會需要此資訊。

   下列命令範例會傳回針對名為 *`my-asg`* 之 Auto Scaling 群組所設定的混合執行個體政策。

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
   ```

   如果成功，此命令傳回的輸出會類似如下。

   ```
   {
     "AutoScalingGroups":[
       {
         "AutoScalingGroupName":"my-asg",
         "AutoScalingGroupARN":"arn",
         "MixedInstancesPolicy":{
           "LaunchTemplate":{
             "LaunchTemplateSpecification":{
               "LaunchTemplateId":"lt-073693ed27example",
               "LaunchTemplateName":"my-old-template",
               "Version":"$Default"
             },
             "Overrides":[
               {
                 "InstanceType":"c5.large"
               },
               {
                 "InstanceType":"c5a.large"
               },
               {
                 "InstanceType":"m5.large"
               },
               {
                 "InstanceType":"m5a.large"
               }
             ]
           },
           "InstancesDistribution":{
             "OnDemandAllocationStrategy":"prioritized",
             "OnDemandBaseCapacity":1,
             "OnDemandPercentageAboveBaseCapacity":50,
             "SpotAllocationStrategy":"price-capacity-optimized"
           }
         },
         "MinSize":1,
         "MaxSize":5,
         "DesiredCapacity":4,
         ...
       }
     ]
   }
   ```

1. 使用 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令來啟動執行個體取代工作流程，並套用具有 ID *`lt-04d5cc9b88example`* 的新啟動範本。由於啟動範本是全新內容，因此只有一個版本。這表示啟動範本第 `1` 版是此執行個體重新整理的目標。如果在執行個體重新整理期間發生橫向擴展事件，而 Amazon EC2 Auto Scaling 使用此第 `1` 版啟動範本佈建新執行個體，它們則不會遭到取代。成功完成此操作後，更新的混合執行個體政策便已成功套用到 Auto Scaling 群組。

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

   `config.json` 的內容。

   ```
   {
     "AutoScalingGroupName":"my-asg",
     "DesiredConfiguration":{
       "MixedInstancesPolicy":{
         "LaunchTemplate":{
           "LaunchTemplateSpecification":{
             "LaunchTemplateId":"lt-04d5cc9b88example",
             "Version":"$Default"
           },
           "Overrides":[
             {
               "InstanceType":"c5.large"
             },
             {
               "InstanceType":"c5a.large"
             },
             {
               "InstanceType":"m5.large"
             },
             {
               "InstanceType":"m5a.large"
             }
           ]
         },
         "InstancesDistribution":{
           "OnDemandAllocationStrategy":"prioritized",
           "OnDemandBaseCapacity":1,
           "OnDemandPercentageAboveBaseCapacity":50,
           "SpotAllocationStrategy":"price-capacity-optimized"
           }
         }
       }
     },
     "Preferences":{
       "SkipMatching":true
     }
   }
   ```

   如果成功，此命令傳回的輸出會類似如下。

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

在接下來的這個程序中，您會提供一組更新的執行個體類型，而不變更啟動範本。

**將略過相符項目與一組更新的執行個體類型搭配使用**

1. 若要檢視 Auto Scaling 群組的現有混合執行個體政策，請執行 [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 命令。當您啟動執行個體重新整理時，您在下一個步驟中會需要此資訊。

   下列命令範例會傳回針對名為 *`my-asg`* 之 Auto Scaling 群組所設定的混合執行個體政策。

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
   ```

   如果成功，此命令傳回的輸出會類似如下。

   ```
   {
     "AutoScalingGroups":[
       {
         "AutoScalingGroupName":"my-asg",
         "AutoScalingGroupARN":"arn",
         "MixedInstancesPolicy":{
           "LaunchTemplate":{
             "LaunchTemplateSpecification":{
               "LaunchTemplateId":"lt-073693ed27example",
               "LaunchTemplateName":"my-template-for-auto-scaling",
               "Version":"$Default"
             },
             "Overrides":[
               {
                 "InstanceType":"c5.large"
               },
               {
                 "InstanceType":"c5a.large"
               },
               {
                 "InstanceType":"m5.large"
               },
               {
                 "InstanceType":"m5a.large"
               }
             ]
           },
           "InstancesDistribution":{
             "OnDemandAllocationStrategy":"prioritized",
             "OnDemandBaseCapacity":1,
             "OnDemandPercentageAboveBaseCapacity":50,
             "SpotAllocationStrategy":"price-capacity-optimized"
           }
         },
         "MinSize":1,
         "MaxSize":5,
         "DesiredCapacity":4,
         ...
       }
     ]
   }
   ```

1. 使用 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令來啟動執行個體取代工作流程，並套用您的更新。若要取代使用特定執行個體類型的執行個體，所需組態必須指定僅包含您需要的執行個體類型的混合執行個體政策。您可以選擇是否在原處新增新的執行個體類型。

   下列命令範例會啟動執行個體重新整理，而不包含不需要的執行個體類型 *`m5a.large`*。當群組中的某個執行個體類型與剩下三個執行個體類型的其中一個不相符時，執行個體就會遭到取代。(請注意，執行個體重新整理不會選擇要從中佈建新執行個體的執行個體類型，[分配策略](allocation-strategies.md)才會這樣做。) 成功完成此操作後，更新的混合執行個體政策便已成功套用到 Auto Scaling 群組。

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

   `config.json` 的內容 

   ```
   {
     "AutoScalingGroupName":"my-asg",
     "DesiredConfiguration":{
       "MixedInstancesPolicy":{
         "LaunchTemplate":{
           "LaunchTemplateSpecification":{
             "LaunchTemplateId":"lt-073693ed27example",
             "Version":"$Default"
           },
           "Overrides":[
             {
               "InstanceType":"c5.large"
             },
             {
               "InstanceType":"c5a.large"
             },
             {
               "InstanceType":"m5.large"
             }
           ]
         },
         "InstancesDistribution":{
           "OnDemandAllocationStrategy":"prioritized",
           "OnDemandBaseCapacity":1,
           "OnDemandPercentageAboveBaseCapacity":50,
           "SpotAllocationStrategy":"price-capacity-optimized"
           }
         }
       }
     },
     "Preferences":{
       "SkipMatching":true
     }
   }
   ```

# 將檢查點新增至執行個體重新整理
<a name="asg-adding-checkpoints-instance-refresh"></a>

使用執行個體重新整理時，您可以選擇分階段取代執行個體，以便隨時對執行個體執行驗證。若要分階段執行取代，您可以新增檢查點，即執行個體重新整理暫停的時間點。使用檢查點可讓您更好地控制選擇更新 Auto Scaling 群組的方式。它可幫助您確認應用程式以可靠、可預測的方式運作。

**Topics**
+ [運作方式](#instance-refresh-checkpoints-how-it-works)
+ [考量事項](#instance-refresh-checkpoints-considerations)
+ [啟用檢查點](enable-checkpoints-console-cli.md)

## 運作方式
<a name="instance-refresh-checkpoints-how-it-works"></a>

開始執行個體重新整理時，請以 Auto Scaling 群組中執行個體總數的百分比來指定檢查點。這些檢查點指出 Auto Scaling 群組中執行個體的最小百分比，在檢查點被視為達到之前必須是新的執行個體。例如，如果您的檢查點是 `[20, 50, 100]`，當 20% 的執行個體是新的、50% 是新的，以及所有執行個體都是新的最終檢查點時，第一個檢查點就會到達。

Amazon EC2 Auto Scaling 會逐步取代執行個體，以符合指定的檢查點百分比，同時維持群組的運作狀態百分比下限。為了達到檢查點百分比，Amazon EC2 Auto Scaling 有時會取代較少的執行個體，但絕不會超過狀態良好最低百分比允許的比例。

請考慮下列具有 10 個執行個體的 Auto Scaling 群組。檢查點百分比為 `[20,50,100]`，狀態良好最低百分比為 80%，狀態良好最高百分比為 100%。為了維持狀態良好最低百分比，一次只會取代兩個執行個體。下圖概括了到達檢查點之前取代執行個體的程序。

![\[此圖表顯示檢查點如何影響執行個體重新整理的流程。\]](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/images/checkpoints-instance-refresh.png)


在上述範例中，每個啟動的新執行個體都有一個執行個體暖機期。您也可能有一個 lifecycle hook，會使執行個體進入等待狀態，然後在啟動或終止時執行自訂動作。

Amazon EC2 Auto Scaling 會為每個檢查點發出事件，但 100% 完成檢查點除外。您可以新增 EventBridge 規則，將事件傳送到 Amazon SNS 等目標。如此一來，當您可以執行所需的驗證時，系統就會通知您。如需詳細資訊，請參閱[針對執行個體重新整理事件建立 EventBridge 規則](monitor-events-eventbridge-sns.md)。

## 考量事項
<a name="instance-refresh-checkpoints-considerations"></a>

使用檢查點時，請謹記以下幾點考量：
+ 檢查點是以百分比為基礎，因此要取代的執行個體數量會隨著群組的大小而變更。當橫向擴展活動發生且群組的大小增加時，進行中的操作可能會再次到達檢查點。如果發生這種情況，Amazon EC2 Auto Scaling 會傳送另一個通知，並在繼續之前重複檢查點之間的等待時間。
+ 在某些情況下，可以略過檢查點。例如，假設 Auto Scaling 群組有兩個執行個體，且檢查點百分比為 `[10,40,100]`。第一個執行個體遭取代後，Amazon EC2 Auto Scaling 會計算 50% 的群組已遭取代。因為 50% 高於前兩個檢查點，其會略過第一個檢查點 (`10`)，並傳送第二個檢查點 (`40`) 的通知。
+ 取消操作會停止進行任何進一步的取代。如果取消操作或在到達最後一個檢查點前失敗，任何已遭取代的執行個體都不會回復至先前的組態。
+ 在部分重新整理的情況下，當您重新執行操作時，Amazon EC2 Auto Scaling 不會從最後一個檢查點重新啟動，也不會僅在較舊執行個體遭取代時停止。但是，在將目標鎖定於新的執行個體之前，其會先針對較舊執行個體進行取代。
+ 當檢查點的百分比相對於群組中的執行個體數量太低時，完成的實際百分比可能高於該檢查點的百分比。例如，假設檢查點的百分比為 20%，而群組有四個執行個體。如果 Amazon EC2 Auto Scaling 取代了四個執行個體中的其中一個，則取代的實際百分比 (25%) 將高於檢查點的百分比 (20%)。
+ 到達檢查點後，顯示的整體百分比在執行個體完成暖機後才會更新。例如，您的檢查點百分比`[20,50]`的檢查點延遲為 15 分鐘，運作狀態最低為 80%。您的 Auto Scaling 群組有 10 個執行個體，並進行下列取代：
  + 0:00：用兩個新執行個體取代兩個較舊執行個體。
  + 0:10：兩個新執行個體完成暖機。
  + 0:25：用兩個新執行個體取代兩個較舊執行個體。(為了維持狀態良好最低百分比，只會取代兩個執行個體。)
  + 0:35：兩個新執行個體完成暖機。
  + 0:35：用一個新執行個體取代一個較舊執行個體。
  + 0:45：一個新執行個體完成暖機。

  0:35 時，操作停止啟動新執行個體。由於新執行個體沒有完成暖機，完成百分比未準確反映已完成取代的數量 (50%)。新執行個體在 0：45 完成暖機期後，完成百分比會顯示 50%。
+ 如果啟用多個檢查點，執行個體重新整理檢查點必須設定為 100%，以確保完全取代所有執行個體。如果您將最終檢查點設定為低於 100% 的百分比 （例如 50%)，執行個體重新整理會在達到該檢查點百分比後停止取代執行個體，而且不會自動繼續 100% 完成。

# 使用 AWS 管理主控台 或 啟用檢查點 AWS CLI
<a name="enable-checkpoints-console-cli"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來啟用檢查點。

## 啟用檢查點 (主控台)
<a name="enable-checkpoints-console"></a>

您可以在啟動執行個體重新整理之前啟用檢查點，以使用增量或分階段方法取代執行個體。這會為驗證提供額外的時間。

**啟動使用檢查點的執行個體重新整理**

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. 在 **Instance refresh** (執行個體重新整理) 索引標籤的 **Instance refreshes** (執行個體重新整理) 中，選擇 **Start instance refresh** (啟動執行個體重新整理)。

1. 在 **Start instance refresh** (啟動執行個體重新整理) 頁面中，輸入 **Minimum healthy percentage** (運作狀態良好最低百分比) 和 **Instance warmup** (執行個體暖機期) 的值。

1. 勾選 **Enable checkpoints** (啟用檢查點) 核取方塊。

   這會顯示一個方塊，讓您在其中定義第一個檢查點的百分比閾值。

1. 針對 **Proceed until \$1\$1\$1\$1 % of the group is refreshed** (繼續操作，直到 \$1\$1\$1\$1% 的群組經重新整理)，輸入一個數字 (1—100)。這會設定第一個檢查點的百分比。

1. 若要新增其他檢查點，請選擇 **Add checkpoint** (新增檢查點)，然後定義下一個檢查點的百分比。

1. 若要指定到達檢查點後 Amazon EC2 Auto Scaling 等待的時長，請更新 **Wait for `1` `hour` between checkpoints** (在檢查點之間等待 1 小時) 中的欄位。時間單位可以是小時、分鐘或秒。

1. 如果您已完成處理執行個體重新整理的選取項目，請選擇**啟動執行個體重新整理**。

## 啟用檢查點 (AWS CLI)
<a name="enable-checkpoints-cli"></a>

若要使用 啟動啟用檢查點的執行個體重新整理 AWS CLI，您需要定義下列參數的組態檔案：
+ `CheckpointPercentages`：指定要取代的執行個體百分比閾值。這些閾值提供檢查點。當被取代並暖機的執行個體百分比達到其中一個指定的閾值時，此操作會等待一段指定的時間。您在 `CheckpointDelay` 中指定要等待的秒數。在指定的時間段過後，執行個體重新整理會繼續執行，直到到達下一個檢查點 (如果適用) 為止。
+ `CheckpointDelay`：指定到達檢查點後再繼續前的等待時間 (以秒為單位)。選擇提供足夠時間來執行驗證的時段。

需要成功取代的 Auto Scaling 群組百分比會以 `CheckpointPercentages` 陣列中所示的最後一個數值表示。成功取代此百分比之後，且每個執行個體被視為已完成初始化後，該操作會轉換為 `Successful`。

**建立多個檢查點**  
若要建立多個檢查點，請使用下列範例 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令。此範例設定了一次執行個體重新整理，這會開始重新整理 Auto Scaling 群組的 1%。等待 10 分鐘後，它會重新整理接下來的 19% 並再等待 10 分鐘。最後，它會在完成操作之前重新整理群組的剩餘部分。

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

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 80,
      "CheckpointPercentages": [1,20,100],
      "CheckpointDelay": 600
    }
}
```

**建立單一檢查點**  
若要建立單一檢查點，請使用下列範例 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令。此範例設定了一次執行個體重新整理，這會開始重新整理 Auto Scaling 群組的 20%。等待 10 分鐘後，它會在結束操作之前重新整理群組的剩餘部分。

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

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 80,
      "CheckpointPercentages": [20,100],
      "CheckpointDelay": 600
    }
}
```

**部分重新整理 Auto Scaling 群組**  
若僅要取代一部分的 Auto Scaling 群組，然後完全停止，請使用下列範例 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令。此範例設定了一次執行個體重新整理，這會開始重新整理 Auto Scaling 群組的 1%。等待 10 分鐘後，它會在結束操作之前重新整理接下來的 19%。

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

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 80,
      "CheckpointPercentages": [1,20],
      "CheckpointDelay": 600
    }
}
```

# 根據執行個體生命週期上限來取代 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)。