インスタンスのデタッチまたはアタッチ - 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" } ], ... } ] }