提问人:Radek 提问时间:10/12/2023 最后编辑:stdunbarRadek 更新时间:10/13/2023 访问量:32
使用函数 URL 触发 Lambda 函数时,用 Java 编写的 AWS Lambda 函数处理程序中的输入参数类型是什么?
What is the input parameter type in an AWS Lambda function handler written in Java when using function URL to trigger the Lambda function?
问:
我想用 Java 编写一个简单的 Lambda 函数处理程序,它将充当一个简单的 API(根据输入事件对象,它将决定调用什么 http 方法 (GET/POST/...) 并准备适当的响应)。 我想利用可以在 Lambda 函数配置中设置的“函数 URL”选项,以便直接(从浏览器或 Postman)调用函数处理程序的终端节点。 问题是我不知道在这种情况下我的 Java 函数处理程序应该接收什么类型的数据。
如果输入参数是 APIGatewayProxyRequestEvent 对象(如果请求是通过 API 网关发送的,或者如果我提供“API 网关 API 代理”事件模板 JSON,则以下代码可以正常工作,该模板在各种 AWS 示例中提供)。
public class LambdaFunctionHandler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
LambdaLogger logger = context.getLogger();
logger.log("aws lambda function invoked");
logger.log("input: " + input.getBody());
logger.log("log: httpMethod = " + input.getHttpMethod()); // RETURNS null !!!!
logger.log("log: path = " + input.getPath()); // RETURNS null !!!!
logger.log("log: queryStringParameters = " + input.getQueryStringParameters());
...
问题是,如果我部署这样的函数处理程序(使用 APIGatewayProxyRequestEvent 对象作为输入参数),然后尝试通过从 Postman 向 lambda 函数的 URL 发送一个简单的请求来触发此函数处理程序,则请求数据最终会转换为 APIGatewayProxyRequestEvent 对象,但它没有正确填充 - httpMethod 或路径都是 null,即使它们在 Postman 中正确设置。 因此,我假设我需要将输入 APIGatewayProxyRequestEvent 参数更改为另一种类型,我只是不知道它应该是哪种类型,到目前为止我还没有找到答案。
我认为从 Postman/curl/browser/...并在 Java 函数处理程序中接收它以及所有请求详细信息(包括 http 方法或路径),所以我必须缺少一些东西(很可能是事件对象的正确输入类型)......
我将不胜感激任何建议。
答: 暂无答案
评论