AWS LambdaのPythonランタイムとAWSが提供するLambdaレイヤのPythonライブラリを調べてみた。
こんちには。
データアナリティクス事業本部 機械学習チームの中村(nokomoro3)です。
今回はAWS LambdaのPythonパッケージのランタイムを調べてみたのでご紹介します。
なおバージョン等は本日時点での内容となっておりますのでご注意ください。
検証したパターン
以下のランタイムとAWSが提供しているLambdaレイヤのいくつかの組み合わせで検証しました。
- ランタイム : Python 3.7
- レイヤ : なし
- レイヤ : AWS SDK for Pandas
- レイヤ : SciPy
- ランタイム : Python 3.8
- レイヤ : なし
- レイヤ : AWS SDK for Pandas
- レイヤ : SciPy
- ランタイム : Python 3.9
- レイヤ : なし
- レイヤ : AWS SDK for Pandas
- ランタイム : Python 3.10
- レイヤ : なし
- レイヤ : AWS SDK for Pandas
- ランタイム : Python 3.11
- レイヤ : なし
- レイヤ : AWS SDK for Pandas
- ランタイム : Python 3.12
- レイヤ : なし (※ただし
setuptools
のみレイヤで追加) - レイヤ : Lambda Power Tools
- レイヤ : AWS SDK for Pandas
- レイヤ : なし (※ただし
ランタイムのアーキテクチャはx86_64を今回は使用します。
後述しますが、Python 3.12ではsetuptools
がランタイム単体ではライブラリに含まれていなかったため、後述の確認用コードのpkg_resources
を使うことができませんでした。
そのためPython 3.12のみランタイム単体ではなく、setuptools
をカスタムレイヤとして追加しています。
なお、Python 3.7は既にEOLを過ぎているので、その点はご留意ください。
またLambda Power Toolsは各ランタイムで共通のレイヤでしたので、Python 3.12でのみで確認しています。
検証に使用したコード
以下の記事のコードを参考にさせて頂いています。
実際にはコードをLambda関数のコードとして使用しました。
import pkg_resources def lambda_handler(event, context): pkgs = "\n".join( sorted( [f"{d.project_name}=={d.version}" for d in pkg_resources.working_set] ) ) return {"statusCode": 200, "body": pkgs}
こちらをAWS CLIからinvokeすることで結果を得ています。
環境の構築はterraformを使っています。以降の結果含め一式のコードは以下に置いておきました。
ランタイムの結果
Python 3.7
ランタイムバージョンARNは現時点では以下でした。
arn:aws:lambda:ap-northeast-1::runtime:e9c56b11e27ca4645b46ad3628302cb768e25fcd80db318333804148740632c1
ライブラリは以下のようになっています。
boto3==1.26.90 botocore==1.29.90 certifi==2020.11.8 # Python 3.7のみ chardet==4.0.0 # Python 3.7のみ charset-normalizer==2.0.12 # Python 3.7のみ idna==2.10 # Python 3.7のみ jmespath==1.0.1 pip==23.0.1 python-dateutil==2.8.2 requests==2.26.0 # Python 3.7のみ s3transfer==0.6.0 setuptools==47.1.0 six==1.16.0 urllib3==1.26.6
certifi、chardet、charset-normalizer、idna、requestsは次のPython 3.8では含まれなくなったライブラリです。
Python 3.8
ランタイムバージョンARNは現時点では以下でした。
arn:aws:lambda:ap-northeast-1::runtime:530a0fc90c888c9eaf847f5d29df11c0250be17a941e9f31f9253f7e97f17fae
ライブラリは以下のようになっています。
boto3==1.26.90 botocore==1.29.90 jmespath==1.0.1 pip==23.0.1 python-dateutil==2.8.2 rapid-client==0.0.0 # Python 3.8のみ s3transfer==0.6.0 setuptools==56.0.0 six==1.16.0 urllib3==1.26.11
Python 3.7と比較してcertifi、chardet、charset-normalizer、idna、requestsが無くなっています。
またrapid-clientが追加されています。
Python 3.9
ランタイムバージョンARNは現時点では以下でした。
arn:aws:lambda:ap-northeast-1::runtime:6e41a7fdab7b2f91b16df6a7a477a47bc5de8ececaa8e6f938c57cf2b05e1eb9
ライブラリは以下のようになっています。
awslambdaric==2.0.7 # Python 3.9以降追加 boto3==1.26.90 botocore==1.29.90 jmespath==1.0.1 pip==23.0.1 python-dateutil==2.8.2 s3transfer==0.6.0 setuptools==58.1.0 simplejson==3.17.2 # Python 3.9以降追加 six==1.16.0 urllib3==1.26.11
Python 3.8と比較してrapid-clientが無くなっています。
またawslambdaric、simplejsonが追加されています。
Python 3.10
ランタイムバージョンARNは現時点では以下でした。
arn:aws:lambda:ap-northeast-1::runtime:c1ae297a508af4204a2fc3c05cf728aec15ccd79353a75829ad79b15c3a609a0
ライブラリは以下のようになっています。
awslambdaric==2.0.7 boto3==1.26.90 botocore==1.29.90 jmespath==1.0.1 pip==23.0.1 python-dateutil==2.8.2 s3transfer==0.6.0 setuptools==65.5.1 simplejson==3.17.2 six==1.16.0 urllib3==1.26.15
Python 3.9と変わっておらずバージョンが異なるだけとなっています。
以降Python 3.11までバージョンが異なるだけとなっています。
Python 3.11
ランタイムバージョンARNは現時点では以下でした。
arn:aws:lambda:ap-northeast-1::runtime:a3304f2b48f740276b97ad9c52a9cc36a0bd9b44fecf74d0f1416aafb74e92fc
ライブラリは以下のようになっています。
awslambdaric==2.0.7 boto3==1.27.1 botocore==1.30.1 jmespath==1.0.1 pip==23.2.1 python-dateutil==2.8.2 s3transfer==0.6.1 setuptools==65.5.0 simplejson==3.17.2 six==1.16.0 urllib3==1.26.15
こちらもPython 3.10と変わっておらずバージョンが異なるだけとなっています。
Python 3.12
ランタイムバージョンARNは現時点では以下でした。
arn:aws:lambda:ap-northeast-1::runtime:c9875014cbcc77e3455765804516f064d18fe7b27ae7bdb2b1d84ab01ba784f5
ライブラリは以下のようになっています。
awslambdaric==2.0.8 boto3==1.28.72 botocore==1.31.72 jmespath==1.0.1 pip==23.2.1 python-dateutil==2.8.2 s3transfer==0.7.0 # setuptools==69.0.3 simplejson==3.17.2 six==1.16.0 urllib3==1.26.17
検証のためsetuptools
をカスタムレイヤで入れていますが、実際にはランタイム単体では含まれませんので一覧からはコメントアウトしています。
それ以外はPython 3.11とバージョンが異なるだけとなっています。
Lambdaレイヤ (Lambda Power Tools)
Lambda Power Toolsの情報は以下に記載されており、こちらで最新のLambdaレイヤのARNなどが確認できます。
Pythonバージョン間で共通のARNのレイヤが使われますので、Python 3.12でのみ確認してみました。
Python 3.12 + Lambda Power Tools
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:017000801446:layer:AWSLambdaPowertoolsPythonV2:60
ライブラリは以下のようになっています。
aws-lambda-powertools==2.32.0 # Lambda Power Toolで追加 aws-xray-sdk==2.12.1 # Lambda Power Toolで追加 awslambdaric==2.0.8 boto3==1.28.72 botocore==1.31.72 fastjsonschema==2.19.1 # Lambda Power Toolで追加 jmespath==1.0.1 pip==23.2.1 pydantic==1.10.13 # Lambda Power Toolで追加 python-dateutil==2.8.2 s3transfer==0.7.0 # setuptools==69.0.3 simplejson==3.17.2 six==1.16.0 typing-extensions==4.9.0 # Lambda Power Toolで追加 urllib3==1.26.17 wrapt==1.16.0 # Lambda Power Toolで追加
aws-lambda-powertools、aws-xray-sdk、fastjsonschema、pydantic、typing-extensions、wraptが追加されるようです。
Lambdaレイヤ (AWS SDK for Pandas)
AWS SDK for Pandasの情報は以下に記載されており、こちらで最新のLambdaレイヤのARNなどが確認できます。
現在のバージョンは3.5.1のようですが、Python 3.7用についてはEOLのため記載がされていませんでした。
そのためマネジメントコンソール上で選択可能なARNをLambdaレイヤに指定しています。
Python 3.7 + AWS SDK for Pandas
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:336392948345:layer:AWSSDKPandas-Python37:5
ライブラリは以下のようになっています。
PyMySQL==1.0.2 # AWS SDK for Pandasで追加 aenum==3.1.11 # AWS SDK for Pandasで追加 aiohttp==3.8.1 # AWS SDK for Pandasで追加 aiosignal==1.3.1 # AWS SDK for Pandasで追加 asn1crypto==1.5.1 # AWS SDK for Pandasで追加 async-timeout==4.0.2 # AWS SDK for Pandasで追加 asynctest==0.13.0 # AWS SDK for Pandasで追加 (Python 3.7のみ) attrs==22.2.0 # AWS SDK for Pandasで追加 awswrangler==2.20.1 # AWS SDK for Pandasで追加 backoff==2.2.1 # AWS SDK for Pandasで追加 (Python 3.7のみ) beautifulsoup4==4.12.0 # AWS SDK for Pandasで追加 boto3==1.26.90 botocore==1.29.90 certifi==2022.12.7 chardet==4.0.0 charset-normalizer==2.1.1 decorator==5.1.1 # AWS SDK for Pandasで追加 (Python 3.7のみ) et-xmlfile==1.1.0 # AWS SDK for Pandasで追加 frozenlist==1.3.3 # AWS SDK for Pandasで追加 gremlinpython==3.6.2 # AWS SDK for Pandasで追加 idna==3.4 importlib-metadata==6.1.0 # AWS SDK for Pandasで追加 (Python 3.7のみ) isodate==0.6.1 # AWS SDK for Pandasで追加 jmespath==1.0.1 jsonpath-ng==1.5.3 # AWS SDK for Pandasで追加 lxml==4.9.2 # AWS SDK for Pandasで追加 multidict==6.0.4 # AWS SDK for Pandasで追加 nest-asyncio==1.5.6 # AWS SDK for Pandasで追加 numpy==1.21.6 # AWS SDK for Pandasで追加 openpyxl==3.0.10 # AWS SDK for Pandasで追加 opensearch-py==2.2.0 # AWS SDK for Pandasで追加 packaging==23.0 # AWS SDK for Pandasで追加 pandas==1.3.5 # AWS SDK for Pandasで追加 pg8000==1.29.4 # AWS SDK for Pandasで追加 pip==23.0.1 ply==3.11 # AWS SDK for Pandasで追加 progressbar2==4.2.0 # AWS SDK for Pandasで追加 (Python 3.7のみ) pyarrow==10.0.0 # AWS SDK for Pandasで追加 python-dateutil==2.8.2 python-utils==3.5.2 # AWS SDK for Pandasで追加 (Python 3.7のみ) pytz==2022.7.1 # AWS SDK for Pandasで追加 redshift-connector==2.0.910 # AWS SDK for Pandasで追加 requests-aws4auth==1.2.2 # AWS SDK for Pandasで追加 requests==2.28.2 s3transfer==0.6.0 scramp==1.4.4 # AWS SDK for Pandasで追加 setuptools==67.6.0 six==1.16.0 soupsieve==2.4 # AWS SDK for Pandasで追加 typing-extensions==4.5.0 # AWS SDK for Pandasで追加 urllib3==1.26.15 yarl==1.8.2 # AWS SDK for Pandasで追加 zipp==3.15.0 # AWS SDK for Pandasで追加 (Python 3.7のみ)
多くのライブラリが追加されますね。Python 3.7のみに含まれるライブラリもあるようです。
またLambda Power Toolsと共通なのは、typing-extensionsくらいなようです。
Python 3.8 + AWS SDK for Pandas
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:336392948345:layer:AWSSDKPandas-Python38:14
ライブラリは以下のようになっています。
PyMySQL==1.1.0 # AWS SDK for Pandasで追加 aenum==3.1.15 # AWS SDK for Pandasで追加 aiohttp==3.9.1 # AWS SDK for Pandasで追加 aiosignal==1.3.1 # AWS SDK for Pandasで追加 asn1crypto==1.5.1 # AWS SDK for Pandasで追加 async-timeout==4.0.3 # AWS SDK for Pandasで追加 attrs==23.2.0 # AWS SDK for Pandasで追加 awswrangler==3.5.1 # AWS SDK for Pandasで追加 beautifulsoup4==4.12.2 # AWS SDK for Pandasで追加 boto3==1.26.90 botocore==1.29.90 certifi==2023.11.17 # AWS SDK for Pandasで追加 charset-normalizer==3.3.2 # AWS SDK for Pandasで追加 et-xmlfile==1.1.0 # AWS SDK for Pandasで追加 frozenlist==1.4.1 # AWS SDK for Pandasで追加 gremlinpython==3.7.1 # AWS SDK for Pandasで追加 idna==3.6 # AWS SDK for Pandasで追加 isodate==0.6.1 # AWS SDK for Pandasで追加 jmespath==1.0.1 jsonpath-ng==1.6.1 # AWS SDK for Pandasで追加 lxml==5.1.0 # AWS SDK for Pandasで追加 multidict==6.0.4 # AWS SDK for Pandasで追加 nest-asyncio==1.5.8 # AWS SDK for Pandasで追加 numpy==1.24.4 # AWS SDK for Pandasで追加 openpyxl==3.1.2 # AWS SDK for Pandasで追加 opensearch-py==2.4.2 # AWS SDK for Pandasで追加 packaging==23.2 # AWS SDK for Pandasで追加 pandas==2.0.3 # AWS SDK for Pandasで追加 pg8000==1.30.4 # AWS SDK for Pandasで追加 pip==23.0.1 ply==3.11 # AWS SDK for Pandasで追加 pyarrow==14.0.1 # AWS SDK for Pandasで追加 python-dateutil==2.8.2 pytz==2023.3.post1 # AWS SDK for Pandasで追加 rapid-client==0.0.0 redshift-connector==2.0.918 # AWS SDK for Pandasで追加 requests-aws4auth==1.2.3 # AWS SDK for Pandasで追加 requests==2.31.0 # AWS SDK for Pandasで追加 s3transfer==0.6.0 scramp==1.4.4 # AWS SDK for Pandasで追加 setuptools==69.0.3 six==1.16.0 soupsieve==2.5 # AWS SDK for Pandasで追加 typing-extensions==4.9.0 # AWS SDK for Pandasで追加 tzdata==2023.4 # AWS SDK for Pandasで追加 (Python 3.8以降) urllib3==1.26.11 yarl==1.9.4 # AWS SDK for Pandasで追加
Python 3.7の時との違いは、tzdataが追加されている点のようです。
またcertifi、charset-normalizer、idna、requestsはPython 3.8の時はランタイム単体では含まれていませんでしたが、AWS SDK for Pythonを使うことにより含まれるようになっています。
Python 3.9 + AWS SDK for Pandas
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:336392948345:layer:AWSSDKPandas-Python39:14
ライブラリは以下のようになっています。
PyMySQL==1.1.0 # AWS SDK for Pandasで追加 aenum==3.1.15 # AWS SDK for Pandasで追加 aiohttp==3.9.1 # AWS SDK for Pandasで追加 aiosignal==1.3.1 # AWS SDK for Pandasで追加 asn1crypto==1.5.1 # AWS SDK for Pandasで追加 async-timeout==4.0.3 # AWS SDK for Pandasで追加 attrs==23.2.0 # AWS SDK for Pandasで追加 awslambdaric==2.0.7 awswrangler==3.5.1 # AWS SDK for Pandasで追加 beautifulsoup4==4.12.2 # AWS SDK for Pandasで追加 boto3==1.26.90 botocore==1.29.90 certifi==2023.11.17 # AWS SDK for Pandasで追加 charset-normalizer==3.3.2 # AWS SDK for Pandasで追加 et-xmlfile==1.1.0 # AWS SDK for Pandasで追加 frozenlist==1.4.1 # AWS SDK for Pandasで追加 gremlinpython==3.7.1 # AWS SDK for Pandasで追加 idna==3.6 # AWS SDK for Pandasで追加 isodate==0.6.1 # AWS SDK for Pandasで追加 jmespath==1.0.1 jsonpath-ng==1.6.1 # AWS SDK for Pandasで追加 lxml==5.1.0 # AWS SDK for Pandasで追加 multidict==6.0.4 # AWS SDK for Pandasで追加 nest-asyncio==1.5.8 # AWS SDK for Pandasで追加 numpy==1.26.3 # AWS SDK for Pandasで追加 openpyxl==3.1.2 # AWS SDK for Pandasで追加 opensearch-py==2.4.2 # AWS SDK for Pandasで追加 packaging==23.2 # AWS SDK for Pandasで追加 pandas==2.1.4 # AWS SDK for Pandasで追加 pg8000==1.30.4 # AWS SDK for Pandasで追加 pip==23.0.1 ply==3.11 # AWS SDK for Pandasで追加 pyarrow==14.0.1 # AWS SDK for Pandasで追加 python-dateutil==2.8.2 pytz==2023.3.post1 # AWS SDK for Pandasで追加 redshift-connector==2.0.918 # AWS SDK for Pandasで追加 requests-aws4auth==1.2.3 # AWS SDK for Pandasで追加 requests==2.31.0 # AWS SDK for Pandasで追加 s3transfer==0.6.0 scramp==1.4.4 # AWS SDK for Pandasで追加 setuptools==69.0.3 simplejson==3.17.2 six==1.16.0 soupsieve==2.5 # AWS SDK for Pandasで追加 typing-extensions==4.9.0 # AWS SDK for Pandasで追加 tzdata==2023.4 # AWS SDK for Pandasで追加 urllib3==1.26.11 yarl==1.9.4 # AWS SDK for Pandasで追加
Python 3.8との差はランタイム単体の差分のみであり、レイヤとしてはバージョンの違いしか差分は無いようです。
Python 3.9以降はランタイムもバージョンの差分しかないため、全体としてバージョンだけが異なる形となります。
Python 3.10 + AWS SDK for Pandas
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:336392948345:layer:AWSSDKPandas-Python310:9
ライブラリは以下のようになっています。
PyMySQL==1.1.0 # AWS SDK for Pandasで追加 aenum==3.1.15 # AWS SDK for Pandasで追加 aiohttp==3.9.1 # AWS SDK for Pandasで追加 aiosignal==1.3.1 # AWS SDK for Pandasで追加 asn1crypto==1.5.1 # AWS SDK for Pandasで追加 async-timeout==4.0.3 # AWS SDK for Pandasで追加 attrs==23.2.0 # AWS SDK for Pandasで追加 awslambdaric==2.0.7 awswrangler==3.5.1 # AWS SDK for Pandasで追加 beautifulsoup4==4.12.2 # AWS SDK for Pandasで追加 boto3==1.26.90 botocore==1.29.90 certifi==2023.11.17 # AWS SDK for Pandasで追加 charset-normalizer==3.3.2 # AWS SDK for Pandasで追加 et-xmlfile==1.1.0 # AWS SDK for Pandasで追加 frozenlist==1.4.1 # AWS SDK for Pandasで追加 gremlinpython==3.7.1 # AWS SDK for Pandasで追加 idna==3.6 # AWS SDK for Pandasで追加 isodate==0.6.1 # AWS SDK for Pandasで追加 jmespath==1.0.1 jsonpath-ng==1.6.1 # AWS SDK for Pandasで追加 lxml==5.1.0 # AWS SDK for Pandasで追加 multidict==6.0.4 # AWS SDK for Pandasで追加 nest-asyncio==1.5.8 # AWS SDK for Pandasで追加 numpy==1.26.3 # AWS SDK for Pandasで追加 openpyxl==3.1.2 # AWS SDK for Pandasで追加 opensearch-py==2.4.2 # AWS SDK for Pandasで追加 packaging==23.2 # AWS SDK for Pandasで追加 pandas==2.1.4 # AWS SDK for Pandasで追加 pg8000==1.30.4 # AWS SDK for Pandasで追加 pip==23.0.1 ply==3.11 # AWS SDK for Pandasで追加 pyarrow==14.0.1 # AWS SDK for Pandasで追加 python-dateutil==2.8.2 pytz==2023.3.post1 # AWS SDK for Pandasで追加 redshift-connector==2.0.918 # AWS SDK for Pandasで追加 requests-aws4auth==1.2.3 # AWS SDK for Pandasで追加 requests==2.31.0 # AWS SDK for Pandasで追加 s3transfer==0.6.0 scramp==1.4.4 # AWS SDK for Pandasで追加 setuptools==69.0.3 simplejson==3.17.2 six==1.16.0 soupsieve==2.5 # AWS SDK for Pandasで追加 typing-extensions==4.9.0 # AWS SDK for Pandasで追加 tzdata==2023.4 # AWS SDK for Pandasで追加 urllib3==1.26.15 yarl==1.9.4 # AWS SDK for Pandasで追加
Python 3.11 + AWS SDK for Pandas
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:336392948345:layer:AWSSDKPandas-Python311:6
ライブラリは以下のようになっています。
PyMySQL==1.1.0 # AWS SDK for Pandasで追加 aenum==3.1.15 # AWS SDK for Pandasで追加 aiohttp==3.9.1 # AWS SDK for Pandasで追加 aiosignal==1.3.1 # AWS SDK for Pandasで追加 asn1crypto==1.5.1 # AWS SDK for Pandasで追加 async-timeout==4.0.3 # AWS SDK for Pandasで追加 attrs==23.2.0 # AWS SDK for Pandasで追加 awslambdaric==2.0.7 awswrangler==3.5.1 # AWS SDK for Pandasで追加 beautifulsoup4==4.12.2 # AWS SDK for Pandasで追加 boto3==1.27.1 botocore==1.30.1 certifi==2023.11.17 # AWS SDK for Pandasで追加 charset-normalizer==3.3.2 # AWS SDK for Pandasで追加 et-xmlfile==1.1.0 # AWS SDK for Pandasで追加 frozenlist==1.4.1 # AWS SDK for Pandasで追加 gremlinpython==3.7.1 # AWS SDK for Pandasで追加 idna==3.6 # AWS SDK for Pandasで追加 isodate==0.6.1 # AWS SDK for Pandasで追加 jmespath==1.0.1 jsonpath-ng==1.6.1 # AWS SDK for Pandasで追加 lxml==5.1.0 # AWS SDK for Pandasで追加 multidict==6.0.4 # AWS SDK for Pandasで追加 nest-asyncio==1.5.8 # AWS SDK for Pandasで追加 numpy==1.26.3 # AWS SDK for Pandasで追加 openpyxl==3.1.2 # AWS SDK for Pandasで追加 opensearch-py==2.4.2 # AWS SDK for Pandasで追加 packaging==23.2 # AWS SDK for Pandasで追加 pandas==2.1.4 # AWS SDK for Pandasで追加 pg8000==1.30.4 # AWS SDK for Pandasで追加 pip==23.2.1 ply==3.11 # AWS SDK for Pandasで追加 pyarrow==14.0.1 # AWS SDK for Pandasで追加 python-dateutil==2.8.2 pytz==2023.3.post1 # AWS SDK for Pandasで追加 redshift-connector==2.0.918 # AWS SDK for Pandasで追加 requests-aws4auth==1.2.3 # AWS SDK for Pandasで追加 requests==2.31.0 # AWS SDK for Pandasで追加 s3transfer==0.6.1 scramp==1.4.4 # AWS SDK for Pandasで追加 setuptools==69.0.3 simplejson==3.17.2 six==1.16.0 soupsieve==2.5 # AWS SDK for Pandasで追加 typing-extensions==4.9.0 # AWS SDK for Pandasで追加 tzdata==2023.4 # AWS SDK for Pandasで追加 urllib3==1.26.15 yarl==1.9.4 # AWS SDK for Pandasで追加
Python 3.12 + AWS SDK for Pandas
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:336392948345:layer:AWSSDKPandas-Python312:2
ライブラリは以下のようになっています。(ランタイムと同様にsetuptools
は含まれないのでコメントアウトしています)
PyMySQL==1.1.0 # AWS SDK for Pandasで追加 aenum==3.1.15 # AWS SDK for Pandasで追加 aiohttp==3.9.1 # AWS SDK for Pandasで追加 aiosignal==1.3.1 # AWS SDK for Pandasで追加 asn1crypto==1.5.1 # AWS SDK for Pandasで追加 async-timeout==4.0.3 # AWS SDK for Pandasで追加 attrs==23.2.0 # AWS SDK for Pandasで追加 awslambdaric==2.0.8 awswrangler==3.5.1 # AWS SDK for Pandasで追加 beautifulsoup4==4.12.2 # AWS SDK for Pandasで追加 boto3==1.28.72 botocore==1.31.72 certifi==2023.11.17 # AWS SDK for Pandasで追加 charset-normalizer==3.3.2 # AWS SDK for Pandasで追加 et-xmlfile==1.1.0 # AWS SDK for Pandasで追加 frozenlist==1.4.1 # AWS SDK for Pandasで追加 gremlinpython==3.7.1 # AWS SDK for Pandasで追加 idna==3.6 # AWS SDK for Pandasで追加 isodate==0.6.1 # AWS SDK for Pandasで追加 jmespath==1.0.1 jsonpath-ng==1.6.1 # AWS SDK for Pandasで追加 lxml==5.1.0 # AWS SDK for Pandasで追加 multidict==6.0.4 # AWS SDK for Pandasで追加 nest-asyncio==1.5.8 # AWS SDK for Pandasで追加 numpy==1.26.3 # AWS SDK for Pandasで追加 openpyxl==3.1.2 # AWS SDK for Pandasで追加 opensearch-py==2.4.2 # AWS SDK for Pandasで追加 packaging==23.2 # AWS SDK for Pandasで追加 pandas==2.1.4 # AWS SDK for Pandasで追加 pg8000==1.30.4 # AWS SDK for Pandasで追加 pip==23.2.1 ply==3.11 # AWS SDK for Pandasで追加 pyarrow==14.0.1 # AWS SDK for Pandasで追加 python-dateutil==2.8.2 pytz==2023.3.post1 # AWS SDK for Pandasで追加 redshift-connector==2.0.918 # AWS SDK for Pandasで追加 requests-aws4auth==1.2.3 # AWS SDK for Pandasで追加 requests==2.31.0 # AWS SDK for Pandasで追加 s3transfer==0.7.0 scramp==1.4.4 # AWS SDK for Pandasで追加 # setuptools==69.0.3 simplejson==3.17.2 six==1.16.0 soupsieve==2.5 # AWS SDK for Pandasで追加 typing-extensions==4.9.0 # AWS SDK for Pandasで追加 tzdata==2023.4 # AWS SDK for Pandasで追加 urllib3==1.26.17 yarl==1.9.4 # AWS SDK for Pandasで追加
Lambdaレイヤ (SciPy)
Python 3.7とPython 3.8のみでLambdaレイヤがAWSから提供されているため、この2種類で確認してみます。
Python 3.7 + SciPy
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:249908578461:layer:AWSLambda-Python37-SciPy1x:118
ライブラリは以下のようになっています。
boto3==1.26.90 botocore==1.29.90 certifi==2020.11.8 chardet==4.0.0 charset-normalizer==2.0.12 idna==2.10 jmespath==1.0.1 numpy==1.21.3 # SciPyで追加 pip==23.0.1 python-dateutil==2.8.2 requests==2.26.0 s3transfer==0.6.0 scipy==1.7.1 # SciPyで追加 setuptools==47.1.0 six==1.16.0 urllib3==1.26.6
SciPyとNumPyのみが追加されています。
Python 3.8 + SciPy
LambdaレイヤのARNは以下となります。
arn:aws:lambda:ap-northeast-1:249908578461:layer:AWSLambda-Python38-SciPy1x:109
ライブラリは以下のようになっています。
boto3==1.26.90 botocore==1.29.90 jmespath==1.0.1 numpy==1.21.3 # SciPyで追加 pip==23.0.1 python-dateutil==2.8.2 rapid-client==0.0.0 s3transfer==0.6.0 scipy==1.7.1 # SciPyで追加 setuptools==56.0.0 six==1.16.0 urllib3==1.26.11
まとめ
いかがでしたでしょうか。
本ブログがAWS LambdaのPythonランタイムを動かすときのライブラリ確認の参考になれば幸いです。