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

时间:2018-04-01 18:49:31

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

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

不确定这里出了什么问题,有人可以帮忙吗? enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:2)

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

<强> 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网关

Config

和相同的测试

Testing

正如您所见,POJO适用于Lambda + API网关组合