翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用して Lambda 関数をローカルに呼び出す AWS SAM
クラウドでのテストまたはデプロイの前に Lambda 関数をローカルで呼び出すことには、まざまな利点があります。これにより、関数のロジックをより迅速にテストできます。最初にローカルでテストすることで、クラウドでのテスト時やデプロイ時に問題が見つかる可能性を低くでき、不要なコストを回避するのにも役立ちます。さらに、ローカルでテストすることでデバッグが楽になります。
Lambda 関数は、sam local invoke コマンドを使用して関数の論理 ID とイベントファイルを指定することによってローカルで呼び出せます。また、sam local invoke は stdin
をイベントとして受け取ります。イベントの詳細については、AWS Lambda デベロッパーガイドの「イベント」を参照してください。さまざまな AWS サービスのイベントメッセージ形式の詳細については、 AWS Lambda デベロッパーガイドの「他の のサービス AWS Lambda で使用する」を参照してください。
注記
sam local invoke コマンドは AWS Command Line Interface (AWS CLI) コマンド に対応しますaws lambda invoke
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
環境変数ファイル
テンプレートで定義されている値をオーバーライドする環境変数をローカルで宣言するには、次の手順を実行します。
-
上書きする環境変数を含むJSONファイルを作成します。
-
--env-vars
引数を使用して、テンプレートで定義されている値をオーバーライドします。
環境変数の宣言
すべてのリソースにグローバルに適用する環境変数を宣言するには、次のような Parameters
オブジェクトを指定します。
{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }
各リソースごとに別々の環境変数を宣言するには、以下のようにリソースごとにオブジェクトを指定します。
{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }
各リソースのオブジェクトを指定する場合、以下の識別子を使用できます (優先順位の高いものから順にリストされています)。
-
logical_id
-
function_id
-
function_name
-
フルパス識別子
環境変数を宣言するための前述の両方の方法を単一のファイルで使用できます。その場合、特定のリソースに対して指定した環境変数がグローバル環境変数よりも優先されます。
環境変数を などのJSONファイルに保存しますenv.json
。
環境変数の値のオーバーライド
JSON ファイルで定義されている環境変数を上書きするには、 invoke または start-api コマンドで --env-vars
引数を使用します。以下に例を示します。
sam local invoke --env-vars env.json
レイヤー
アプリケーションにレイヤーが含まれている場合、ローカルホスト上のレイヤーの問題をデバッグする方法の詳細については、「AWS SAM で Lambda レイヤーを使用して効率を向上させる」を参照してください。
詳細
関数をローカルで呼び出す実践的な例については、 AWS SAM 「」の「モジュール 2 - ローカルで実行する