メニュー
AWS Lambda
開発者ガイド

プログラミングモデル

AWS Lambda でサポートされているいずれかの言語で Lambda 関数のコードを記述します。使用する言語にかかわらず、以下の主要概念が含まれる Lambda関数のコードを記述するには一般的なパターンがあります。

  • ハンドラー – ハンドラーは、ユーザーの Lambda 関数の実行を開始するために AWS Lambda が呼び出す関数です。Lambda 関数を作成する際にハンドラーを識別します。Lambda 関数が呼び出されると、AWS Lambda はハンドラー関数を呼び出してコードの実行を開始します。AWS Lambda はこのハンドラーに、最初のパラメーターとしてイベントデータを渡します。ハンドラーは、その受信イベントデータを処理する必要があり、コード内の他の関数/メソッドを起動できます。

     

  • context オブジェクトおよび実行時の Lambda での動作 — AWS Lambda はまた context オブジェクトを 2 番目のパラメーターとしてハンドラー関数に渡します。この context オブジェクトにより、コードは AWS Lambdaとやり取りできます。たとえば、AWS Lambda が Lambda を終了させるまでの残りの実行時間をコードで確認できます。

     

    さらに、Node.js などの言語では、コールバックを使用する非同期プラットフォームがあります。AWS Lambda では、この context オブジェクトに関する追加のメソッドが提供されています。Lambda 関数を終了させて、オプションとして呼び出し元に値を返すように AWS Lambda に指示するには、これらの context オブジェクトメソッドを使用します。

     

  • ログ記録 – Lambda 関数にログ記録ステートメントを含めることができます。AWS Lambda はこれらのログを CloudWatch Logs に書き込みます。Lambda 関数のコードの記述に使用する言語に応じて、特定の言語ステートメントによってログエントリが生成されます。

     

  • 例外 – Lambda 関数は、その関数の実行結果を AWS Lambda に伝える必要があります。Lambda 関数のコードを記述する言語に応じて、リクエストを正常に終了する方法や、実行中に発生したエラーを AWS Lambda に通知する方法が異なります。関数を同期的に呼び出した場合、AWS Lambda はその結果をクライアントに転送します。

注記

Lambda 関数コードは、ステートレススタイルで記述する必要があり、基になるコンピューティングインフラストラクチャとのアフィニティはありません。コードでは、ローカルファイルシステムへのアクセス、子プロセス、その他類似のアーティファクトはリクエストの有効期限に限定されます。永続的な状態は Amazon S3、Amazon DynamoDB、または別のクラウドストレージサービスに保存する必要があります。関数がステートレスであることを要求すると、AWS Lambda は関数のコピーを必要なだけ呼び出し、受信イベントとリクエストのレートに合わせてスケールできます。これらの関数はリクエストのたびに同じコンピューティングインスタンスで実行されるとは限りません。Lambda 関数の特定のインスタンスが、AWS Lambda で複数回使用される可能性があります。

詳細については、次の言語固有のトピックで説明しています。