こんにちは!Tamaです!
今回はAWS Lambdaで使用されるモジュールのバージョンを調べる方法を紹介します。
AWSで新サービス、新機能が追加されてからLambdaで使用されるAWS SDKがバージョンアップされるまで時間がかかることがあります。ドキュメントへの反映もタイムラグがあるため今回直接確かめる方法を紹介します。
ドキュメントによるとランタイム関連は「LAMBDA_RUNTIME_DIR」という環境変数に代入されているようです。
環境変数一覧
Lambda関数の作成
対話形式でのコマンド実行ができないためLambda関数を作成します。
「関数の作成」をクリックします。
設計図の選択では「一から作成」を選択します。
手動で実行するためトリガーは設定しません。
今回はPython3.6で実装します。
ロールの設定はファイルの確認を行うだけのため「基本的なエッジLambdaのアクセス権限」で十分です。
※コードは後ほど編集します。
次へ進み内容を確認語「関数の作成」を選択します。
これでLambda functionが作成できました。
バージョンの確認
コードの編集を行います。
環境変数の一覧(念の為)と対象ディレクトリ内を取得するコードを作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import os def lambda_handler(event, context): #環境変数一覧を取得 print("===[environment-variables]===") for env in os.environ: print(env) #ランタイムの格納されているディレクトリを確認 rtdir=os.environ.get("LAMBDA_RUNTIME_DIR") print("\n===[runtime directory:"+rtdir+"]===") #ディレクトリ内を表示 files = os.listdir(rtdir) for file in files: print(file) return 0 |
出力ログ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
START RequestId: 259734ba-a4bd-11e7-be2c-85717f378c80 Version: $LATEST ===[environment-variables]=== PATH LANG TZ LD_LIBRARY_PATH LAMBDA_TASK_ROOT LAMBDA_RUNTIME_DIR ︙ ===[runtime directory:/var/runtime]=== liblambdaio.so s3transfer botocore-1.7.2.dist-info docutils-0.14.dist-info boto3-1.4.7.dist-info liblambdaruntime.so boto3 six.py liblambdalog.so python_dateutil-2.6.1.dist-info s3transfer-0.1.11.dist-info botocore six-1.10.0.dist-info jmespath-0.9.3.dist-info liblambdaipc.so awslambda __pycache__ docutils dateutil jmespath END RequestId: 259734ba-a4bd-11e7-be2c-85717f378c80 REPORT RequestId: 259734ba-a4bd-11e7-be2c-85717f378c80 Duration: 12.50 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 27 MB |
ログ出力の結果からboto3のバージョンが1.4.7であることが分かりました。
boto3-1.4.7.dist-info
metadata.jsonの中も確認すると”version”: “1.4.7”であることが分かります。
[/var/runtime/boto3-1.4.7.dist-info/metadata.json]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
{ "license": "Apache License 2.0", "name": "boto3", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "The AWS SDK for Python", "run_requires": [ { "requires": [ "botocore>=1.7.0,<1.8.0", "jmespath>=0.7.1,<1.0.0", "s3transfer>=0.1.10,<0.2.0" ] } ], "version": "1.4.7", "extensions": { "python.details": "project_urls": { "Home": "https://github.com/boto/boto3" }, "document_names": { "description": "DESCRIPTION.rst" }, "contacts": [ { "role": "author", "name": "Amazon Web Services" } ] } }, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "extras": [] } |
Lambdaの公式ドキュメントではboto3のバージョンは1.4.4と記載されていますが実際には1.4.7が用意されていました。(2017/09/29現在)
新サービスや新機能が実装されLambdaより使用したい場合一度AWS SDKのバージョンを確かめておくと良いかもしれません。
今回は以上になります!
お疲れさまでした!
またお会いしましょう!