Lambdaで実行するboto3のバージョンを調べたのでメモ。
調べ方
OSモジュールをインポートして、Lambdaのruntime情報が格納されているディレクトリを参照する。 以下はPython3系のLambdaを調べた時のコード。
import os import pprint as pp def lambda_handler(event, context): pp.pprint(os.listdir(os.environ.get('LAMBDA_RUNTIME_DIR')))
実行結果
Python3系のBoto3のバージョンを調べてみました。
Python 3.8
boto3-1.10.34
['boto3-1.10.34.dist-info', 'botocore-1.13.34.dist-info', '__pycache__', 'six.py', 'docutils', 'layer_bootstrap', 'jmespath-0.9.4.dist-info', 'urllib3', 'botocore', 'bootstrap', 'six-1.13.0.dist-info', 'rapid_client.cpp', 's3transfer-0.2.1.dist-info', 'setup.py', 'jmespath', 'runtime-release', 'bin', 'python_dateutil-2.8.0.dist-info', 'lambda_runtime_client.py', 'deps', 'build', 'boto3', 'urllib3-1.25.7.dist-info', 'lambda_runtime_exception.py', 'lambda_runtime_marshaller.py', 's3transfer', 'docutils-0.15.2.dist-info', 'dateutil', 'lambda_internal', 'bootstrap.py']
Python 3.7
boto3-1.10.34
['boto3-1.10.34.dist-info', 'botocore-1.13.34.dist-info', '__pycache__', 'six.py', 'docutils', 'layer_bootstrap', 'jmespath-0.9.4.dist-info', 'urllib3', 'botocore', 'bootstrap', 'six-1.13.0.dist-info', 's3transfer-0.2.1.dist-info', 'test_bootstrap.py', 'jmespath', 'runtime-release', 'test_lambda_runtime_marshaller.py', 'bin', 'python_dateutil-2.8.0.dist-info', 'lambda_runtime_client.py', 'boto3', 'urllib3-1.25.7.dist-info', 'lambda_runtime_exception.py', 'lambda_runtime_marshaller.py', 'test_lambda_runtime_client.py', 's3transfer', 'docutils-0.15.2.dist-info', 'dateutil', 'bootstrap.py']
Python 3.6
boto3-1.10.35
['liblambdalog.so', 'liblambdaio.so', '__pycache__', 'six.py', 'docutils', 'jmespath-0.9.4.dist-info', 'urllib3', 'botocore', 'six-1.13.0.dist-info', 's3transfer-0.2.1.dist-info', 'jmespath', 'runtime-release', 'liblambdaipc.so', 'bin', 'python_dateutil-2.8.0.dist-info', 'boto3', 'urllib3-1.25.7.dist-info', 'botocore-1.13.35.dist-info', 'liblambdaruntime.so', 's3transfer', 'docutils-0.15.2.dist-info', 'awslambda', 'dateutil', 'boto3-1.10.35.dist-info']
最後に
Lambdaはマネージドサービスなので、 モジュールのバージョンが変わるのかな?少し間を開けて調べてみよう。 モジュールのバージョンを任意に固定したい場合は、LambdaのLayer機能を利用して自身でモジュールアップロードすればできますね。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html