📝

[小ネタ] Boto3 の elb は Classic Load Balancers 用の API である

に公開

ElasticLoadBalancing - Boto3 1.38.22 documentation

This reference covers the 2012-06-01 API, which supports Classic Load Balancers. The 2015-12-01 API supports Application Load Balancers and Network Load Balancers.

上記仕様に関する小ネタです。

背景

describe_tags - Boto3 1.38.21 documentation
ALB のタグを取得するために Lambda で以下のコードを実行したところ、LoadBalancerNotFound のエラーが発生しました。

import json
import boto3

def lambda_handler(event, context):
    elb_name = 'test'

    client = boto3.client('elb')
    response = client.describe_tags(
        LoadBalancerNames=[
            'test'
        ]
    )

    print(json.dumps(response))
[ERROR] AccessPointNotFoundException: An error occurred (LoadBalancerNotFound) when calling the DescribeTags operation: Cannot find Load Balancer test

ElasticLoadBalancingv2 - Boto3 1.38.21 documentation
一方、elbv2 のコードではエラーが発生しませんでした。

import json
import boto3

def lambda_handler(event, context):

    client = boto3.client('elbv2')
    response = client.describe_tags(
        ResourceArns=[
            'arn:aws:elasticloadbalancing:ap-northeast-1:012345678901:loadbalancer/app/test/87e887a73b46b460',
        ]
)
    print(json.dumps(response))

そこで、あらためて elb のドキュメントを確認したところ冒頭の記載があることがわかりました。
つまり、elb は Classic Load Balancers 用の API であるという点です。

実際に CLB に対して elb describe_tags を実行したところ成功することを確認できました。

まとめ

今回は Boto3 の elb は Classic Load Balancers 用の API であるという小ネタを紹介しました。
どなたかの参考になれば幸いです。

参考資料

Discussion