

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

# 從 Auto Scaling 群組分離或連接執行個體
<a name="ec2-auto-scaling-detach-attach-instances"></a>

您可以從 Auto Scaling 群組分離執行個體。分離執行個體後，該執行個體會變得獨立，並且可以自行管理或連接到不同的 Auto Scaling 群組，與所屬的原始群組分開。例如，當您想要使用已經在執行應用程式的現有執行個體執行測試時，這會很有用。

本主題提供如何分離和連接執行個體的說明。連接執行個體時，您也可以使用現有的執行個體，而不是分離的執行個體。

我們建議您使用待命程序暫時將執行個體從群組中移除，而不是將執行個體分離並重新連接至相同的群組。如需詳細資訊，請參閱[從 Auto Scaling 群組暫時移除執行個體](as-enter-exit-standby.md)。

**Topics**
+ [分離執行個體的考量事項](#detach-instances-considerations)
+ [連接執行個體的考量事項](#attach-instances-considerations)
+ [使用分離和連接將執行個體移至不同的群組](#detach-attach-instances)

## 分離執行個體的考量事項
<a name="detach-instances-considerations"></a>

當您分離執行個體時，請記住以下幾點：
+ 只有當執行個體處於 `InService`或 `StandBy` 狀態時，才能將其分離。如果您要分離位於 `StandBy` 狀態的執行個體，請務必謹慎。在將執行個體置於 `StandBy` 狀態之後嘗試分離執行個體時，在 API 呼叫中包含 `ShouldDecrementDesiredCapacity`旗標，可能會導致其他執行個體意外終止。
+ 分離執行個體之後，執行個體會繼續執行並產生費用。為了避免不必要的費用，請確保在不再需要分離的執行個體時重新連接或終止分離的執行個體。
+ 您可以選擇依您要分離的執行個體數量減少所需的容量。如果您選擇不減少容量，Amazon EC2 Auto Scaling 會啟動新的執行個體來取代分離的執行個體，以維持所需的容量。
+ 如果您要分離的執行個體數量會使 Auto Scaling 群組低於其容量下限，則必須減少容量下限。
+ 如果您從相同的可用區域分離多個執行個體，而不減少所需的容量，則除非您暫停`AZRebalance`程序，否則群組會自行重新平衡。如需詳細資訊，請參閱[暫停和繼續 Amazon EC2 Auto Scaling 程序](as-suspend-resume-processes.md)。
+ 如果是從已連接負載平衡器目標群組或 Classic Load Balancer 的 Auto Scaling 群組分開執行個體，則執行個體會從負載平衡器取消註冊。如果為您的負載平衡器啟用連接耗盡 (取消註冊延遲)，Amazon EC2 Auto Scaling 會等待處理中的請求完成。

## 連接執行個體的考量事項
<a name="attach-instances-considerations"></a>

連接執行個體時，請注意下列事項：
+ Amazon EC2 Auto Scaling 會將連接的執行個體視為與群組本身啟動的執行個體相同。這表示如果已選取連接執行個體，則可以在縮減事件期間將其終止。AWSServiceRoleForAutoScaling 服務連結角色授予的許可允許 Amazon EC2 Auto Scaling 這樣做。
+ 當您連接執行個體，所需的容量會以連接中的執行個體的數量來增加。如果在新增執行個體之後所需的容量超過群組的大小上限，連接更多執行個體的請求會失敗。
+ 如果您將執行個體新增至 群組，導致跨可用區域分佈不均，Amazon EC2 Auto Scaling 會重新平衡群組，以重新建立均勻分佈，除非您暫停`AZRebalance`程序。如需詳細資訊，請參閱[暫停和繼續 Amazon EC2 Auto Scaling 程序](as-suspend-resume-processes.md)。
+ 如果您將執行個體連接到已連接負載平衡器目標群組或 Classic Load Balancer 的 Auto Scaling 群組，則執行個體會註冊到負載平衡器。

要連接的執行個體必須滿足下列條件：
+ 執行個體處於 Amazon EC2 的 `running` 狀態。
+ 使用 AMI 啟動的執行個體仍然必須存在。
+ 該執行個體不屬於另一個 Auto Scaling 群組。
+ 執行個體會在 Auto Scaling 群組中定義的其中一個可用區域中啟動。
+ 如果 Auto Scaling 群組已連接了負載平衡器目標群組或 Classic Load Balancer，則執行個體和負載平衡器必須同時都在相同的 VPC 中。

## 使用分離和連接將執行個體移至不同的群組
<a name="detach-attach-instances"></a>

使用下列其中一個程序，從 Auto Scaling 群組分離執行個體，並將其連接至不同的 Auto Scaling 群組。

若要從分離的執行個體建立新的 Auto Scaling 群組，請參閱 [使用 從現有執行個體建立 Auto Scaling 群組 AWS CLI](create-asg-from-instance.md)（不建議， 會建立啟動組態）。

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

**將執行個體與 Auto Scaling 群組分開**

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

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

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

1. 在 **Instance management** (執行個體管理) 索引標籤的 **Instances** (執行個體) 中，選取執行個體，再選擇 **Actions** (動作)、**Detach** (分開)。

1. 在**分離執行個體**對話方塊中，保持選取**替代執行個體**核取方塊，以啟動替代執行個體。清除此核取方塊以減少所需容量。

1. 出現確認提示時，請輸入 **detach** 來確認移除特定的 Auto Scaling 群組，然後選擇**分離執行個體**。

您現在可以將執行個體連接至不同的 Auto Scaling 群組。

**將執行個體連接至 Auto Scaling 群組**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. (選用) 在導覽窗格的 **AUTO SCALING** 中，選擇 **Auto Scaling Groups** (Auto Scaling 群組)。選擇 Auto Scaling 群組，然後確認 Auto Scaling 群組的大小上限是否足夠讓您新增其他執行個體。否則，在 **Details** (詳細資訊) 索引標籤上增加容量上限。

1. 在導覽窗格的 **Instances** (執行個體) 下選擇 **Instances** (執行個體)，然後選取執行個體。

1. 選擇 **Actions** (動作)、**Instance settings** (執行個體設定)、**Attach to Auto Scaling Group** (連接到 Auto Scaling 群組)。

1. 在 **Attach to Auto Scaling Group** (連接到 Auto Scaling 群組) 頁面上，針對 **Auto Scaling Group** (Auto Scaling 群組) 選擇 Auto Scaling 群組，然後選擇 **Attach** (連接)。

1. 如果執行個體不符合條件，您會得到一則包含詳細資訊的錯誤訊息。例如，執行個體可能並非與 Auto Scaling 群組位於相同的可用區域。選擇**關閉**，並使用符合條件的 Auto Scaling 群組再試一次。

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

若要分離和連接執行個體，請使用下列範例命令。將每個*使用者輸入預留位置*替換為自己的資訊。

**將執行個體與 Auto Scaling 群組分開**

1. 若要描述目前的執行個體，請使用下列 [describe-auto-scaling-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-instances.html) 命令。

   ```
   aws autoscaling describe-auto-scaling-instances \
     --query 'AutoScalingInstances[?AutoScalingGroupName==`my-asg`]'
   ```

   下列範例顯示執行此命令時的輸出。

   請記下您要從群組中移除的執行個體 ID。在下一個步驟中，您需要此 ID。

   ```
   {
       "AutoScalingInstances": [
           {
               "ProtectedFromScaleIn": false,
               "AvailabilityZone": "us-west-2a",
               "LaunchTemplate": {
                   "LaunchTemplateName": "my-launch-template",
                   "Version": "1",
                   "LaunchTemplateId": "lt-050555ad16a3f9c7f"
               },
               "InstanceId": "i-05b4f7d5be44822a6",
               "InstanceType": "t3.micro",
               "AutoScalingGroupName": "my-asg",
               "HealthStatus": "HEALTHY",
               "LifecycleState": "InService"
           },
           {
               "ProtectedFromScaleIn": false,
               "AvailabilityZone": "us-west-2a",
               "LaunchTemplate": {
                   "LaunchTemplateName": "my-launch-template",
                   "Version": "1",
                   "LaunchTemplateId": "lt-050555ad16a3f9c7f"
               },
               "InstanceId": "i-0c20ac468fa3049e8",
               "InstanceType": "t3.micro",
               "AutoScalingGroupName": "my-asg",
               "HealthStatus": "HEALTHY",
               "LifecycleState": "InService"
           },
           {
               "ProtectedFromScaleIn": false,
               "AvailabilityZone": "us-west-2a",
               "LaunchTemplate": {
                   "LaunchTemplateName": "my-launch-template",
                   "Version": "1",
                   "LaunchTemplateId": "lt-050555ad16a3f9c7f"
               },
               "InstanceId": "i-0787762faf1c28619",
               "InstanceType": "t3.micro",
               "AutoScalingGroupName": "my-asg",
               "HealthStatus": "HEALTHY",
               "LifecycleState": "InService"
           },
           {
               "ProtectedFromScaleIn": false,
               "AvailabilityZone": "us-west-2a",
               "LaunchTemplate": {
                   "LaunchTemplateName": "my-launch-template",
                   "Version": "1",
                   "LaunchTemplateId": "lt-050555ad16a3f9c7f"
               },
               "InstanceId": "i-0f280a4c58d319a8a",
               "InstanceType": "t3.micro",
               "AutoScalingGroupName": "my-asg",
               "HealthStatus": "HEALTHY",
               "LifecycleState": "InService"
           }
       ]
   }
   ```

1. 若要分離執行個體而不減少所需的容量，請使用下列 [detach-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-instances.html) 命令。

   ```
   aws autoscaling detach-instances --instance-ids i-05b4f7d5be44822a6 \
     --auto-scaling-group-name my-asg
   ```

   若要分離執行個體並減少所需的容量，請包含 `--should-decrement-desired-capacity`選項。

   ```
   aws autoscaling detach-instances --instance-ids i-05b4f7d5be44822a6 \
     --auto-scaling-group-name my-asg --should-decrement-desired-capacity
   ```

您現在可以將執行個體連接至不同的 Auto Scaling 群組。

**將執行個體連接至 Auto Scaling 群組**

1. 若要將執行個體連接至不同的 Auto Scaling 群組，請使用下列 [attach-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-instances.html) 命令。

   ```
   aws autoscaling attach-instances --instance-ids i-05b4f7d5be44822a6 --auto-scaling-group-name my-asg-for-testing
   ```

1. 若要在連接執行個體後驗證 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-names my-asg-for-testing
   ```

   下列範例回應顯示 群組有兩個執行中的執行個體，其中一個是您連接的執行個體。

   ```
   {
       "AutoScalingGroups": [
           {
               "AutoScalingGroupName": "my-asg-for-testing",
               "AutoScalingGroupARN": "arn",
               "LaunchTemplate": {
                   "LaunchTemplateName": "my-launch-template",
                   "Version": "2",
                   "LaunchTemplateId": "lt-050555ad16a3f9c7f"
               },
               "MinSize": 1,
               "MaxSize": 5,
               "DesiredCapacity": 2,
               ...
               "Instances": [
                   {
                       "ProtectedFromScaleIn": false,
                       "AvailabilityZone": "us-west-2a",
                       "LaunchTemplate": {
                           "LaunchTemplateName": "my-launch-template",
                           "Version": "1",
                           "LaunchTemplateId": "lt-050555ad16a3f9c7f"
                       },
                       "InstanceId": "i-05b4f7d5be44822a6",
                       "InstanceType": "t3.micro",
                       "HealthStatus": "Healthy",
                       "LifecycleState": "InService"
                   },
                   {
                       "ProtectedFromScaleIn": false,
                       "AvailabilityZone": "us-west-2a",
                       "LaunchTemplate": {
                           "LaunchTemplateName": "my-launch-template",
                           "Version": "2",
                           "LaunchTemplateId": "lt-050555ad16a3f9c7f"
                       },
                       "InstanceId": "i-00dcdfffdf5175890",
                       "InstanceType": "t3.micro",
                       "HealthStatus": "Healthy",
                       "LifecycleState": "InService"
                   }
               ],
               ...
           }
       ]
   }
   ```

------