在本地启动 API 时未设置 AWS SAM APIGatewayProxyRequestEvent HttpMethod

AWS SAM APIGatewayProxyRequestEvent HttpMethod not set when starting API locally

我创建了一个带有 AWS::SERVERLESS::FUNCTION 的应用程序,它附加了一个 HttpApi 事件。我认为为每个资源创建一个 lambda 是个好主意,例如Post,/customer 上的 Get 和 Put 都由一个 lambda 处理,它决定使用

采取哪个动作
switch (input.getHttpMethod()) {
    case "GET": ...
    case "POST: ...
}

现在我的问题来了:当使用 sam local start-api 启动应用程序时,我的 lambda 被正确调用,但 input.getHttpMethod()input.getRequestContext().getHttpMethod() 都没有设置。

鉴于 SAM 支持多个 HttpApi 事件,当 运行 应用程序在本地时无法提供 http 方法几乎完全缓解了本地开发。我做错了什么,还是这真的不起作用?我正在使用 Java 顺便说一句,我不知道这个问题是否也存在于其他语言中。

以防万一: 我的“每个资源一个 lambda”方法是否错误,每个动作都应该有自己的 lambda 吗?

我发现了问题。 HttpApi 默认使用“PayloadFormatVersion: 2.0”。 inputcom.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent 类型,但这代表格式 1.0,我必须使用 com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent 才能让它工作。 这无声地失败了,因为实例只是从 json 输入构建的,并且 类.

中的几个字段是相同的