【发布时间】:2023-04-06 00:30:01
【问题描述】:
我正在使用 AWS Lambda 函数来处理来自 AWS API Gateway 调用的请求。我正在根据请求发送有效负载,并且可以在 CloudWatch 中验证有效负载是否从网关传递到 lambda 函数。但是,请求的正文在我的 Lambda 函数中为空。
我看了这个问题:AWS Lambda Go function not getting request body when called via API GW
我正在尝试使用以下库复制答案:https://github.com/aws/aws-lambda-go/blob/master/events/apigw.go,但我仍然无法获取请求正文。
这是我的 Lambda 代码:
package main
import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
fmt.Println("Body")
fmt.Println(request.Body)
fmt.Printf("Processing request data for request %s.\n", request.RequestContext.RequestID)
fmt.Printf("Processing request data for request %s.\n", request.RequestContext.RequestID)
fmt.Printf("Body size = %d.\n", len(request.Body))
fmt.Println("Headers:")
for key, value := range request.Headers {
fmt.Printf(" %s: %s\n", key, value)
}
return events.APIGatewayProxyResponse{Body: request.Body, StatusCode: 200}, nil
}
func main() {
lambda.Start(handleRequest)
}
我希望在 Cloudwatch 中的“Body”之后看到一些数据,但什么也没有。
【问题讨论】:
-
我猜您已经将该 lambda 映射到您的 APIGateway 中的 GET http 调用,并且它们从来没有正文。尝试打印 request.Path 例如。
-
@JonnyRimek,这是我的 API 网关中的 POST 调用。在 Cloudwatch 中,日志显示:转换后的端点请求正文:{“my”:“body data”}。然后他们说:发送请求到lambda.us-east-1.amazonaws.com/my-lamba-path,所以我很确定请求正文正在发送到 Lambda?
-
看到我的问题被否决而没有评论有点令人沮丧。如果问题有问题,请在 cmets 中告诉我。
-
我没有看到明显的错误。 gitlab.com/jrimek/tnp/api/blob/master/handler/create-category/… 这是一个接收 POST 请求并将项目写入 DynamoDB 的 lambda,也许你看到了可以帮助你的东西
标签: go aws-lambda aws-api-gateway