Amazon Lambda 的 Java 示例应用程序
本指南的 GitHub 存储库提供了演示如何在 Amazon Lambda 使用 Java 的示例应用程序。每个示例应用程序都包含用于轻松部署和清理的脚本、一个 Amazon CloudFormation 模板和支持资源。
Java 中的 Lambda 应用程序示例
-
blank-java
– 一个 Java 函数,用于显示 Lambda 的 Java 库、日志记录、环境变量、层、Amazon X-Ray 跟踪、单元测试和Amazon开发工具包的使用情况。 -
java-basic
– 具有单元测试和变量日志记录配置的最小 Java 函数。 -
java-events
– 此最小 Java 函数使用 aws-lambda-java-events 库的最新版本(3.0.0 及更高版本)。这些示例不需要Amazon开发工具包作为依赖项。 -
s3-java
– 此 Java 函数可处理来自 Amazon S3 的通知事件,并使用 Java 类库 (JCL) 从上载的图像文件创建缩略图。
使用 blank-java
示例应用程序了解基础知识,或作为您自己的应用程序的起点。该示例会显示 Lambda 的 Java 库、环境变量、Amazon开发工具包和 Amazon X-Ray 开发工具包的使用情况。并使用 Lambda 层将其依赖项与函数代码分开打包,这会在您迭代函数代码时加快部署时间。该项目需要最少的设置,并且可以在不到一分钟的时间内从命令行部署。
其他示例应用程序显示与 Lambda 集成的服务的其他构建配置、处理程序接口和使用案例。此 java-basic
示例显示了一个具有最少依赖关系的函数。您可以在不需要其他库(如Amazon开发工具包)的情况下使用此示例,并使用标准 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-events
示例展示了由 aws-lambda-java-events
库提供的事件类型的使用情况。这些类型表示Amazon服务会发送到您的函数的事件文档。java-events
包含不需要额外依赖项的类型的处理程序。
例 java-events/src/main/java/example/HandlerDynamoDB.java
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord; ... // 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()); } ...
有关更多亮点,请参阅本章中的其他主题。