【问题标题】:GoLang AWS Lambda Function Missing Body from API Gateway RequestAPI 网关请求中的 GoLang AWS Lambda 函数缺少正文
【发布时间】: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


【解决方案1】:

原问题中的代码是正确的。 handleRequest 的第二个参数是 APIGatewayProxyRequest 类型。在 API Gateway 中,我发送的是普通请求,而不是代理请求。我将我的 API Gateway 路由重新部署为代理请求,并获得了我期望的请求正文。我仍然不确定我的原始请求是否未能发送正文,或者传递给 handleRequest 函数的正常请求的结构是否与代理请求的结构不同,因此 APIGatewayProxyRequest 类型无法解析其正文.

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 2021-11-14
    • 2019-06-10
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    相关资源
    最近更新 更多