バックエンド Lambda 関数または HTTP エンドポイントにクエリ文字列パラメータを渡すように API ゲートウェイ REST API を設定するにはどうすればよいですか?

最終更新日: 2021 年 1 月 6 日

Amazon API Gateway の REST API からバックエンドの AWS Lambda 関数と HTTP エンドポイントにクエリ文字列パラメータを渡す必要があります。その方法を教えてください。

簡単な説明

クエリ文字列パラメータをバックエンド Lambda 関数に渡すように REST API を設定するには、Lambda カスタム統合を使用します。

クエリ文字列パラメータを HTTP エンドポイントに渡すには、HTTP カスタム統合を使用します。

重要: 入力データが統合リクエストペイロードとして提供されていることを確認してください。ベストプラクティスとして、マッピングテンプレートを使用してペイロードを提供することが推奨されます。詳細については、「メソッドリクエストデータを統合リクエストパラメータにマッピングする」を参照してください。

解決方法

クエリ文字列パラメータをバックエンド Lambda 関数に渡す

1.    API Gateway コンソールを開き、API を選択します。

2.    [Resources] (リソース) ペインで、構成済みの HTTP メソッドを選択します。

注: API 用に複数の HTTP メソッドが構成されている場合は、各メソッドについて手順 2 ~ 15 を繰り返します。

3.    [Method Execution] (メソッドの実行) ペインで、[Method Request] (メソッドリクエスト) を選択します。

4.    [URL Query String Parameters] (URL クエリ文字列パラメータ) ドロップダウンを展開し、[Add query string] (クエリ文字列を追加) を選択します。

5.    [Name] (名前) フィールドに「pet」と入力し、チェックマークアイコンを選択します。

6.    [Required] (必須) チェックボックスを選択します。

7.    [Method Execution] (メソッド実行) ペインを選択します。

8.    [Integration Request] (統合リクエスト) を選択します。

9.    [Mapping Templates] (マッピングテンプレート) ドロップダウンを選択し、[Add mapping template] (マッピングテンプレートを追加) を選択します。

10.    [Content-Type] (コンテンツタイプ) フィールドに「application/json」と入力し、チェックマークアイコンを選択します。

11.    表示されるポップアップで、[Yes, secure this integration] (はい、この統合を保護します) を選択します。

12.    [Request body passthrough] (リクエストボディのパススルー) で、[When there are no templates defined (recommended)] (テンプレートが定義されていない場合 (推奨)) を選択します。

13.    マッピングテンプレートエディタで、既存のスクリプトを次のコードに置き換えます。

{
     "pet": "$input.params('pet')"
}

注: 詳細については、API Gateway のマッピングテンプレートとアクセスログ変数のリファレンスを参照してください。

14.    [Save] (保存) を選択し、[Deploy the API] (API をデプロイ) を選択します。

15.    API の新しいエンドポイントをテストするには、次の curl コマンドを実行します。

curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/lambda-non-proxy?pet=dog

重要: curl コマンドにクエリ文字列パラメータ pet=dog があることを確認してください。

クエリ文字列パラメータを HTTP エンドポイントに渡す

1.    API Gateway コンソールを開き、API を選択します。

2.    [Resources] (リソース) ペインで、構成済みの HTTP メソッドを選択します。

注: API に対して複数の HTTP メソッドが構成されている場合は、各メソッドについて手順 2 ~ 10 を繰り返します。

3.    [Method Execution] (メソッドの実行) ペインで、[Method Request] (メソッドリクエスト) を選択します。

4.    [URL Query String Parameters] (URL クエリ文字列パラメータ) ドロップダウンを展開し、[Add query string] (クエリ文字列を追加) を選択します。

5.    [Name] (名前) フィールドに「type」と入力し、チェックマークアイコンを選択します。

6.    [Method Execution] (メソッド実行) ペインを選択します。

7.    [Integration Request] (統合リクエスト) を選択します。

8.    [URL Query String Parameters] (URL クエリ文字列パラメータ) セクションを展開します。

注: デフォルトでは、メソッドリクエストクエリ文字列パラメータは、同じ名前の統合リクエストクエリ文字列パラメータにマップされます。メソッドリクエストパラメータを別の統合リクエストパラメータにマップするには、既存の統合リクエストパラメータを削除します。次に、目的のメソッドリクエストパラメータマッピング式を使用して、新しいクエリ文字列を追加します。

9.    [Save] (保存) を選択し、[Deploy the API] (API をデプロイ) を選択します。

10.    API の新しいエンドポイントをテストするには、次の curl コマンドを実行します。

curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/http-endpoint?pet=dog

重要: curl コマンドにクエリ文字列パラメータ pet=dog があることを確認してください。