AWS Lambda コードで、AWS Gateway API からの HTTP リクエストの HTTP メソッド (GET、POST など) を取得するにはどうすればよいですか?
私は理解していますドキュメンテーションそれコンテキスト.httpメソッドそれがその解決策です。
しかし、それをうまく機能させることができません。
たとえば、次の 3 行を追加しようとすると:
if (context.httpMethod) {
console.log('HTTP method:', context.httpMethod)
}
次のように、「microservice-http-endpoint」ブループリントの AWS サンプル コードに追加します。
exports.handler = function(event, context) {
if (context.httpMethod) {
console.log('HTTP method:', context.httpMethod)
}
console.log('Received event:', JSON.stringify(event, null, 2));
// For clarity, I have removed the remaining part of the sample
// provided by AWS, which works well, for instance when triggered
// with Postman through the API Gateway as an intermediary.
};
ログに何も残らないのはhttpMethodは常に空です。
ベストアンサー1
このcontext.httpMethod
アプローチはテンプレートでのみ機能します。したがって、Lambda関数でHTTPメソッドにアクセスしたい場合は、APIゲートウェイでメソッド(GETなど)を見つける必要があります。統合リクエストセクションをクリックしてマッピングテンプレートを選択し、 の新しいマッピングテンプレートを追加しますapplication/json
。次に を選択application/json
し、マッピングテンプレート編集ボックスに次のような内容を入力します。
{
"http_method": "$context.httpMethod"
}
次に、Lambda 関数が呼び出されると、関数を呼び出すために使用された HTTP メソッドを含む、event
渡された新しい属性が表示されます。http_method