[アップデート] AWS Lambda でPython3.10ランタイムがサポートされました

2023.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスの小倉です。

LambdaランタイムでPython3.10がサポートされました。

Python3.10自体は2021年の10月にリリースされています。

Python3.10での新機能は、上記AWSブログでも紹介されていますが、公式ドキュメントはもちろんのこと、Python.jpのサイトも参考になります。

動作確認

以下の簡単なコードで動作するか確認します。 Python3.10で導入されたパターンマッチング(match-case)を使ってみました。

import sys

def lambda_handler(event, context):
    match sys.version_info:
        case [major, minor, micro, releaselevel, serial]: # 5つの要素を持つリストやタプルにマッチ
            print(f'major={major} minor={minor} micro={micro} releaselevel={releaselevel} serial={serial}')
        case _:
            print('Invalid')

正しく動作していそうですね。

Lambdaコンテナ用のベースイメージもPython3.10が用意されたとの事なので、こちらも試してみます。

Dockerfile

FROM public.ecr.aws/lambda/python:3.10

COPY app.py ./

CMD ["app.lambda_handler"]

app.pyに、前述のテストコードを記載しておき、ECRにPushした後、コンテナLambdaを作成、実行してみます。

こちらも正しく動作していそうですね。

IaCツール関係では、CloudFormationの他、以下でデプロイできることを確認できました。

  • AWS SAM CLI 1.80.0
  • AWS CDK 2.75.1 (Python3.10対応は2.75.0で導入)

まとめ

待ちに待ったPythonの新バージョンランタイムが来てくれました。 新しい機能も気になりますが、個人的には文法エラーメッセージの改善がなされたことで、 文法誤りが見つけやすくなり、Python初学者にも優しくなるのが良いと思いました。

次はPython3.11への対応も期待して待ちたいと思います。