Lambda を使用したコードの実行 - AWS Lambda

Lambda を使用したコードの実行

Lambda 関数を記述する際、独自のサーバーレス環境で実行するコードを作成します。Lambda が実際にコードを実行する方法を理解するには、コードが Lambda とやり取りする方法を定義するプログラミングモデルと、Lambda がコードのランタイム環境を管理する方法を決定する実行環境ライフサイクルの 2 つが重要となります。

Lambda プログラミングモデル

プログラミングモデル 関数は、Python、Java、またはその他のサポートされている言語で記述しているかどうかにかかわらず、Lambda がコードと連携するための共通のルールセットとして機能します。プログラミングモデルには、ランタイムとハンドラーが含まれています。

  1. Lambda はイベントを受け取ります。

  2. Lambda はランタイム (Python、Java など) を使用して、コードで使用できる形式でイベントを準備します。

  3. ランタイムは、フォーマットされたイベントをハンドラーに送信します。

  4. ハンドラーは、Lambda 関数で記述したコードを使用してイベントを処理します。

このモデルで重要なのはハンドラーであり、Lambda がコードによって処理されるイベントを送信します。これをコードへのエントリポイントと考えてください。Lambda はイベントを受信すると、このイベントと一部のコンテキスト情報をハンドラーに渡します。次に、ハンドラーはコードを実行してこれらのイベントを処理します。例として、Amazon S3 へのファイルアップロード、画像分析、データベース更新などが挙げられます。コードがイベントの処理を完了すると、ハンドラーは次のイベントを処理する準備が整います。

Lambda 実行モデル

プログラミングモデルは Lambda がコードとやり取りする方法を定義しますが、 実行環境 は Lambda が実際に関数を実行する場所であり、関数専用に作成された安全で分離されたコンピューティングスペースです。各環境は 3 つのフェーズのライフサイクルに従います。

  1. 初期化: Lambda は環境を作成し、関数を実行するためのすべての準備を整えます。これには、選択したランタイムの設定、コードのロード、および記述したスタートアップコードの実行が含まれます。

  2. 呼び出し: イベントが到着すると、Lambda はこの環境を使用して関数を実行します。この環境では、複数のイベントを順次処理することができます。イベントが増えると、Lambda は需要の増加に対応するために追加の環境を作成します。需要の低下に伴い、Lambda は不要になった環境を停止します。

  3. シャットダウン: 最終的に、Lambda は環境をシャットダウンします。それを行う前に、Lambda は関数に残りのタスクをクリーンアップする機会を与えます。

この環境は、関数の実行の重要な側面を担っています。関数にメモリと一時的なストレージ用の /tmp ディレクトリを提供します。呼び出し間のデータベース接続などのリソースが維持されるため、関数はそれらを再利用できます。Lambda がパフォーマンスを向上させるために環境を事前に準備する、プロビジョニングされた同時実行などの機能が提供されます。