ローカルでの Lambda 関数の呼び出し - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ローカルでの Lambda 関数の呼び出し

sam local invoke AWS SAM CLI コマンドを使用して関数の論理 ID とイベントファイルを指定することによって、AWS Lambda 関数をローカルに呼び出すことができます。または、sam local invoke はイベントとして stdin も受け入れます。イベントの詳細については、AWS Lambda デベロッパーガイドの「イベント」を参照してください。別の AWS のサービスからのイベントメッセージ形式の詳細については、AWS Lambda デベロッパーガイドの「他のサービスで AWS Lambda を使用する」を参照してください。

注記

sam local invoke コマンドは AWS Command Line Interface (AWS CLI) コマンドの aws lambda invoke に対応します。どちらのコマンドを使用しても Lambda 関数を呼び出すことができます。

sam local invoke コマンドは、呼び出す関数を含むプロジェクトディレクトリで実行する必要があります。

例:

# Invoking function with event file $ sam local invoke "Ratings" -e event.json # Invoking function with event via stdin $ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings" # For more options $ sam local invoke --help

環境変数ファイル

テンプレートで定義されている値をオーバーライドする環境変数をローカルで宣言するには、次の手順を実行します。

  1. オーバーライドする環境変数を含む JSON ファイルを作成します。

  2. --env-vars 引数を使用して、テンプレートで定義されている値をオーバーライドします。

環境変数の宣言

すべてのリソースにグローバルに適用する環境変数を宣言するには、次のような Parameters オブジェクトを指定します。

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

各リソースごとに別々の環境変数を宣言するには、以下のようにリソースごとにオブジェクトを指定します。

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

各リソースのオブジェクトを指定する場合、以下の識別子を使用できます (優先順位の高いものから順にリストされています)。

  1. logical_id

  2. function_id

  3. function_name

  4. フルパス識別子

環境変数を宣言するための前述の両方の方法を単一のファイルで使用できます。その場合、特定のリソースに対して指定した環境変数がグローバル環境変数よりも優先されます。

環境変数を JSON ファイル (env.json など) に保存します。

環境変数の値のオーバーライド

JSON ファイルで定義された環境変数で環境変数をオーバーライドするには、--env-vars 引数を invoke または start-api コマンドで使用します。以下に例を示します。

sam local invoke --env-vars env.json

レイヤー

アプリケーションにレイヤーが含まれている場合、ローカルホスト上のレイヤーの問題をデバッグする方法の詳細については、「レイヤーの使用」を参照してください。

詳細はこちら

関数をローカルで呼び出す実践的な例については、「包括的な AWS SAM ワークショップ」の「モジュール 2 - ローカルで実行する」を参照してください。