ELBのIPアドレスリストをワンライナーで取得する

アイキャッチ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ELBのノード数はマネジメントコンソールのELBの画面からは確認できませんが、ENIに関してはマネジメントコンソールで確認することが出来ます。EC2サービスの[Network Interfaces]の所で検索ボックスにELBの[Load Balancer Name]を入力すると確認できます。

実際に確認してみたいと思います。まずは確認用にtest-elbという[Load Balancer Name]でELBを作ります。
get-elb-ip-address-list-by-one-liner_test-elb
次に[Network Interfaces]の所で検索ボックスにtest-elbと入力します。作ったばかりなのでENIが1つしかありませんが、ELB用のENIであることが[Description]から分かります。
get-elb-ip-address-list-by-one-liner_test-elb-eni

ということで本題です。案件でELBのIPアドレスのリストを取得したいということがあったのでワンライナーを作りました。AWS-CLIjqを使っています(最後のsortはお好みでご利用下さい)。

$ aws ec2 describe-network-interfaces --filters "Name=description,Values=${ELBのENIのDescription}" | jq -r '.NetworkInterfaces[] | .Association.PublicIp' | sort

${ELBのENIのDescription}の箇所を実際のELIのDescriptionの値に差し替えて下さい。${ELBのENIのDescription}の命名規則はELB ${ELBのLoad Balancer Name}となっているようです。

実際に試した結果は以下の通りです。今回は1ノードなので寂しい感じですが、アクセスが多いELBの場合は複数のIPアドレスが出力されるはずです。

$ aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB test-elb" | jq -r '.NetworkInterfaces[] | .Association.PublicIp' | sort
54.64.65.XXX