API Gateway のローカルでの実行 - AWS サーバーレスアプリケーションモデル

API Gateway のローカルでの実行

HTTP リクエスト/応答機能のテストに使用する API Gateway のローカルインスタンスを起動するには、sam local start-api コマンドを使用します。この機能はホットリロード機能を備えており、関数をすばやく開発して反復処理できます。

注記

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

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

例:

sam local start-api

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

このアニメーションは、Microsoft Visual Studio Code を使用した API Gateway のローカルでの実行を示しています。

次の例では、Ratings 関数は GET リクエストに対して ratings.py:handler()/ratings にマウントします。

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

デフォルトでは、AWS SAM は Proxy との統合を使用して、Lambda 関数からのレスポンスに statusCodeheadersbody のいずれかが含まれるようにします。

次に例を示します。

// 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" }); }

他の AWS Lambda 言語の例については、「プロキシ統合」を参照してください。

環境変数ファイル

--env-vars 引数を invoke コマンド start-api またはコマンドと共に使用して、関数テンプレートですでに定義されている環境変数を上書きする値を含む JSON ファイルを提供できます。次のようにファイルを構成します。

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

たとえば、このコンテンツを env.json という名前のファイルに保存した場合、次のコマンドはこのファイルを使用して、含まれる環境変数を上書きします。

sam local start-api --env-vars env.json

Layer

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