Lambda プログラミングモデル - AWS Lambda

Lambda プログラミングモデル

Lambda では、すべてのランタイムに共通のプログラミングモデルを提供しています。プログラミングモデルとは、コードと Lambda システムとの間のインターフェイスを定義するものです。関数設定のハンドラを定義して、関数へのエントリポイントを Lambda に伝えます。ランタイムは、呼び出しイベント、および関数名やリクエスト ID などのコンテキストを含むオブジェクトをハンドラーに渡します。

ハンドラーが最初のイベントの処理を終了すると、ランタイムは別のイベントを送信します。関数のクラスはメモリ内にとどまるため、初期化コードにおいて、ハンドラーメソッドの外部で宣言されたクライアントおよび変数は再利用が可能です。後続のイベントの処理時間を短縮するには、初期化中に AWS SDK クライアントなどの再利用可能なリソースを作成します。初期化されると、関数の各インスタンスは数千件のリクエストを処理できます。

AWS X-Ray トレースが有効な場合、ランタイムは初期化と実行のために、別個のサブセグメントを記録します。


      初期化のサブセグメントと呼び出しのサブセグメントを含む X-Ray トレース。

また、関数は、/tmp ディレクトリ内のローカルストレージにもアクセスできます。リクエストを処理している関数のインスタンスは、リサイクルされるまで数時間アクティブのままになります。

ランタイムは、関数からのログ出力をキャプチャし、Amazon CloudWatch Logs に送信します。ランタイムは、関数の出力をログに記録するだけでなく、関数の呼び出しの開始時と終了時にエントリも記録します。これには、リクエスト ID、請求期間、初期化期間、およびその他の詳細を含むレポートログが含まれます。関数によりエラーがスローされた場合、そのエラーは、ランタイムにより呼び出し元に返信されます。

注記

ログ記録は、CloudWatch Logs クォータの対象となります。ログデータは、スロットリングが原因で失われることがあります。また、場合によっては、関数のインスタンス停止時に失われることがあります。

プログラミング言語別のプログラミングモデルの実践的な入門ガイドについては、以下の章を参照してください。

Lambda は、需要の増加に応じて追加のインスタンスを実行し、需要の減少に応じてインスタンスを停止することで関数をスケーリングします。特に明記されていない限り、受信リクエストは、順不同または同時に処理されます。アプリケーションの状態は他のサービスに保存します。関数のインスタンスが長く存続するとは想定しないでください。ローカルストレージとクラスレベルのオブジェクトを使用することで、パフォーマンスを向上させられます。その場合でも、デプロイパッケージのサイズと実行環境に転送するデータの量は最小限に抑えてください。