AWS LambdaでHTTPメソッドを取得するにはどうすればいいですか?質問する

AWS LambdaでHTTPメソッドを取得するにはどうすればいいですか?質問する

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

おすすめ記事