AWS Lambda
开发人员指南

处理程序输入/输出类型 (Java)

AWS Lambda 在执行 Lambda 函数时会调用该处理程序。第一个参数是处理程序的输入,它可以是事件数据(由事件源发布)或您提供的自定义输入(如字符串或任意自定义数据对象)。

AWS Lambda 支持处理程序使用以下输入/输出类型:

  • 简单 Java 类型(AWS Lambda 支持 String、Integer、Boolean、Map 和 List 类型)

  • POJO (Plain Old Java Object) 类型

  • 流类型(如果不想使用 POJO,或如果 Lambda 的序列化方法不能满足需求,则您可以使用字节流实现。有关更多信息,请参阅 示例:使用流进行处理程序输入/输出 (Java)。)

处理程序输入/输出:String 类型

下面的 Java 类展示了一个名为 myHandler 的使用 String 类型进行输入、输出的处理程序。

package example; import com.amazonaws.services.lambda.runtime.Context; public class Hello { public String myHandler(String name, Context context) { return String.format("Hello %s.", name); } }

您可以为其他简单 Java 类型编写类似的处理程序函数。

注意

当您异步调用 Lambda 函数时,系统将忽略由 Lambda 函数返回的任何值。因此,您可能需要将返回类型设置为 void 以在代码中表明这一点。有关更多信息,请参阅 Invoke

有关测试端到端示例的信息,请参阅 (可选) 创建用 Java 编写的 Lambda 函数

处理程序输入/输出:POJO 类型

下面的 Java 类展示了一个名为 myHandler 的使用 POJO 进行输入、输出的处理程序。

package example; import com.amazonaws.services.lambda.runtime.Context; public class HelloPojo { // Define two classes/POJOs for use with Lambda function. public static class RequestClass { ... } public static class ResponseClass { ... } public static ResponseClass myHandler(RequestClass request, Context context) { String greetingString = String.format("Hello %s, %s.", request.getFirstName(), request.getLastName()); return new ResponseClass(greetingString); } }

AWS Lambda 基于标准 bean 命名约定(请参阅 Java EE 6 教程)进行序列化。您应使用可变 POJO 及公有 getter 和 setter。

注意

您不应依赖序列化框架的任何其他功能,如注释。如果需要自定义序列化行为,您可以借助原始字节流自行实现序列化。

使用 POJO 进行输入、输出时,需要提供 RequestClassResponseClass 类型的实现。有关示例,请参阅示例:使用 POJO 进行处理程序输入/输出 (Java)