AWS CLI を使用して Elastic Load Balancing を操作する例 - Amazon EC2 Auto Scaling

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

AWS CLI を使用して Elastic Load Balancing を操作する例

AWS Command Line Interface (AWS CLI) を使用して、ロードバランサーとターゲットグループをアタッチおよびデタッチ、それらの説明を表示して、Elastic Load Balancing のヘルスチェックを追加および削除し、有効なアベイラビリティーゾーンを変更します。

このトピックでは、Amazon EC2 Auto Scaling の一般的なタスクを実行する AWS CLI コマンドの例について説明します。

重要

その他の例については、「AWS CLI コマンドリファレンス」の「aws elbv2」と「aws elb」を参照してください。

ターゲットグループまたは Classic Load Balancer をアタッチする

次の create-auto-scaling-group コマンドを使用して Auto Scaling グループを作成し、同時にその Amazon リソースネーム (ARN) を指定してターゲットグループをアタッチします。ターゲットグループは、Application Load Balancer、Network Load Balancer、または Gateway Load Balancer に関連付けることができます。

--auto-scaling-group-name--vpc-zone-identifier--min-size、および --max-size のサンプルの値を置き換えます。--launch-template オプションの場合、my-launch-template1 を Auto Scaling グループの起動テンプレートの名前とバージョンに置き換えます。--traffic-sources オプションの場合、サンプルの ARN を Application Load Balancer、Network Load Balancer、または Gateway Load Balancer のターゲットグループの ARN に置き換えます。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --min-size 1 --max-size 5 \ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1"

Auto Scaling グループを作成したら、attach-traffic-sources コマンドを使用して、追加のターゲットグループを Auto Scaling グループにアタッチします。

次のコマンドは、同じグループに別のターゲットグループを追加します。

aws autoscaling attach-traffic-sources --auto-scaling-group-name my-asg \ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2"

別の方法として、Classic Load Balancer をグループにアタッチするには、次の例のように、create-auto-scaling-group または attach-traffic-sources を使用するときに --traffic-sources オプションおよび --type オプションを指定します。my-classic-load-balancer を Classic Load Balancer の名前に置き換えます。--type オプションの場合、elb の値を指定します。

--traffic-sources "Identifier=my-classic-load-balancer" --type elb

ターゲットグループまたは Classic Load Balancer の説明を表示する

Auto Scaling グループにアタッチされているロードバランサーまたはターゲットグループの説明を表示するには、次の describe-traffic-sources コマンドを使用します。my-asg をグループの名前に置き換えます。

aws autoscaling describe-traffic-sources --auto-scaling-group-name my-asg

この例では、Auto Scaling グループにアタッチした Elastic Load Balancing ターゲットグループの ARN を返します。

{ "TrafficSources": [ { "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1", "State": "InService", "Type": "elbv2" }, { "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2", "State": "InService", "Type": "elbv2" } ] }

出力された State フィールドの説明については、「ロードバランサーのアタッチメントステータスを確認する」を参照してください。

Elastic Load Balancing のヘルスチェックを追加する

Auto Scaling グループがインスタンスに対して実行するヘルスチェックに Elastic Load Balancing のヘルスチェックを追加するには、次の update-auto-scaling-group コマンドを実行し、--health-check-type オプションの値として ELB を指定します。my-asg をグループの名前に置き換えます。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --health-check-type "ELB"

新しいインスタンスは、多くの場合、ヘルスチェックに合格する前に簡単なウォームアップの時間が必要です。猶予期間で十分なウォームアップ時間が提供されない場合、インスタンスはトラフィックを処理する準備ができていないように見えることがあります。Amazon EC2 Auto Scaling は、これらのインスタンスを異常と見なして置き換えることがあります。

ヘルスチェックの猶予期間を更新するには、次の例のように、update-auto-scaling-group を使用するときに --health-check-grace-period オプションを使用します。300 は、新しいインスタンスに異常が見つかった場合、終了させるまでに稼働させておく秒数に置き換えてください。

--health-check-grace-period 300

詳細については、「Auto Scaling グループでのインスタンスのヘルスチェック」を参照してください。

アベイラビリティーゾーンを変更する

アベイラビリティーゾーンの変更には、注意が必要な制限がいくつかあります。詳細については、「アベイラビリティーゾーンを追加する」を参照してください。

Application Load Balancer または Network Load Balancer のアベイラビリティーゾーンを変更するには
  1. ロードバランサーのアベイラビリティーゾーンを変更する前に、まず Auto Scaling グループのアベイラビリティーゾーンを更新して、使用しているインスタンスタイプが指定したゾーンで使用できることを確認することをお勧めします。

    Auto Scaling グループのアベイラビリティーゾーンを更新するには、次の update-auto-scaling-group コマンドを使用します。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。指定したサブネットは、以前に有効であったサブネットに置き換わります。my-asg をグループの名前に置き換えます。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --vpc-zone-identifier "subnet-41767929,subnet-cb663da2,subnet-8360a9e7"
  2. 次の describe-auto-scaling-groups コマンドを使用して、新しいサブネットのインスタンスが起動されたことを確認します。インスタンスが起動した場合は、インスタンスとそのステータスのリストが表示されます。my-asg をグループの名前に置き換えます。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 次の set-subnets コマンドを使用して、ロードバランサーのサブネットを指定します。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。アベイラビリティーゾーンごとに 1 つだけサブネットを指定できます。指定したサブネットは、以前に有効であったサブネットに置き換わります。my-lb-arn を、使用しているロードバランサーの ARN に置き換えます。

    aws elbv2 set-subnets --load-balancer-arn my-lb-arn \ --subnets subnet-41767929 subnet-cb663da2 subnet-8360a9e7
