Java 上的无服务器函数:AWS Lambda 完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java 语言的 Serverless 函数与 AWS Lambda:从构思到部署



Serverless 架构(或无服务器计算)是一种云计算模型,开发者完全无需管理服务器。您只需编写代码,上传到云端,提供商(AWS、Google Cloud、Azure)会自动扩展基础设施。AWS Lambda 是亚马逊在该领域的旗舰服务。在本文中,我们将从零开始,逐步讲解如何使用 AWS Lambda 创建 Java 语言的 serverless 函数,直至生产就绪的示例。



什么是 AWS Lambda,为什么选择 Java?



AWS Lambda 允许您响应事件(HTTP 请求、S3 文件上传、DynamoDB 变更等)执行代码,而无需预置虚拟机。您只需为实际执行时间和请求次数付费。



Java 是一种成熟、静态类型的语言,拥有庞大的库生态系统(Spring、Micronaut、Quarkus)。然而,Java 在 serverless 场景下有其特点:冷启动(JVM 加载时间)可能比 Node.js 或 Python 更长。但现代框架(例如 Quarkus 或 Spring Cloud Function)以及使用 GraalVM Native Image 解决了这个问题,使 Java 成为具有竞争力的选择。



开发环境配置



要使用 Java 开发 AWS Lambda,您需要:

  • JDK 11 或 17(推荐 17 以获得更佳性能)。
  • Maven 或 Gradle(我们使用 Maven)。
  • AWS 账户和已安装的 AWS CLI。
  • IDE(IntelliJ IDEA、Eclipse、VS Code)。


创建一个基本的 Maven 项目。在 pom.xml 中添加 AWS Lambda Java Core 依赖:



<dependency>    <groupId>com.amazonaws</groupId>    <artifactId>aws-lambda-java-core</artifactId>    <version>1.2.3</version></dependency>


同时添加构建插件:



<plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-shade-plugin</artifactId>    <version>3.5.0</version>    <executions>        <execution>            <phase>package</phase>            <goals><goal>shade</goal></goals>        </execution>    </executions></plugin>


创建第一个 Java Lambda 函数



创建 HelloLambda.java 类:



import com.amazonaws.services.lambda.runtime.Context;import com.amazonaws.services.lambda.runtime.RequestHandler;

public class HelloLambda implements RequestHandler<String, String> {

@Override public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello, " + input + "! 您的 Java Lambda 函数已执行。"; }}


说明:

  • RequestHandler<String, String> — 接口,第一个类型是输入数据,第二个是返回类型。
  • Context — 提供运行时环境信息的对象(日志记录器、时间、函数名称)。


构建项目:mvn clean package。在 target 文件夹中会生成一个 JAR 文件(例如 lambda-java-1.0-SNAPSHOT.jar)。



将函数部署到 AWS Lambda



可以通过 AWS Console 或 CLI 进行部署。我们使用 CLI(最快的方式):



aws lambda create-function \    --function-name HelloJavaLambda \    --runtime java17 \    --role arn:aws:iam::YOUR_ACCOUNT_ID:role/lambda-basic-execution \    --handler HelloLambda::handleRequest \    --zip-file fileb://target/lambda-java-1.0-SNAPSHOT.jar


重要参数:

博客

书籍推荐