AWS Lambda函数Direct Post Payload总是Null



我试图使用Lambda函数(c#)与函数URL直接访问。在邮差我发送一个基本的json体匹配类属性在我的输入参数(PostBody)。当我执行POST请求时,值总是空的。输入应该是期望类之外的其他东西吗?

public string FunctionHandler(PostBody input, ILambdaContext context)
{
LambdaLogger.Log(JsonSerializer.Serialize(input));
return "Reached Here";
}

我刚熬过来。当我使用AWS控制台测试AWS Lambda时,传入FunctionHandler的第一个参数是基于JSON有效负载的预期类。

然而,当我通过HTTP POST调用Lambda时,传入FunctionHandler的第一个参数是一个对象,如果对其执行. tostring(),并将其作为响应从Lambda传递回来以查看它,则显示为一个大的JSON值,其中最外层的键包括"header ", "requestContext"one_answers"body"。我发现在HTTP POST中传递的JSON数据是"body"中的子键和值。我发现我需要解析这个数据("body"中的数据)来获得我要发送的输入数据。编写完这些代码后,Lambda在通过HTTP POST调用时正常工作(在通过AWS控制台测试时失败)。

输入必须是别的东西。当您的请求由lambda处理时,它在传递给函数处理程序之前被映射到一个事件对象。更多详细信息,请参阅此处的文档。

在您的示例中,您可以将输入类型更改为APIGatewayHttpApiV2ProxyRequest。此外,还可以设置环境变量LAMBDA_NET_SERIALIZER_DEBUG在lambda中设置为true,以便在日志中查看更多细节。

最新更新