1

我的架构:

  • 具有反向代理集成的 AWS HTTP API
  • 普通 Lambda 函数
  • 邮递员或浏览器

我正在尝试根据他们推荐的这个答案检查请求方法以处理操作

'use strict';

const AWS = require('aws-sdk');
const dynamo = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event) => {

    switch (event.httpMethod) {
        case 'GET':
            break;
        default:
            throw new Error(`@@@@ Unsupported method "${event.httpMethod}"`);
    }
    return {
        statusCode: 200,
        body: JSON.stringify({message: 'Success'})
    };
};

我将该代码粘贴到我的 lambda 中,但它不起作用,我在日志中收到此错误:

"errorMessage": "@@@@ Unsupported method \"undefined\"",

该 lambda 由我的 HTTP API 触发,并且路由具有 GET 方法。

如果我返回事件,我可以看到方法是 GET 或 POST,或者其他,看:

在此处输入图像描述

有人知道发生了什么吗?

4

1 回答 1

3

HTTP api (v2) 的输入对象架构不同于 REST api(来自您的链接)。

对于 Http api,方法可以从event.requestContext.http.method

所以,它看起来像这样。

exports.handler = async (event) => {
    console.log('event',event);
    switch (event.requestContext.http.method) {
        case 'GET':
            console.log('This is a GET Method');
            break;
        default:
            throw new Error(`@@@@ Unsupported method "${event.httpMethod}"`);
    }
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
于 2021-01-23T03:19:36.277 回答