使用 AWS API 网关 + lambda 函数 + RequestHandler

Jie*_*ang 5 java rest json aws-lambda aws-api-gateway

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

不知道这里出了什么问题,有人可以帮忙吗? 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

Tar*_*ani 5

So I create a sample app

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

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() {
    }

}
Run Code Online (Sandbox Code Playgroud)

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() {
    }
}
Run Code Online (Sandbox Code Playgroud)

After uploading the same to AWS, I created a API Gateway for the same

配置

And the tests on the same

测试

As you can see POJO works in Lambda + API Gateway combination