Python/boto3でLBの情報を取得する

boto3でロードバランサの情報を取得を取得する。CLBとALB/NLBで利用するAPIが異なるので注意する。

動作環境情報

Ubuntu18.04 LTS
Python 3.6.9
boto3 (1.11.8)

ソースコード

import boto3
from boto3.session import Session

# セッションのセットアップ
# aws cliの利用時に profileを設定していれば boto3が勝手に拾ってくれるようだ
def setup():
    session = Session(
        profile_name = "profile_hoge"
    )
    return session

# CLBの情報取得
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/elb.html#ElasticLoadBalancing.Client.describe_load_balancers
def get_clb_info(sess):
    elb = sess.client("elb")
    elb_info = elb.describe_load_balancers()
    for i in elb_info["LoadBalancers"]:
        lb_name = i["LoadBalancerName"]
        # ... その他色々情報が取れるが、LBによっては欠損している(辞書のKeyごと存在しない)情報もあるので
        # 辞書での情報取得時はKeyが事前にあるかどうかを確認した方がいい

# NLB/ALBの情報取得
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/elbv2.html#ElasticLoadBalancingv2.Client.describe_load_balancers
def get_elb_info(sess):
    elb = sess.client("elbv2")
    elb_info = elb.describe_load_balancers()
    
    for i in elb_info["LoadBalancers"]:
        lb_name = i["LoadBalancerName"]
        # ... その他色々情報が取れるが、LBによっては欠損している(辞書のKeyごと存在しない)情報もあるので
        # 辞書での情報取得時はKeyが事前にあるかどうかを確認した方がいい


if __name__ == '__main__':
    sess = setup()
    get_clb_info(sess)
    get_elb_info(sess)

ドキュメントではそのような記述が見当たらなかった気がするのだが、 “elb” で取得できるのはCLBの情報で、“elbv2” で取得できるのはNLBやALBの情報のようだ。