Lambda マネージドインスタンスのランタイム - AWS Lambda

Lambda マネージドインスタンスのランタイム

Lambda マネージドインスタンスを使用する場合、Lambda はリクエストを異なる方法で処理します。Lambda マネージドインスタンスは、各実行環境でリクエストを順次処理する代わりに、各実行環境内で複数のリクエストを同時に処理します。この実行モデルの変更により、Lambda マネージドインスタンスを使用する関数は、スレッドセーフ、状態管理、コンテキストの分離、および Lambda (デフォルト) の単一同時実行モデルでは発生しない懸念を考慮する必要があります。さらに、複数同時実行の実装はランタイムによって異なります。

サポートされている言語

Lambda マネージドインスタンスは、次のプログラミング言語とランタイムで使用できます。

  • Java: Java 21 以降。

  • Python: Python 3.13 以降。

  • Node.js: Node.js 22 以降。

  • .NET: .NET 8 以降。

  • Rust: OS 専用ランタイム provided.al2023 以降でサポートされています。

言語固有の考慮事項

プログラミング言語によって、複数同時実行の実装方法はそれぞれ異なります。適切な同時実行のベストプラクティスを適用するには、選択したプログラミング言語で複数同時実行がどのように実装されるかを理解する必要があります。

Java

OS スレッドで単一のプロセスを使用して同時実行を行います。複数のスレッドがハンドラーメソッドを同時に実行するため、状態と共有リソースをスレッドセーフに処理する必要があります。

Python

各同時リクエストが個別のプロセスで実行される複数の Python プロセスが使用されます。これにより、ほとんどの同時実行の問題から保護できますが、/tmp ディレクトリなどの共有リソースに注意が必要です。

Node.js

非同期実行でワーカースレッドを使用します。同時リクエストはワーカースレッド全体に分散され、さらに各ワーカースレッドは同時リクエストを非同期で処理できるため、状態と共有リソースを安全に処理する必要があります。

.NET

複数同時リクエストの非同期処理で .NET タスクを使用します。状態と共有リソースを安全に処理する必要があります。

Rust

Tokio を搭載した非同期タスクで単一のプロセスを使用します。ハンドラー値は、Clone + Send である必要があります。

次のステップ

各ランタイムの詳細については、次のトピックを参照してください。