Auto Scaling グループからインスタンスをデタッチまたはアタッチする - Amazon EC2 Auto Scaling

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

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 は、アタッチされたインスタンスをグループ自体によって起動されたインスタンスと同じように扱います。つまり、アタッチしたインスタンスが選択された場合、そのインスタンスはスケールインイベント中に終了できます。によって付与されるアクセス許可 AWSServiceRoleForAutoScaling サービスにリンクされたロールにより、Amazon EC2 Auto Scaling はこれを行うことができます。

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

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

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

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

  • インスタンスは Amazon で running状態ですEC2。

  • インスタンスの起動AMIに使用される は、まだ存在している必要があります。

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

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

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

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

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

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

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

  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

インスタンスをデタッチおよびアタッチするには、次のコマンド例を使用します。user input placeholder を、ユーザー自身の情報に置き換えます。

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