AWS Lambda 的 Java 示例应用程序 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 的 Java 示例应用程序

本指南的 GitHub 存储库提供了演示如何在 AWS Lambda 使用 Java 的示例应用程序。每个示例应用程序都包含用于轻松部署和清理的脚本、一个 AWS CloudFormation 模板和支持资源。

Java 中的示例 Lambda 应用程序

  • blank-java – 一个 Java 函数,用于显示 Lambda 的 Java 库、日志记录、环境变量、层、AWS X-Ray 跟踪、单元测试和 AWS 开发工具包的使用情况。

  • java-basic – 具有单元测试和可变日志记录配置的最小 Java 函数。

  • java-events – 一个最小的 Java 函数,它将 aws-lambda-java-events 库与不需要 AWS 开发工具包作为依赖项的事件类型(例如 Amazon API Gateway)结合使用。

  • java-events-v1sdk – 一个 Java 函数,它将 aws-lambda-java-events 库与需要 AWS 开发工具包作为依赖项的事件类型(Amazon Simple Storage Service、Amazon DynamoDB 和 Amazon Kinesis)结合使用。

  • s3-java – 一个 Java 函数,它处理来自 Amazon S3 的通知事件,并使用 Java 类库 (JCL) 从上传的图像文件创建缩略图。

使用 blank-java 示例应用程序了解基础知识,或作为您自己的应用程序的起点。它显示 Lambda 的 Java 库、环境变量、AWS 开发工具包和 AWS X-Ray 开发工具包的使用情况。它使用一个 Lambda 层将其依赖项与函数代码分开打包,这会在您迭代函数代码时加快部署时间。该项目需要最少的设置,并且可以在不到一分钟的时间内从命令行部署。


          Blank sample application for Java.

其他示例应用程序显示与 Lambda 集成的服务的其他构建配置、处理程序接口和使用案例。此 java-basic 示例显示了一个具有最少依赖关系的函数。您可以在不需要其他库(如 AWS 开发工具包)的情况下使用此示例,并使用标准 Java 类型表示函数的输入和输出。要尝试不同的处理程序类型,只需更改函数的处理程序设置。

java-basic/src/main/java/example/HandlerStream.java – 流处理程序

// Handler value: example.HandlerStream public class HandlerStream implements RequestStreamHandler { Gson gson = new GsonBuilder().setPrettyPrinting().create(); @Override public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { LambdaLogger logger = context.getLogger(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("US-ASCII"))); PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream, Charset.forName("US-ASCII")))); try { HashMap event = gson.fromJson(reader, HashMap.class); logger.log("STREAM TYPE: " + inputStream.getClass().toString()); logger.log("EVENT TYPE: " + event.getClass().toString()); writer.write(gson.toJson(event)); ...

java-eventsjava-events-v1sdk 示例显示由 aws-lambda-java-events 库提供的事件类型的使用情况。这些类型表示 AWS 服务发送到您的函数的事件文档。 java-events 包含不需要额外依赖项的类型的处理程序。对于类似于 DynamodbEvent 的需要 AWS SDK for Java 中的类型的事件类型,java-events-v1sdk 在其构建配置中包括此开发工具包。

java-events-v1sdk/src/main/java/example/HandlerDynamoDB.java – DynamoDB 记录

import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord; import com.amazonaws.services.dynamodbv2.model.Record; ... // Handler value: example.HandlerDynamoDB public class HandlerDynamoDB implements RequestHandler<DynamodbEvent, String>{ private static final Logger logger = LoggerFactory.getLogger(HandlerDynamoDB.class); Gson gson = new GsonBuilder().setPrettyPrinting().create(); @Override public String handleRequest(DynamodbEvent event, Context context) { String response = new String("200 OK"); for (DynamodbStreamRecord record : event.getRecords()){ logger.info(record.getEventID()); logger.info(record.getEventName()); logger.info(record.getDynamodb().toString()); } ...

有关更多亮点,请参阅本章中的其他主题。