Classic Load Balancer のアベイラビリティーゾーンを変更するには
  1. ロードバランサーのアベイラビリティーゾーンを変更する前に、まず Auto Scaling グループのアベイラビリティーゾーンを更新して、使用しているインスタンスタイプが指定したゾーンで使用できることを確認することをお勧めします。

    Auto Scaling グループのアベイラビリティーゾーンを更新するには、次の update-auto-scaling-group コマンドを使用します。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。指定したサブネットは、以前に有効であったサブネットに置き換わります。my-asg をグループの名前に置き換えます。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --vpc-zone-identifier "subnet-41767929,subnet-cb663da2"
  2. 次の describe-auto-scaling-groups コマンドを使用して、新しいサブネットのインスタンスが起動されたことを確認します。インスタンスが起動した場合は、インスタンスとそのステータスのリストが表示されます。my-asg をグループの名前に置き換えます。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 次の attach-load-balancer-to-subnets コマンドを使用して Classic Load Balancer の新しいアベイラビリティーゾーンを有効にします。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。my-lb を、使用しているロードバランサーの名前に置き換えます。

    aws elb attach-load-balancer-to-subnets --load-balancer-name my-lb \ --subnets subnet-cb663da2

    アベイラビリティーゾーンを無効にするには、次の detach-load-balancer-from-subnets コマンドを使用します。サンプルのサブネット ID を、無効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。my-lb を、使用しているロードバランサーの名前に置き換えます。

    aws elb detach-load-balancer-from-subnets --load-balancer-name my-lb \ --subnets subnet-8360a9e7

ターゲットグループまたは Classic Load Balancer をデタッチする

ターゲットグループが不要になった場合、次の detach-traffic-sources コマンドを使用して、Auto Scaling グループからターゲットグループをデタッチします。

--auto-scaling-group-name オプションの場合、my-asg を使用しているグループの名前に置き換えます。--traffic-sources オプションの場合、サンプルの ARN を Application Load Balancer、Network Load Balancer、または Gateway Load Balancer のターゲットグループの ARN に置き換えます。

aws autoscaling detach-traffic-sources --auto-scaling-group-name my-asg \ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"

Classic Load Balancer をグループからデタッチするには、次の例のように --traffic-sources オプションと --type オプションを指定します。my-classic-load-balancer を Classic Load Balancer の名前に置き換えます。--type オプションの場合、elb の値を指定します。

--traffic-sources "Identifier=my-classic-load-balancer" --type elb

Elastic Load Balancing のヘルスチェックを削除する

Elastic Load Balancing のヘルスチェックを Auto Scaling グループから削除するには、次の update-auto-scaling-group コマンドを使用し、--health-check-type オプションの値として EC2 を指定します。my-asg をグループの名前に置き換えます。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --health-check-type "EC2"

詳細については、「Auto Scaling グループでのインスタンスのヘルスチェック」を参照してください。

レガシーコマンド

以下の例は、レガシー CLI コマンドを使用してロードバランサーとターゲットグループをアタッチおよびデタッチする方法と、それらの説明を表示する方法を示しています。これらは、お客様が使用する際の参照用として、このドキュメントに残してあります。レガシー CLI コマンドは引き続きサポートされますが、新しい「トラフィックソース」CLI コマンドは複数のトラフィックソースタイプをアタッチおよびデタッチできるので、こちらの使用をお勧めします。レガシー CLI コマンドと「トラフィックソース」CLI コマンドの両方を同じ Auto Scaling グループで使用できます。

ターゲットグループをアタッチするには

次の create-auto-scaling-group コマンドは、アタッチされたターゲットグループを使用して、Auto Scaling グループを作成します。Application Load Balancer、Network Load Balancer、または Gateway Load Balancer のターゲットグループの Amazon リソースネーム (ARN) を指定します。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456" \ --min-size 1 --max-size 5

以下の attach-load-balancer-target-groups コマンドは、既存の Auto Scaling グループにターゲットグループをアタッチします。

aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name my-asg \ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
Classic Load Balancer をアタッチするには

以下の create-auto-scaling-group コマンドは、Classic Load Balancer がアタッチされた Auto Scaling グループを作成します。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --load-balancer-names "my-load-balancer" \ --min-size 1 --max-size 5

以下の attach-load-balancers コマンドは、指定された Classic Load Balancer を既存の Auto Scaling グループにアタッチします。

aws autoscaling attach-load-balancers --auto-scaling-group-name my-asg \ --load-balancer-names my-lb
ターゲットグループの説明を表示するには

Auto Scaling グループに関連付けられているターゲットグループの説明を表示するには、describe-load-balancer-target-groups コマンドを使用します。次の例では、my-asgのターゲットグループの一覧を表示します。

aws autoscaling describe-load-balancer-target-groups --auto-scaling-group-name my-asg
Classic Load Balancer の説明を表示するには

Auto Scaling グループに関連付けられている Classic Load Balancer の説明を表示するには、describe-load-balancers コマンドを使用します。次の例では、my-asg の Classic Load Balancer を一覧表にしています。

aws autoscaling describe-load-balancers --auto-scaling-group-name my-asg
ターゲットグループをデタッチするには

ターゲットグループが不要になった場合、以下の detach-load-balancer-target-groups コマンドを使用して、Auto Scaling グループからターゲットグループをデタッチします。

aws autoscaling detach-load-balancer-target-groups --auto-scaling-group-name my-asg \ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
Classic Load Balancer をデタッチするには

ロードバランサーが不要になったら、以下の detach-load-balancers コマンドが、Auto Scaling グループから Classic Load Balancer をデタッチします。

aws autoscaling detach-load-balancers --auto-scaling-group-name my-asg \ --load-balancer-names my-lb