Lambda の OS 専用ランタイムを使用する状況
Lambda は Java、Python、Node.js、.NET、Ruby のマネージドランタイムを提供しています。マネージドランタイムとして使用できないプログラミング言語で Lambda 関数を作成するには、OS 専用ランタイム (provided
ランタイムファミリー) を使用します。OS 専用ランタイムの主な使用例は次の 3 つです。
-
ネイティブアヘッドオブタイム (AOT) コンパイル: Go、Rust、C++ などの言語は、実行可能なバイナリにネイティブにコンパイルされるため、専用の言語ランタイムは必要ありません。これらの言語に必要なのは、コンパイルされたバイナリを実行できる OS 環境だけです。Lambda OS 専用ランタイムを使用して、.NET ネイティブ AOT と Java GraalVM ネイティブでコンパイルされたバイナリをデプロイすることもできます。
バイナリには、ランタイムインターフェイスクライアントを含める必要があります。ランタイムインターフェイスクライアントは カスタムランタイムに Lambda ランタイム API を使用する を呼び出して関数呼び出しを取得し、次に関数ハンドラーを呼び出します。Lambda は Go、.NET Native AOT、C++
、Rust (実験的) 用のランタイムインターフェイスクライアントを提供しています。 バイナリは Linux 環境用に、関数に使用する予定のものと同じ命令セットアーキテクチャ (x86_64 または arm64) でコンパイルする必要があります。
-
サードパーティランタイム: PHP 用の Bref
や Swift 用の Swift AWS Lambda ランタイム などの既製のランタイムを使用して Lambda 関数を実行できます。 -
カスタムランタイム: Lambda がマネージドランタイムを提供していない言語または言語バージョン (Node.js 19 など) 用に独自のランタイムを構築できます。詳細については、「AWS Lambda 用カスタムランタイムの構築」を参照してください。これは OS 専用ランタイムでは最も稀なユースケースです。
Lambda は以下の OS 専用 ランタイムをサポートします。
名前 | 識別子 | オペレーティングシステム | 廃止日 | 関数の作成をブロックする | 関数の更新をブロックする |
---|---|---|---|---|---|
OS 専用ランタイム |
|
Amazon Linux 2023 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
OS 専用ランタイム |
|
Amazon Linux 2 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Amazon Linux 2023 (provided.al2023
) ランタイムには、デプロイのフットプリントが小さいことや、glibc
などのライブラリのバージョンが更新されていることなど、Amazon Linux 2 に比べていくつかの利点があります。
provided.al2023
ランタイムは、Amazon Linux 2 のデフォルトのパッケージマネージャーである yum
ではなく、dnf
をパッケージマネージャーとして使用します。provided.al2023
と provided.al2
の違いの詳細については、AWS コンピューティングブログの「Introducing the Amazon Linux 2023 runtime for AWS Lambda