Dom*_*nic 2 sam aws-lambda aws-http-api
我使用 a 创建了一个应用程序AWS::SERVERLESS::FUNCTION,其中附加了一个 HttpApi 事件。我认为为每个资源创建一个 lambda 是一个好主意,因此例如 Post、Get 和 Put on /customer 都由单个 lambda 处理,该 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”。input类型为com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent,但这代表格式 1.0,我必须使用com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent它才能工作。这会默默地失败,因为实例只是根据 json 输入构造的,并且两个类中的几个字段是相同的。
| 归档时间: | 
 | 
| 查看次数: | 675 次 | 
| 最近记录: |