バックエンドの AWS Lambda 関数または HTTP エンドポイントにクエリ文字列パラメータを渡すために、Amazon API Gateway REST API が必要です。
簡単な説明
REST API を設定し、クエリ文字列パラメータをバックエンドの AWS Lambda 関数に渡すには、Lambda カスタム統合を使用します。
クエリ文字列パラメータを HTTP エンドポイントに渡すには、HTTP カスタム統合を使用します。
重要: 入力データは、統合リクエストペイロードとして提供する必要があります。ペイロードの提供には、マッピングテンプレートを使用することをおすすめします。詳細については、「API Gateway での REST API パラメータのマッピング例」を参照してください。
解決策
クエリ文字列パラメータをバックエンド Lambda 関数に渡す
次の手順を実行します。
- API Gateway コンソールを開き、使用する API を選択します。
- [リソース] ペインから、設定した HTTP メソッドを選択します。
注: API に複数の HTTP メソッドが設定されている場合は、各メソッドで手順を繰り返してください。
- [メソッドの実行] ペインで [メソッドリクエスト] を選択し、[編集] を選択します。
- [URL クエリ文字列パラメータ] ドロップダウンリストを展開し、[クエリ文字列を追加] を選択します。
- [名前] フィールドに pet と入力します。
- [必須] チェックボックスを選択し、[保存] を選択します。
- **[統合リクエスト]タブを選択し、[編集]**を選択します。
- [マッピングテンプレート] を展開し、[マッピングテンプレートを追加] を選択します。
- [Content-Type] フィールドに application/json を入力します。
- マッピングテンプレートエディタで現在のスクリプトをコピーしておき、次のコードで置き換えます。
{ "pet": "$input.params('pet')"
}
注: 詳細については、「入力変数」を参照してください。
[保存] を選択し、[API をデプロイ] を選択します。
API の新しいエンドポイントをテストするには、次の curl コマンドを実行します。
curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/lambda-non-proxy?pet=dog
重要: curl コマンドには、pet=dog というクエリ文字列パラメータが必要です。
HTTP エンドポイントにクエリ文字列パラメータを渡す
次の手順を実行します。
- API Gateway コンソールを開き、使用する API を選択します。
- [リソース] ペインから、設定した HTTP メソッドを選択します。
注: API に複数の HTTP メソッドが設定されている場合は、各メソッドで手順を繰り返してください。
- [メソッドの実行] ペインで [メソッドリクエスト] を選択し、[編集] を選択します。
- [URL クエリ文字列パラメータ] ドロップダウンリストを展開し、[クエリ文字列を追加] を選択します。
- [名前] フィールドに type と入力し、[保存] を選択します。
- **[統合リクエスト]タブを選択し、[編集]**を選択します。
- [URL クエリ文字列パラメータ] セクションを展開します。
- [名前] フィールドに type と入力します。
- [マッピング元] フィールドに method.request.querystring.type を入力します。
- [保存] を選択し、次に [API をデプロイ] を選択します。
- API の新しいエンドポイントをテストするには、次の curl コマンドを実行します。
curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/http-endpoint?pet=dog
重要: curl コマンドには、pet=dog というクエリ文字列パラメータが必要です。
関連情報
チュートリアル: Lambda プロキシ統合を備えた REST API を作成する
チュートリアル: Lambda 非プロキシ統合を備えた REST API を作成する
チュートリアル: HTTP プロキシ統合を備えた REST API を作成する
チュートリアル: HTTP 非プロキシ統合を備えた REST API を作成する