AWS Command Line Interface(AWS CLI)を使ってElastic Load Balancingを操作する例 - Amazon EC2 Auto Scaling

AWS Command Line Interface(AWS CLI)を使ってElastic Load Balancingを操作する例

AWS CLIを使用して、ロードバランサーの添付とデタッチ、Elastic Load Balancingの ヘルスチェックの追加、およびアベイラビリティーゾーンの更新を行います。

ロードバランサーターゲットグループをアタッチする

次の [create-auto-scaling-group (オートスケーリンググループを作成)]コマンドは、添付されたターゲットグループを使用して、Auto Scaling グループを作成します。Application Load Balancer、Network Load Balancer、またはゲートウェイ 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:123456789012:targetgroup/my-targets/1234567890123456" \ --max-size 5 --min-size 1 --desired-capacity 2

以下の[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:123456789012:targetgroup/my-targets/1234567890123456"

ロードバランサーターゲットグループを記述する

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

aws autoscaling describe-load-balancer-target-groups --auto-scaling-group-name my-asg

出力されたStateフィールドの説明については、以前のトピックのロードバランサーのアタッチメントステータスについてセクションを参照してください。

ロードバランサーターゲットグループをデタッチする

ターゲットグループが不要になった場合、以下の[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:123456789012: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" \ --max-size 5 --min-size 1 --desired-capacity 2

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

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

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

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

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

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

Elastic Load Balancing ヘルスチェックを Auto Scaling グループに追加するには、以下の [update-auto-scaling-group]を実行し、--health-check-typeオプションの値としてELBを指定します。

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

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

以下のupdate-auto-scaling-groupコマンドは Elastic Load Balancing のヘルスチェックを追加し、猶予期間を 300 秒に指定します。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-lb-asg \ --health-check-type ELB --health-check-grace-period 300

アベイラビリティーゾーンの更新

使用するコマンドは、ロードバランサーが Application Load Balancer または Network Load Balancer 、VPC のClassic Load Balancer、またはEC2-Classic のClassic Load Balancer のいずれかによって異なります。ロードバランサーのサブネットとアベイラビリティーゾーンは、ロードバランサーがサポートしている場合にのみ更新できます。詳細については、「機能制限」を参照してください。

Application Load Balancer ネットワークロードバランサーのあるAuto Scaling グループの場合

  1. 次の[update-auto-scaling-group]コマンドを使用して、Auto Scaling グループに使用されるサブネットを指定します。

    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] コマンドを使用して、新しいサブネットのインスタンスがロードバランサーからのトラフィックを受け入れる準備が完了していることを確認します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. [set-subnets]コマンドを使用して、Application Load Balancer または Network Load Balancer で使用するサブネットを指定します。

    aws elbv2 set-subnets --load-balancer-arn my-lb-arn \ --subnets subnet-41767929 subnet-cb663da2 subnet-8360a9e7

VPC にClassic Load Balancer を使用した Auto Scaling グループの場合

  1. 次の[update-auto-scaling-group]コマンドを使用して、Auto Scaling グループに使用されるサブネットを指定します。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --vpc-zone-identifier subnet-41767929 subnet-cb663da2
  2. 以下の [describe-auto-scaling-groups] コマンドを使用して、新しいサブネットのインスタンスがロードバランサーからのトラフィックを受け入れる準備が完了していることを確認します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 次の[attach-load-balancer-to-subnets(サブネットへの添付-ロードバランサー)]コマンド を使用して Classic Load Balancer の新しいサブネットを有効にします。

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

    サブネットを無効にするには、次の[detach-load-balancer-from-subnets(サブネットからロードバランサーをデタッチ)]コマンドを実行します。

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

EC2-Classic の Classic Load Balancer を使用する Auto Scaling グループの場合

  1. 以下の[update-auto-scaling-group(オートスケーリンググループを更新)]を使用して、Auto Scaling グループに使用されるアベイラビリティーゾーンを指定します。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --availability-zones us-west-2a us-west-2b
  2. 以下の [describe-auto-scaling-groups(オートスケーリンググループを説明する)] コマンドを使用して、新しいアベイラビリティーゾーンのインスタンスが、ロードバランサーからのトラフィックを受け入れる準備ができていることを確認します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 次の[enable-availability-zones-for-load-balancer(ロードバランサー用アベイラビリティゾーンを有効にする)]コマンドを使用して、Classic Load Balancer の新しいアベイラビリティーゾーンを有効にします。

    aws elb enable-availability-zones-for-load-balancer --load-balancer-name my-lb \ --availability-zones us-west-2b

    次の [disable-availability-zones-for-load-balancer(ロードバランサーのアベイラビリティーゾーンを無効にする)] コマンドを使用して、アベイラビリティーゾーンを無効にします。

    aws elb disable-availability-zones-for-load-balancer --load-balancer-name my-lb \ --availability-zones us-west-2c