gpt4 book ai didi

java - 调用 AWS Lambda Java 函数的 AWS 网关收到空正文

转载 作者:行者123 更新时间:2023-12-02 02:50:12 29 4
gpt4 key购买 nike

我正在使用 aws-lambda-java-events 库实现一个用 java 编码的 aws lambda 函数。出于故障排除目的,我现在只是尝试使用相同的请求正文进行响应

public class LambdaFunctionHandler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
@Override
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input, Context context) {
return new APIGatewayProxyResponseEvent().withBody(input.getBody());
}
}

我已经定义了上面的 lambda 函数和一个 api 网关,但是我得到的 input.getBody 为 null。 lambda函数的输出是一个空的json对象

{}

我通过 AWS lambda 测试控制台对此进行了测试。执行成功,输出如上。api 网关集成请求配置为在 POST 方法上调用上述 lambda 函数。

下面是我的查询

  1. 如何获取 aws 测试事件 json 作为 APIGatewayProxyRequestEvent getBody() 字符串的一部分?
  2. 如何在 APIGatewayProxyRequestEvent getBody() 字符串变量中获取传递给 API 网关 POST 方法的请求主体?我需要定义映射模板吗?如果是这样,它应该是什么样子(我尝试了多次但没有成功)

我想通过POSTMAN传递给API网关POST方法的请求体是

{
"question":"Hello, how are you doing?"
}

谢谢!

最佳答案

我也试过。我使用的代码是

public class LambdaFunctionHandler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {

public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent,
Context context) {
return new APIGatewayProxyResponseEvent().withBody(apiGatewayProxyRequestEvent.getBody());
}
}

我猜您是直接从 AWS 控制台进行测试。您不能直接测试事件触发的 lambda。

您必须使用“Amazon API Gateway Proxy”事件创建测试,如下所示。

enter image description here

并将请求主体作为参数的一部分传递。

enter image description here

有了这些输入,我得到了预期的输出。

enter image description here

关于java - 调用 AWS Lambda Java 函数的 AWS 网关收到空正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62150088/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com