【问题标题】:Use AWS API gateway + lambda function + RequestHandler使用 AWS API 网关 + lambda 函数 + RequestHandler
【发布时间】:2018-09-11 02:14:28
【问题描述】:

如果我使用 AWS API 网关并将集成类型设置为 lambda 函数,在 lambda 函数的 Java 实现中,是否可以覆盖 RequestHandler(而不是 RequestStreamHandler)?这样我的 lambda 函数的输入将是我在 Java 代码中定义的 POJO,它的输出将是另一个 POJO,客户端应该只需要发送该请求 POJO 的 JSON 序列化并接收响应 POJO 的 JSON 序列化。我试过这样做,但无论我的客户发送什么,它都会收到一个空的 200 响应。

不知道这里出了什么问题,有人可以帮忙吗?

【问题讨论】:

  • 我认为这个示例不适用于 API 网关
  • 您是否已经尝试过或者您认为它不会起作用?
  • 我已经通过 API 网关确认它可以工作。您如何测试 API 调用?

标签: java json rest aws-lambda aws-api-gateway


【解决方案1】:

所以我创建了一个示例应用程序

LambdaFunctionHandler.java

package com.amazonaws.lambda.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class LambdaFunctionHandler implements RequestHandler<RequestClass, ResponseClass> {

    public ResponseClass handleRequest(RequestClass input, Context context) {
        context.getLogger().log("Input: " + input);

        // TODO: implement your handler
        ResponseClass myVal = new ResponseClass();
        myVal.setGreetings("Hello from POJO - " + input.getName() );
        return myVal;
    }

}

ResponseClass.java

package com.amazonaws.lambda.demo;

public class ResponseClass {
    String greetings;

    public String getGreetings() {
        return greetings;
    }

    public void setGreetings(String greetings) {
        this.greetings = greetings;
    }

    public ResponseClass(String greetings) {
        this.greetings = greetings;
    }

    public ResponseClass() {
    }

}

RequestClass.java

package com.amazonaws.lambda.demo;

public class RequestClass {
    String name;

    public String getName() {
        return name;
    }

    public void setName(String firstName) {
        this.name = firstName;
    }

    public RequestClass(String name) {
        this.name = name;
    }

    public RequestClass() {
    }
}

将其上传到 AWS 后,我为它创建了一个 API 网关

同样的测试

如您所见,POJO 在 Lambda + API Gateway 组合中工作

【讨论】:

  • 谢谢!我们是否需要为任何方法请求/集成请求/集成响应/方法响应定义模板/模式/模型才能使其工作?
  • 我只使用了我的回答中提到的内容
  • 您可能想看的一件事,我使用 eclipse aws 插件创建了这个新项目。因此,您可以使用它来确保没有您丢失的样板配置/代码
  • 我知道出了什么问题...... POJO 中的字段需要 getter 和 setter 才能工作......我认为它可以使用反射或其他东西......感谢您的帮助
  • 太好了,您从未发布过您的请求和响应类,而且我还假设 getter 和 setter 会在那里。我们俩都吸取了教训:-)
猜你喜欢
  • 1970-01-01
  • 2019-05-02
  • 2019-06-05
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 2022-07-10
  • 2019-05-10
  • 2020-10-07
相关资源
最近更新 更多