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-size5
--min-size1
--desired-capacity2
以下の[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-namemy-launch-config
\ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782
" \ --load-balancer-names "my-load-balancer
" \ --max-size5
--min-size1
--desired-capacity2
以下の[attach-load-balancers]コマンドは、指定されたClassic Load Balancer を既存の Auto Scaling グループに添付します。
aws autoscaling attach-load-balancers --auto-scaling-group-name
my-asg
\ --load-balancer-namesmy-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-namesmy-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-period300
アベイラビリティーゾーンの更新
使用するコマンドは、ロードバランサーが Application Load Balancer または Network Load Balancer 、VPC のClassic Load Balancer、またはEC2-Classic のClassic Load Balancer のいずれかによって異なります。ロードバランサーのサブネットとアベイラビリティーゾーンは、ロードバランサーがサポートしている場合にのみ更新できます。詳細については、「機能制限」を参照してください。
Application Load Balancer ネットワークロードバランサーのあるAuto Scaling グループの場合
-
次の[update-auto-scaling-group]コマンドを使用して、Auto Scaling グループに使用されるサブネットを指定します。
aws autoscaling update-auto-scaling-group --auto-scaling-group-name
my-asg
\ --vpc-zone-identifiersubnet-41767929
subnet-cb663da2
subnet-8360a9e7
-
以下の [describe-auto-scaling-groups] コマンドを使用して、新しいサブネットのインスタンスがロードバランサーからのトラフィックを受け入れる準備が完了していることを確認します。
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg
-
[set-subnets]コマンドを使用して、Application Load Balancer または Network Load Balancer で使用するサブネットを指定します。
aws elbv2 set-subnets --load-balancer-arn
my-lb-arn
\ --subnetssubnet-41767929
subnet-cb663da2
subnet-8360a9e7
VPC にClassic Load Balancer を使用した Auto Scaling グループの場合
-
次の[update-auto-scaling-group]コマンドを使用して、Auto Scaling グループに使用されるサブネットを指定します。
aws autoscaling update-auto-scaling-group --auto-scaling-group-name
my-asg
\ --vpc-zone-identifiersubnet-41767929
subnet-cb663da2
-
以下の [describe-auto-scaling-groups] コマンドを使用して、新しいサブネットのインスタンスがロードバランサーからのトラフィックを受け入れる準備が完了していることを確認します。
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg
-
次の[attach-load-balancer-to-subnets(サブネットへの添付-ロードバランサー)]コマンド を使用して Classic Load Balancer の新しいサブネットを有効にします。
aws elb attach-load-balancer-to-subnets --load-balancer-name
my-lb
\ --subnetssubnet-cb663da2
サブネットを無効にするには、次の[detach-load-balancer-from-subnets(サブネットからロードバランサーをデタッチ)]コマンドを実行します。
aws elb detach-load-balancer-from-subnets --load-balancer-name
my-lb
\ --subnetssubnet-8360a9e7
EC2-Classic の Classic Load Balancer を使用する Auto Scaling グループの場合
-
以下の[update-auto-scaling-group(オートスケーリンググループを更新)]を使用して、Auto Scaling グループに使用されるアベイラビリティーゾーンを指定します。
aws autoscaling update-auto-scaling-group --auto-scaling-group-name
my-asg
\ --availability-zonesus-west-2a
us-west-2b
-
以下の [describe-auto-scaling-groups(オートスケーリンググループを説明する)] コマンドを使用して、新しいアベイラビリティーゾーンのインスタンスが、ロードバランサーからのトラフィックを受け入れる準備ができていることを確認します。
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg
-
次の[enable-availability-zones-for-load-balancer(ロードバランサー用アベイラビリティゾーンを有効にする)]コマンドを使用して、Classic Load Balancer の新しいアベイラビリティーゾーンを有効にします。
aws elb enable-availability-zones-for-load-balancer --load-balancer-name
my-lb
\ --availability-zonesus-west-2b
次の [disable-availability-zones-for-load-balancer(ロードバランサーのアベイラビリティーゾーンを無効にする)] コマンドを使用して、アベイラビリティーゾーンを無効にします。
aws elb disable-availability-zones-for-load-balancer --load-balancer-name
my-lb
\ --availability-zonesus-west-2c