AWSは最近、Lambdaサービスのマネージド・ランタイムおよびコンテナ・ベース・イメージとしてAmazon Linux 2023(AL2023)を導入した。このランタイムは、開発者がLambda関数を実行するためのOSのみの環境を提供する。
Amazon Linux 2のランタイムと比較すると、AL2023はデプロイ時のフットプリントが大幅に小さくなっており、glibcなどの一般的なライブラリの更新バージョンが提供され、新しいパッケージマネージャーが搭載されている。さらに、AL2023は、Node.js 20、Python 3.12、Java 21、.NET 8など、将来リリースされるLambdaランタイムのベースとしても使用されるとしている。
AL2023の概要(出典:Amazonウェブサイト)
シニアソリューションアーキテクトのRakshith Rao氏は、AL2023のOS専用環境とは何かを説明する。
Lambdaは、Java、Python、Node.js、.NET、Rubyのマネージド・ランタイムを提供する。Lambdaは、Java、Python、Node.js、.NET、Rubyのマネージド・ランタイムを提供しているが、Lambdaのマネージド・ランタイムがサポートしていないプログラミング言語でLambda関数を開発したい場合、"provided "ランタイム・ファミリーは、どの言語で書かれたコードでも実行できるOSのみの環境を提供する。今回のリリースでは、Amazon Linux 2023をサポートするために提供ランタイム・ファミリーを拡張した。
開発者は、OSのみのランタイムを3つのシナリオで使うことができる。
- 第一に、Go、Rust、C++、.NET Native AOT、Java GraalVM Nativeなどの言語で、コンパイルされたバイナリのみがLambdaにアップロードされ、実行にはOS環境のみが必要となる。
- 第二に、PHP用のBrefやSwiftベースのLambda関数用のSwift AWS Lambda Runtimeなど、サードパーティの言語ランタイムの使用を容易にする。
- そして最後に、LambdaがLTSリリースしかサポートしていないNode.js 19に代表されるように、Lambdaのマネージド・ランタイムがカバーしていない言語やバージョン用のカスタム・ランタイムをデプロイすることだ。
開発者がAL2023カスタムランタイムを使用したい場合、LambdaコンソールのCreate functionページに移動し、Runtimeの値としてProvide your own bootstrap on Amazon Linux 2023を選択するか、AWS SAMテンプレートを使用してLambda関数をビルドしてデプロイし、Runtimeの値としてprovided.al2023を使用する。例としては以下のようになる。
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: my.bootstrap.file Runtime: provided.al2023
さらに、AL2カスタムランタイムベースのLambda関数からAL2023に移行もできる。
Staxのエンジニアリング・リードであるMark Wolfe氏がツイートしている。
AWS lambdaの小さなDockerベースイメージについては素晴らしいことだが、正直なところ、なぜこの投稿がphpとswiftについて言及しているのかよくわからないが...。まだgo1.xからal2に移行していないのであれば、al2023にスキップできます。
最後に、AL2023は現在、中国とGovCloudリージョンを除く、Lambdaが知られている全てのリージョンで利用可能だ。