

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

# 搭配略過相符項目使用執行個體重新整理
<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
     }
   }
   ```