我对Java/AWS等技术都很新,发现AWS lambda无法反序列化我认为很简单的示例。
API Gateway日志将JSON发送到我的lambda函数中:
请求test-request的执行日志 2017年9月11日18:04:06 UTC:开始执行请求:test-invoke-request 2017年9月11日18:04:06 UTC:HTTP方法:POST,资源路径:/ 2017年9月11日18:04:06 UTC:方法请求路径:{} 2017年9月11日18:04:06 UTC:方法请求查询字符串:{} 2017年9月11日18:04:06 UTC:方法请求标头:{Content-Type=application/json} 2017年9月11日18:04:06 UTC:转换前的方法请求主体:{"input":"richard was here"} 2017年9月11日18:04:06 UTC:端点请求URI:https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:003374398906:function:uppertolowercase/invocations 2017年9月11日18:04:06 UTC:端点请求标头:{x-amzn-lambda-integration-tag=test-request, Authorization=****************************************************************************************************************************************************************************************************************************************************************************************************************************************8acc24, X-Amz-Date=20170911T180406Z, x-amzn-apigateway-api-id=8fjgcr51va, X-Amz-Source-Arn=arn:aws:execute-api:us-west-2:003374398906:8fjgcr51va/null/POST/, Accept=application/json, User-Agent=AmazonAPIGateway_8fjgcr51va, X-Amz-Security-Token=xxxxxxx//////////wEaDM3BrDjbuGSwMFT5lCK3AyBVM7duW9tzEe/bcWqWiYNIxkpMjTdDZaW3U32asJ4qvntUsRpjfSIhLWAds74XhzHbI7GzXMuV3zQYCIiYRX0ZL1s524J7mETGFN4OredlGln7CCEs3WR417UaPB4XLh6E0v71Srpg4a1kG7KB6426gN9CvXR0mmYbwpl9qtp9bovLgIoVnjYbx5j7qd7Fa3U4wQOqcHonlKtN/uDXMFW+vfHOJyu3gQUyvoVpMuXrQSF/gptEXG+l0v4+v1exq67sp8G5d8h1kAQTNQep8Q19kyOi9hWbNDyU7FzXWvfSRX7f9n6NGIuZ6LYIF3g2kPFY [TRUNCATED] 2017年9月11日18:04:06 UTC:转换后的端点请求主体:{"input":"richard was here"} 2017年9月11日18:04:06 UTC:发送请求到https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:003374398906:function:uppertolowercase/invocations 2017年9月11日18:04:06 UTC:接收响应。集成延迟:73毫秒 2017年9月11日18:04:06 UTC:转换前的端点响应主体:{"errorMessage":"java.util.LinkedHashMap cannot be cast to com.morethanheroic.uppercase.domain.UppercaseRequest","errorType":"java.lang.ClassCastException","stackTrace":["com.morethanheroic.uppercase.UppercaseFunction.apply(UppercaseFunction.java:13)","org.springframework.cloud.function.support.FluxFunction.lambda$apply$0(FluxFunction.java:42)","reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:107)","reactor.core 我正在使用这个JSON提供数据,以便反序列化到以下的POJO中。 {"input":"richard was here"}
public class UppercaseRequest {
private String input;
public String getInput() {
return input;
}
public void setInput(final String input) {
this.input = input;
}
}
以下是处理程序:
public class UppercaseFunctionHandler extends SpringBootRequestHandler<UppercaseRequest, UppercaseResponse> {
}
注意:这段内容来自https://github.com/laxika/spring-cloud-function-aws-example示例项目。
虽然示例中没有记录,但我使用的Lambda入口点是:
com.morethanheroic.uppercase.handler.aws.UppercaseFunctionHandler::handleRequest