AWS CLI を使用して Elastic Load Balancing を操作する例
AWS Command Line Interface (AWS CLI) を使用して、ロードバランサーとターゲットグループをアタッチおよびデタッチ、それらの説明を表示して、Elastic Load Balancing のヘルスチェックを追加および削除し、有効なアベイラビリティーゾーンを変更します。
このトピックでは、Amazon EC2 Auto Scaling の一般的なタスクを実行する AWS CLI コマンドの例について説明します。
内容
ターゲットグループまたは Classic Load Balancer をアタッチする
次の create-auto-scaling-group
--auto-scaling-group-name、--vpc-zone-identifier、--min-size、および --max-size のサンプルの値を置き換えます。--launch-template オプションの場合、 と my-launch-template を Auto Scaling グループの起動テンプレートの名前とバージョンに置き換えます。1--traffic-sources オプションの場合、サンプルの ARN を Application Load Balancer、Network Load Balancer、または Gateway Load Balancer のターゲットグループの ARN に置き換えます。
aws autoscaling create-auto-scaling-group --auto-scaling-group-namemy-asg\ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --min-size1--max-size5\ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1"
Auto Scaling グループを作成したら、attach-traffic-sources
次のコマンドは、同じグループに別のターゲットグループを追加します。
aws autoscaling attach-traffic-sources --auto-scaling-group-namemy-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 オプションを指定します。 を Classic Load Balancer の名前に置き換えます。my-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-namemy-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-namemy-asg\ --health-check-type "ELB"
新しいインスタンスは、多くの場合、ヘルスチェックに合格する前に簡単なウォームアップの時間が必要です。猶予期間で十分なウォームアップ時間が提供されない場合、インスタンスはトラフィックを処理する準備ができていないように見えることがあります。Amazon EC2 Auto Scaling は、これらのインスタンスを異常と見なして置き換えることがあります。
ヘルスチェックの猶予期間を更新するには、次の例のように、update-auto-scaling-group を使用するときに --health-check-grace-period オプションを使用します。300 は、新しいインスタンスに異常が見つかった場合、終了させるまでに稼働させておく秒数に置き換えてください。
--health-check-grace-period300
詳細については、「Auto Scaling グループでのインスタンスのヘルスチェック」を参照してください。
アベイラビリティーゾーンを変更する
アベイラビリティーゾーンの変更には、注意が必要な制限がいくつかあります。詳細については、「アベイラビリティーゾーンを追加する」を参照してください。
Application Load Balancer または Network Load Balancer のアベイラビリティーゾーンを変更するには
-
ロードバランサーのアベイラビリティーゾーンを変更する前に、まず Auto Scaling グループのアベイラビリティーゾーンを更新して、使用しているインスタンスタイプが指定したゾーンで使用できることを確認することをお勧めします。
Auto Scaling グループのアベイラビリティーゾーンを更新するには、次の update-auto-scaling-group
コマンドを使用します。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。指定したサブネットは、以前に有効であったサブネットに置き換わります。 をグループの名前に置き換えます。my-asgaws autoscaling update-auto-scaling-group --auto-scaling-group-namemy-asg\ --vpc-zone-identifier "subnet-41767929,subnet-cb663da2,subnet-8360a9e7" -
次の describe-auto-scaling-groups
コマンドを使用して、新しいサブネットのインスタンスが起動されたことを確認します。インスタンスが起動した場合は、インスタンスとそのステータスのリストが表示されます。 をグループの名前に置き換えます。my-asgaws autoscaling describe-auto-scaling-groups --auto-scaling-group-namemy-asg -
次の set-subnets
コマンドを使用して、ロードバランサーのサブネットを指定します。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。アベイラビリティーゾーンごとに 1 つだけサブネットを指定できます。指定したサブネットは、以前に有効であったサブネットに置き換わります。 を、使用しているロードバランサーの ARN に置き換えます。my-lb-arnaws elbv2 set-subnets --load-balancer-arnmy-lb-arn\ --subnetssubnet-41767929subnet-cb663da2subnet-8360a9e7
Classic Load Balancer のアベイラビリティーゾーンを変更するには
-
ロードバランサーのアベイラビリティーゾーンを変更する前に、まず Auto Scaling グループのアベイラビリティーゾーンを更新して、使用しているインスタンスタイプが指定したゾーンで使用できることを確認することをお勧めします。
Auto Scaling グループのアベイラビリティーゾーンを更新するには、次の update-auto-scaling-group
コマンドを使用します。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。指定したサブネットは、以前に有効であったサブネットに置き換わります。 をグループの名前に置き換えます。my-asgaws autoscaling update-auto-scaling-group --auto-scaling-group-namemy-asg\ --vpc-zone-identifier "subnet-41767929,subnet-cb663da2" -
次の describe-auto-scaling-groups
コマンドを使用して、新しいサブネットのインスタンスが起動されたことを確認します。インスタンスが起動した場合は、インスタンスとそのステータスのリストが表示されます。 をグループの名前に置き換えます。my-asgaws autoscaling describe-auto-scaling-groups --auto-scaling-group-namemy-asg -
次の attach-load-balancer-to-subnets
コマンドを使用して Classic Load Balancer の新しいアベイラビリティーゾーンを有効にします。サンプルのサブネット ID を、有効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。 を、使用しているロードバランサーの名前に置き換えます。my-lbaws elb attach-load-balancer-to-subnets --load-balancer-namemy-lb\ --subnetssubnet-cb663da2アベイラビリティーゾーンを無効にするには、次の detach-load-balancer-from-subnets
コマンドを使用します。サンプルのサブネット ID を、無効にするアベイラビリティーゾーンのサブネットの ID に置き換えます。 を、使用しているロードバランサーの名前に置き換えます。my-lbaws elb detach-load-balancer-from-subnets --load-balancer-namemy-lb\ --subnetssubnet-8360a9e7
ターゲットグループまたは Classic Load Balancer をデタッチする
ターゲットグループが不要になった場合、次の detach-traffic-sources
--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-namemy-asg\ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
Classic Load Balancer をグループからデタッチするには、次の例のように --traffic-sources オプションと --type オプションを指定します。 を Classic Load Balancer の名前に置き換えます。my-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-namemy-asg\ --health-check-type "EC2"
詳細については、「Auto Scaling グループでのインスタンスのヘルスチェック」を参照してください。
レガシーコマンド
以下の例は、レガシー CLI コマンドを使用してロードバランサーとターゲットグループをアタッチおよびデタッチする方法と、それらの説明を表示する方法を示しています。これらは、お客様が使用する際の参照用として、このドキュメントに残してあります。レガシー CLI コマンドは引き続きサポートされますが、新しい「トラフィックソース」CLI コマンドは複数のトラフィックソースタイプをアタッチおよびデタッチできるので、こちらの使用をお勧めします。レガシー CLI コマンドと「トラフィックソース」CLI コマンドの両方を同じ Auto Scaling グループで使用できます。
ターゲットグループをアタッチするには
次の create-auto-scaling-group
aws autoscaling create-auto-scaling-group --auto-scaling-group-namemy-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-size1--max-size5
以下の attach-load-balancer-target-groups
aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-namemy-asg\ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
Classic Load Balancer をアタッチするには
以下の create-auto-scaling-group
aws autoscaling create-auto-scaling-group --auto-scaling-group-namemy-asg\ --launch-configuration-namemy-launch-config\ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --load-balancer-names "my-load-balancer" \ --min-size1--max-size5
以下の attach-load-balancers
aws autoscaling attach-load-balancers --auto-scaling-group-namemy-asg\ --load-balancer-namesmy-lb
ターゲットグループの説明を表示するには
Auto Scaling グループに関連付けられているターゲットグループの説明を表示するには、describe-load-balancer-target-groupsmy-asgのターゲットグループの一覧を表示します。
aws autoscaling describe-load-balancer-target-groups --auto-scaling-group-namemy-asg
Classic Load Balancer の説明を表示するには
Auto Scaling グループに関連付けられている Classic Load Balancer の説明を表示するには、describe-load-balancersmy-asg の Classic Load Balancer を一覧表にしています。
aws autoscaling describe-load-balancers --auto-scaling-group-namemy-asg
ターゲットグループをデタッチするには
ターゲットグループが不要になった場合、以下の detach-load-balancer-target-groups
aws autoscaling detach-load-balancer-target-groups --auto-scaling-group-namemy-asg\ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
Classic Load Balancer をデタッチするには
ロードバランサーが不要になったら、以下の detach-load-balancers
aws autoscaling detach-load-balancers --auto-scaling-group-namemy-asg\ --load-balancer-namesmy-lb