AWS Lambdaのランタイムは後から変更できるか検証してみた
はじめに
AWS Lambdaを使って開発していると、「Pythonのバージョンって後から変えられるの?」と疑問に思うことがありました。
最初にLambda関数を作成する時にランタイムを選択しますが、開発を進めていく中で「新しいPythonの機能を使いたい」「セキュリティアップデートされたバージョンに移行したい」といった場面が出てくることもあるでしょう。
そこで実際にマネジメントコンソールでランタイムの変更を試してみました。調べてみると、知らなかったこともいくつかあったので、備忘録としてまとめます。
Lambdaのランタイムとは?
まず基本的なところから整理しておきます。
Lambdaの「ランタイム」は、関数コードを実行するための環境(エンジン)のことです。Pythonで書いたコードでも、実際にはこのランタイムがPythonインタープリターを提供して、コードを実行してくれています。
つまり、Pythonのバージョンはこのランタイムで指定されるということになります。
意外だったのは、Lambda関数の実行基盤がLinux環境だということと、Pythonのバージョンによって使用されるAmazon Linuxのバージョンが異なることでした。
例えば:
- Python 3.9 → Amazon Linux 2
- Python 3.12 → Amazon Linux 2023
Pythonで書いているとあまり意識しませんが、実際にはこうしたLinux環境で動いているんですね。
実行環境の裏側:Amazon Linuxを使っているという話
「Pythonで書いても、実際はLinux上で動いてる」というのは、開発者として知っておいて損はないポイントだと思います。しかも、PythonのバージョンによってベースとなるLinuxのバージョンも変わってくるのが興味深いところです。
マネジメントコンソールでのランタイム変更手順
本題のランタイム変更ですが、実際にやってみると思ったより簡単でした。
手順は以下の通りです:
- AWSマネジメントコンソールでLambdaサービスを開く
- 変更したい関数を選択
- タブの下あたりにある「ランタイム」部分を確認
- ランタイムのプルダウンから新しいバージョンを選択
- 変更を保存
GUI操作だけで、特に複雑な手順もなく変更できました。変更後すぐに新しいランタイムで関数が実行されるようになります。
まとめと学び
Lambdaのランタイムは後からGUIでも簡単に変更できることが分かりました。
ただし、ランタイムを変更したことで以下のような影響が出る可能性があるため、実際の運用では注意が必要だと思います:
- 使用しているライブラリとの互換性(特にLayer使用時)
- Pythonの新しい構文が既存コードに影響を与えるケース
- ネイティブ依存のあるパッケージがうまく動作しなくなる可能性
このあたりは、今後私も実際に試しながら確認していこうと思います。
とりあえず、「ランタイムは後からでも変えられる」「PythonのバージョンによってベースのLinux環境も変わる」という2点は、勉強になりました。
参考URL
Lambda ランタイム
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html