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、または 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: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] (Auto Scaling グループを作成する) コマンドは、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] (Load Balancer を記述する) コマンドを使用します。次の例では、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 は、これらのインスタンスを異常と見なして置き換えることがあります。詳しくは、「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、または Classic Load Balancer) に応じて異なります。ロードバランサーのサブネットとアベイラビリティーゾーンは、ロードバランサーがサポートしている場合にのみ更新できます。詳しくは、「制約事項」を参照してください。

Application Load Balancer または Network 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