Lambda マネージドインスタンスの実行環境について理解する - AWS Lambda

Lambda マネージドインスタンスの実行環境について理解する

Lambda マネージドインスタンスでは、Lambda が運用面を管理している間に、ユーザー所有の Amazon EC2 インスタンスで関数コードを実行する代替デプロイモデルを利用できます。マネージドインスタンスの実行環境には、Lambda (デフォルト) 関数との重要な違いがいくつかあります。特に違うのは、同時呼び出しの処理方法とコンテナライフサイクルの管理方法です。

注: Lambda (デフォルト) 実行環境の詳細については、「Lambda 実行環境のライフサイクルの概要」を参照してください。

実行環境のライフサイクル

Lambda マネージドインスタンス関数の実行環境のライフサイクルは、Lambda (デフォルト) とは異なる主要な点がいくつかあります。

初期化フェーズ

初期化フェーズでは、Lambda は次のステップを実行します。

  • すべての拡張機能を初期化して登録する

  • ランタイムエントリポイントをブートストラップする。ランタイムは、設定された数のランタイムワーカーを生成します (実装はランタイムによって異なります)

  • 関数の初期化コードを実行する (ハンドラー外のコード)

  • /runtime/invocation/next を呼び出して、1 つ以上のランタイムワーカーが準備状況を通知するまで待機する

拡張機能が初期化され、少なくとも 1 つのランタイムワーカーが /runtime/invocation/next を呼び出すと、初期化フェーズは完了したと見なされます。その後、関数の呼び出しを処理する準備が整います。

注記

Lambda マネージドインスタンス関数の場合、初期化には最大 15 分かかることがあります。制限時間は 130 秒、または設定されている関数のタイムアウト (最大 900 秒) のいずれかです。

呼び出しフェーズ

Lambda マネージドインスタンス関数の呼び出しフェーズには、固有の特性がいくつかあります。

オペレーションの継続。Lambda (デフォルト) とは異なり、実行環境は継続的にアクティブのままで、呼び出し間でフリーズすることなく到着時に呼び出しを処理します。

並列処理。同じ実行環境内で複数の呼び出しを同時に実行でき、それぞれ異なるランタイムワーカーによって処理されます。

タイムアウトの独立。関数で設定されたタイムアウトは、それぞれの呼び出しに適用されます。呼び出しがタイムアウトすると、Lambda はその特定の呼び出しを失敗としてマークしますが、実行中の他の呼び出しを中断したり、実行環境を終了したりしません。

バックプレッシャー処理。すべてのランタイムワーカーが呼び出しの処理中である場合、ワーカーが利用可能になるまで新しい呼び出しリクエストは拒否されます。

エラー処理と復旧

Lambda マネージドインスタンス関数の実行環境でのエラー処理は、Lambda (デフォルト) とは異なります。

タイムアウトの呼び出し。各呼び出しがタイムアウトすると、Lambda はそのタイムアウトした呼び出しに対するタイムアウトエラーを返しますが、実行環境は終了しません。他の同時呼び出しは引き続き正常に処理されます。

ランタイムワーカーのエラー。ランタイムワーカーのプロセスがクラッシュした場合、実行環境は残りの正常なワーカーで動作し続けます。

拡張機能のクラッシュ。初期化またはオペレーション中に拡張機能プロセスがクラッシュすると、実行環境全体が異常としてマークされ、終了します。Lambda は、新しい実行環境を作成して置き換えます。

リセット/修復なし。Lambda (デフォルト) とは異なり、マネージドインスタンスではエラー後に実行環境のリセットと再初期化は試行されません。その代わり異常なコンテナは終了され、新しいコンテナに置き換えられます。