[アップデート] AWS Lambda で Python 3.13 ランタイムがサポートされました
いわさです。
先日、AWS SAM CLI にて Python 3.13 サポートがアナウンスされました。
Python 3.13.0 は 2024 年 10 月 7 日がファーストリリースです。約 1 ヶ月で AWS Lambda でもサポートされました。
また、昨日時点ではまだ更新されていなかったのですが今朝確認してみると AWS Lambda 公式ドキュメントの更新履歴にも Python 3.13 サポートが追加され、次回 3.14 のサポート予定時期も追記されています。
新しいランタイムバージョンが使えるようになったくらいですが、Python 3.13 の更新情報などをいくつか整理しておきました。
コンソールからのランタイム選択
以下のとおり Python 3.13 が選択出来るようになっています(東京リージョン)
変更点
リリースノートはこちらです。
新機能見てみると言語仕様というより、インタラクティブシェルやエラーメッセージの改善、モバイルプラットフォームサポートなど実行環境的な部分がたくさん改良されている感じでしょうか。非推奨になっていた 2to3 とかも削除されたみたいですね。
ただ、変更点の詳細を確認してみると、非推奨や削除も含めて言語仕様にも細かい変更が結構入っていますのでバージョンアップ前は必ず確認しておきましょう。
array の新しい型コード'w'
3.13 で array の型コードが追加されていたので試してみました。
import json
import array
def lambda_handler(event, context):
a = array.array('w', 'hello \u2641')
3.12 だと以下のようにエラーとなります。
Response:
{
"errorMessage": "cannot use a str to initialize an array with typecode 'w'",
"errorType": "TypeError",
"requestId": "f3eba733-4988-493e-8755-edfef48a2fc8",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 5, in lambda_handler\n a = array.array('w', 'hello \\u2641')\n"
]
}
Function Logs:
START RequestId: f3eba733-4988-493e-8755-edfef48a2fc8 Version: $LATEST
LAMBDA_WARNING: Unhandled exception. The most likely cause is an issue in the function code. However, in rare cases, a Lambda runtime update can cause unexpected function behavior. For functions using managed runtimes, runtime updates can be triggered by a function change, or can be applied automatically. To determine if the runtime has been updated, check the runtime version in the INIT_START log entry. If this error correlates with a change in the runtime version, you may be able to mitigate this error by temporarily rolling back to the previous runtime version. For more information, see https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html
[ERROR] TypeError: cannot use a str to initialize an array with typecode 'w'
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 5, in lambda_handler
a = array.array('w', 'hello \u2641')END RequestId: f3eba733-4988-493e-8755-edfef48a2fc8
REPORT RequestId: f3eba733-4988-493e-8755-edfef48a2fc8 Duration: 3.20 ms Billed Duration: 4 ms Memory Size: 128 MB Max Memory Used: 32 MB Init Duration: 86.97 ms
3.13 の場合は正常に処理されます。
Response:
null
Function Logs:
START RequestId: 51f3abf5-1bc0-4368-9059-ca5168eed273 Version: $LATEST
END RequestId: 51f3abf5-1bc0-4368-9059-ca5168eed273
REPORT RequestId: 51f3abf5-1bc0-4368-9059-ca5168eed273 Duration: 1.72 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 31 MB Init Duration: 85.84 ms
サポートスケジュールの変更
Python 3.13 からバグフィックスとセキュリティサポートのライフスパンが少し変わったみたいです。
全体で 5 年という点は変わらないですが、3.12 まではバグフィックス期間が 18 ヶ月、その後 42 ヶ月がセキュリティアップデート の期間だったのですが、3.13 からバグフィックスが 24 ヶ月、その後 36 ヶ月がセキュリティアップデートに変わりました。
Lambda を使っていて気にする点は多くないとは思いますが。
さいごに
本日は AWS Lambda で Python 3.13 ランタイムがサポートされていたので変更点などを確認しました。
なお Python 3.8 は本日時点でまだ選択が可能ですが、2024年 10 月 14 日に Lambda でも非推奨となり、2025 年 2 月 28 日には関数の作成が出来なくなる予定です。
変更点に注意しながら計画的にアップデートしましょう。