

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 グループからインスタンスをデタッチすると、インスタンスはロードバランサーから登録解除されます。ロードバランサーで Connection Draining (登録解除の遅延) が有効になっている場合、Amazon EC2 Auto Scaling は未処理のリクエストが完了するまで待機します。

## インスタンスのアタッチに関する考慮事項
<a name="attach-instances-considerations"></a>

インスタンスをアタッチするときは、次の点に注意してください。
+ Amazon EC2 Auto Scaling は、アタッチしたインスタンスを、グループ自体によって起動されたインスタンスと同様に扱います。つまり、アタッチしたインスタンスが選択された場合、そのインスタンスはスケールインイベント中に終了できます。サービスにリンクされたロール AWSServiceRoleForAutoScaling によって付与されるアクセス許可により、Amazon EC2 Auto Scaling はこれを行うことができます。
+ インスタンスをアタッチすると、アタッチされるインスタンスの数によって、グループの必要なキャパシティーは増加します。新しいインスタンスを追加した後の必要なキャパシティがグループの最大サイズを超える場合、インスタンスを追加でアタッチするリクエストは失敗します。
+ インスタンスをグループに追加し、アベイラビリティーゾーン間で分散が不均等になると、`AZRebalance` プロセスを中断しない限り、Amazon EC2 Auto Scaling はグループを再調整し、均等な分散を再確立します。詳細については、「[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. 確認を求めるプロンプトが表示されたら、指定したインスタンスを Auto Scaling グループから削除することを確認するために **detach** と入力し、**[インスタンスのデタッチ]** を選択します。

インスタンスを別の Auto Scaling グループにアタッチできるようになりました。

**Auto Scaling グループにインスタンスをアタッチする方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. (オプション) ナビゲーションペインの [**Auto Scaling**] で、[**Auto Scaling グループ**] を選択します。Auto Scaling グループを選択し、Auto Scaling グループの最大サイズが別のインスタンスを追加できる十分な大きさであることを確認します。大きさが十分でない場合は、[**詳細**] タブで最大キャパシティーを増やします。

1. ナビゲーションペインの **[Instances]** (インスタンス) で **[Instances]** (インスタンス) を選択してから、インスタンスを選択します。

1. [**Actions**]、[**Instance Settings**]、[**Attach to Auto Scaling Group**] の順に選択します。

1. [**Attach to Auto Scaling Group (Auto Scaling Group にアタッチ)**] ページで、[**Auto Scaling group (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}}
   ```

   以下の応答例は、グループに実行中のインスタンスが 2 つあり、そのうちの 1 つはアタッチしたインスタンスであることを示しています。

   ```
   {
       "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"
                   }
               ],
               ...
           }
       ]
   }
   ```

------