

# Lambda を使用したコードの実行
<a name="concepts-how-lambda-runs-code"></a>

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

## Lambda プログラミングモデル
<a name="concepts-progmodel-overview"></a>

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

**標準関数の場合**

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

1. Lambda はランタイムを使用して、コードで使用できる形式でイベントを準備します。

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

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

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

## Lambda 実行モデル
<a name="concepts-exec-env-overview"></a>

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

**各環境はライフサイクルに従います。**

1. **初期化:** 環境セットアップとコードの読み込み

1. **呼び出し:** 関数コードの単一実行

1. **シャットダウン:** 環境クリーンアップ

この環境は、関数の実行の重要な側面を担っています。関数にメモリと一時的なストレージ用の `/tmp` ディレクトリを提供します。