API Gateway のローカルでの実行 - AWS Serverless Application Model

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

API Gateway のローカルでの実行

HTTP リクエスト/レスポンス機能のテストに使用する Amazon API Gateway のローカルインスタンスを起動するには、sam local start-api AWS SAM CLI コマンドを使用します。この機能にはホットリロードが搭載されているので、関数をすばやく開発して繰り返し実行することができます。

注記

「ホットリロード」とは、変更されたファイルのみを更新し、アプリケーションの状態を維持することです。これに対して、「ライブリロード」では、アプリケーション全体が更新されるので、アプリケーションの状態が失われます。

sam local start-api コマンドを使用する手順については、「sam local start-api を使用する」を参照してください。

デフォルトでは、AWS SAM は AWS Lambda プロキシ統合を使用し、HttpApiApi の両方のリソースタイプをサポートします。HttpApi リソースタイプのプロキシ統合の詳細については、API Gateway デベロッパーガイドの「HTTP API の AWS Lambda プロキシ統合の使用」を参照してください。Api リソースタイプでのプロキシ統合の詳細については、API Gateway デベロッパーガイドの「API Gateway Lambda プロキシの統合について理解する」を参照してください。

例:

$ sam local start-api

AWS SAM は、HttpApi または Api イベントソースが定義されている AWS SAM テンプレート内の関数を自動的に検索します。関数は、定義された HTTP パスにマウントされます。

以下の Api 例では、Ratings 関数が GET リクエストの /ratingsratings.py:handler() をマウントします。

Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.9 Events: Api: Type: Api Properties: Path: /ratings Method: get

以下は、Api レスポンスの例です。

// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }

関数のコードを変更する場合は、sam build コマンドを実行して sam local start-api で変更を検出します。

環境変数ファイル

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

  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 start-api --env-vars env.json

レイヤー

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