バックエンド 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 があることを確認してください。