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

所要時間2分
0

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

簡単な説明

クエリ文字列パラメータをバックエンド AWS 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')"
}

: 詳細については、$input 変数を参照してください。

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 クエリ文字列パラメータ) セクションを展開します。

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

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 があることを確認してください。


関連情報

チュートリアル: Lambda プロキシ統合を使用した Hello World REST API の構築

チュートリアル: Lambda 非プロキシ統合を使用した API Gateway REST API の構築

チュートリアル: HTTP プロキシ統合を使用した REST API の構築

チュートリアル: HTTP 非プロキシ統合を使用した REST API の構築

コメントはありません

関連するコンテンツ