AWS LambdaのPythonランタイムとAWSが提供するLambdaレイヤのPythonライブラリを調べてみた。

2024.01.20

こんちには。

データアナリティクス事業本部 機械学習チームの中村(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ランタイムを動かすときのライブラリ確認の参考になれば幸いです。