📝
[小ネタ] 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