インスタンスをデタッチまたはアタッチする - Amazon EC2 Auto Scaling

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

インスタンスをデタッチまたはアタッチする

Auto Scaling グループからインスタンスをデタッチできます。インスタンスをデタッチすると、そのインスタンスは独立し、単独で管理することも、所属していた元のグループとは別の別の Auto Scaling グループにアタッチすることもできます。これは、たとえば、すでにアプリケーションを実行している既存のインスタンスを使用してテストを実行する場合に役立ちます。

このトピックでは、インスタンスをデタッチおよびアタッチする方法について説明します。インスタンスをアタッチする場合、デタッチされたインスタンスではなく、既存のインスタンスを使用することもできます。

インスタンスをデタッチして同じグループに再アタッチする代わりに、スタンバイプロシージャを使用してインスタンスをグループから一時的に削除することをおすすめします。詳細については、「Auto Scaling グループからインスタンスを一時的に削除する」を参照してください。

インスタンスをデタッチする際の考慮事項

インスタンスをデタッチするときは、以下の点に留意してください。

  • インスタンスをデタッチできるのは、InServiceその状態にあるときだけです。

  • インスタンスをデタッチした後も実行が継続され、料金が発生します。不要な課金を避けるため、デタッチしたインスタンスは不要になったら再アタッチまたは終了するようにしてください。

  • デタッチするインスタンスの数だけ希望する容量を減らすこともできます。容量を減らさないことを選択した場合、Amazon EC2 Auto Scaling は、必要な容量を維持するために、デタッチされたインスタンスを置き換える新しいインスタンスを起動します。

  • デタッチするインスタンスの数によって Auto Scaling グループが最小容量を下回る場合は、最小容量を減らす必要があります。

  • 必要な容量を減らさずに同じアベイラビリティーゾーンから複数のインスタンスをデタッチした場合、プロセスを中断しない限り、グループは自動的に再調整されます。AZRebalance詳細については、「Amazon EC2 Auto Scaling プロセスの一時停止と再開」を参照してください。

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

注記

Standby 状態にあるインスタンスをデタッチする場合は注意してください。Standby 状態にしたインスタンスをデタッチしようとすると、他のインスタンスが予期せず終了することがあります。

インスタンスをアタッチする際の考慮事項

インスタンスをアタッチする際には、以下の点に注意してください。

  • Amazon EC2 Auto Scaling は、アタッチされたインスタンスをグループ自体によって起動されたインスタンスと同じように扱います。つまり、アタッチされたインスタンスが選択されていれば、スケールインイベント中にそのインスタンスを終了できます。

  • インスタンスをアタッチすると、アタッチされるインスタンスの数によって、グループの必要なキャパシティーは増加します。新しいインスタンスを追加した後に必要な容量がグループの最大サイズを超えると、さらにインスタンスをアタッチするリクエストは失敗します。

  • グループにインスタンスを追加して、アベイラビリティーゾーン間で不均等に分散した場合、プロセスを中断しない限り、Amazon EC2 Auto Scaling はグループのバランスを調整して均等な分散を再確立します。AZRebalance詳細については、「Amazon EC2 Auto Scaling プロセスの一時停止と再開」を参照してください。

  • インスタンスをロードバランサーターゲットグループまたは Classic Load Balancer にアタッチした Auto Scaling グループにアタッチする場合、インスタンスはロードバランサーに登録されます。

アタッチするインスタンスについては、次の条件を満たす必要があります。

  • インスタンスが Amazon EC2 で running 状態であること。

  • インスタンスの起動に使用する AMI が引き続き存在していること。

  • インスタンスは他の Auto Scaling グループのメンバーではありません。

  • インスタンスは Auto Scaling グループで定義されているアベイラビリティーゾーンのいずれかで起動されます。

  • Auto Scaling グループにアタッチされたロードバランサーターゲットグループまたは Classic Load Balancer がある場合は、インスタンスおよびロードバランサーは両方とも同じ VPC にある必要があります。

デタッチとアタッチを使用してインスタンスを別のグループに移動します。

次のいずれかの手順を使用して、Auto Scaling グループからインスタンスをデタッチし、別の Auto Scaling グループにアタッチします。

デタッチされたインスタンスから新しい Auto Scaling グループを作成するには、「既存のインスタンスからのパラメータを使用して Auto Scaling グループを作成する (非推奨、起動設定を作成する)」を参照してください。

Console
Auto Scaling グループからインスタンスをデタッチするには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    ページの下部にスプリットペインが開きます。

  3. [Instance management (インスタンス管理)] タブの [Instances (インスタンス)] でインスタンスを選択し、[Actions (アクション)]、[Detach (デタッチ)] の順に選択します。

  4. [インスタンスをデタッチ] ダイアログボックスで、[インスタンスを置き換える] チェックボックスをオンのままにして、置換インスタンスを起動します。必要なキャパシティを減らすには、チェックボックスをオフにします。

  5. 確認を求めるプロンプトが表示されたら、指定したインスタンスを Auto Scaling グループから削除することを確認するために detach と入力し、[インスタンスのデタッチ] を選択します。

これで、インスタンスを別の Auto Scaling グループにアタッチできます。

Auto Scaling グループにインスタンスをアタッチするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

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

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

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

  5. [Attach to Auto Scaling Group (Auto Scaling Group にアタッチ)] ページで、[Auto Scaling group (Auto Scalingグループ)] を選択し、[Attach (アタッチ)] を選択します。

  6. インスタンスがこの基準を満たさない場合、エラーメッセージとその詳細が表示されます。例えば、インスタンスが Auto Scaling グループと同じアベイラビリティーゾーンにない可能性があります。[閉じる] を選択し、条件を満たす Auto Scaling グループでもう一度試してください。

AWS CLI

インスタンスをデタッチしてアタッチするには、以下のサンプルコマンドを使用します。各ユーザー入力プレースホルダーを独自の情報に置き換えます。

Auto Scaling グループからインスタンスをデタッチするには
  1. 現在のインスタンスを記述するには、describe-auto-scaling-instances以下のコマンドを使用します。

    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" } ] }
  2. 必要な容量を減らさずにインスタンスをデタッチするには、次の detach-instances コマンドを使用します。

    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 コマンドを使用します。

    aws autoscaling attach-instances --instance-ids i-05b4f7d5be44822a6 --auto-scaling-group-name my-asg-for-testing
  2. インスタンスをアタッチした後に Auto Scaling グループのサイズを確認するには、describe-auto-scaling-groups次のコマンドを使用します。

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