【发布时间】:2016-08-06 12:23:25
【问题描述】:
我找到了新信息。我想我可能为我的 S3 事件源实现了错误的接口。到目前为止,我还无法让它工作或理解应该实现哪个接口(如果有的话)。 RequestHandler 接口需要方法 handleRequest 来返回一个值。有什么建议?
outputType – 如果您计划同步调用 Lambda 函数 (使用 RequestResponse 调用类型),可以返回输出 使用任何受支持的数据类型的函数。例如, 如果您使用 Lambda 函数作为移动应用程序后端,您就是 同步调用它。您的输出数据类型将被序列化 转换成 JSON。
如果您计划异步调用 Lambda 函数(使用 事件调用类型),则 outputType 应为 void。例如,如果 您将 AWS Lambda 与事件源(如 Amazon S3、Amazon Kinesis 和 Amazon SNS,这些事件源调用 Lambda 使用事件调用类型的函数。
我已经创建了一个基本的处理程序,但似乎错过了一个继续暗示我的关键步骤。
以下代码和错误:
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.s3.model.S3Event;
public class Hello implements RequestHandler<S3Event, Object> {
public String handleRequest(S3Event input, Context context) {
return "Hello";
}
}
{ "errorMessage": "解析JSON时出错",
“errorType”:“java.lang.RuntimeException”,“stackTrace”:[],
“原因”: { “errorMessage”:“com.fasterxml.jackson.databind.JsonMappingException:不能 反序列化 com.amazonaws.services.s3.model.S3Event 的实例 START_OBJECT 令牌\n 在源: lambdainternal.util.NativeMemoryAsInputStream@566776ad;线:1, 列:1", "errorType": "java.io.UncheckedIOException", “堆栈跟踪”: [], “原因”: { "errorMessage": "无法从 START_OBJECT 令牌中反序列化 com.amazonaws.services.s3.model.S3Event 的实例\n 来源:lambdainternal.util.NativeMemoryAsInputStream@566776ad;线: 1、列:1", "errorType": "com.fasterxml.jackson.databind.JsonMappingException", “堆栈跟踪”: [ “com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)”, “com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)”, “com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:831)”, “com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeOther(EnumDeserializer.java:137)”, “com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:89)”, “com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:18)”, “com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1441)”, “com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1047)”] } } }
【问题讨论】:
-
我认为您应该返回一个可以序列化为 JSON 对象的值。
"Hello"无效。
标签: java aws-lambda