Lambda ランタイムの Python 2系が廃止になる件について今更まとめてみる

AWS運用自動化サービス「Cloud Automator」

こんにちは、技術1課の加藤です。

Python 2.7 が 2020年1月1日をもってサポート終了となりました。
Sunsetting Python 2 | Python.org

これに伴い Lambda のランタイムからも Python 2系が使えなくなるのでは…!? とザワザワしていたわけですが、どうやら継続的なサポートが行われるようです。
Continued support for Python 2.7 on AWS Lambda

上記は1月の発表なので少々今更感が否めないですが、きちんとランタイムのサポートについて把握していなかったのもあり改めて調べてみました。

ついでに今後の Lambda の Python 2系のサポートについて、まとめてみようと思います。

Lambda ランタイムサポートの廃止

まずは通常のランタイムサポートの廃止について。
公式ドキュメントのランタイムサポートポリシーには以下のように書かれています。

廃止は、2 つのフェーズで行われます。最初のフェーズでは、廃止予定のランタイムを使用する関数を作成することはできません。少なくとも 30 日間は、廃止予定のランタイムを使用する既存の関数を引き続き更新することができます。この期間が過ぎると、関数の作成と更新のいずれも、完全に無効になります。ただし、この関数は呼び出しイベントの処理に引き続き使用することができます。

簡単にまとめると、以下の図のようになります。

段階的に終了させていくことで、ランタイムを完全に廃止するまでに対策を取れるようにしているわけですね。

既存関数の実行については更新できなくなってからもしばらくはサポートするようですが、いつ実行が不可能になるかは記載がありません。
なるべく早急に対応する必要がありそうです。

なおランタイムの廃止に伴って影響を受ける方には、メール通知が送られます。定期的に確認するようにしておきましょう。

Python 2.7 の継続的サポートについて

では Python 2.7 の場合はどうなのか。前述のブログを確認します。

結論から言うと 2020年12月31日まで は、クリティカルなセキュリティパッチについては継続的に提供するようです。廃止予定もまだ出ていませんので、関数の新規作成・更新・利用について特別な設定の必要なく現在も行うことが可能です。

これは Python の2系と3系の互換性が低く、置き換えに時間がかかることを考慮しての対応と明記されています。

We also recognize that these differences can make migration challenging. To allow you additional time to prepare, [AWS Lambda](https://aws.amazon.com/lambda) will continue to provide critical security patches for the Python 2.7 runtime until at least December 31, 2020.

またサポート対象はインタープリタと標準ライブラリまでであり、サードパーティ製のパッケージについてはサポートしないようですね。

Lambda’s scope of support includes the Python interpreter and standard library, but does not extend to third-party packages.

Python 2.7 の廃止予定日は?

現在(2020年2月12日)のところランタイムサポートポリシーのページでは廃止予定日について明記されていません。

とはいえ前述の通り、12月31日までの継続サポートも、以降までの猶予期間として設定されているものですし、いつかは廃止になるだろうことは予想されます。
ですので、なるべく早いうちに対象の Lambda を Python 3系にアップデートしてあげる必要は (当然ですが) あります。

Python 2系から 3系に移行するには

継続サポートのブログにて移行用のガイドやツールについて記載がありましたのでこちらでも掲載しておきます。
なかなか大変な対応ではありますが、みなさん早め早めに3系への移行を進めておきましょう。

AWS運用自動化サービス「Cloud Automator」