雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

Lambda内で利用されるboto3のバージョンを調べてみた

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