您是Java开发人员,希望在项目中使用AWS Lambda吗?虽然JavaScript是用于编写Lambda功能的最常见语言,但也可以使用Java创建和调用这些无服务器功能。在本文中,我将提供一个分步指南,用于设置Java和Maven,以将AWS SDK用于Lambda。在本教程结束时,您将对如何使用Java与AWS Lambda合作并将无服务器计算合并到基于Java的项目中。
要设置Java和Maven来使用AWS SDK作为lambda,您将需要 :
- 如果您尚未安装它,请安装Java开发套件(JDK)。您可以从Oracle网站下载JDK:JAVA SDK 尝试使用LTS版本,即最新的JDK 17,但理想情况下可以运行此示例1.8以后的任何Java SDK。
- 如果您尚未安装Maven,则安装Maven。您可以在Apache Maven网站上找到用于安装Maven的说明:Maven
- 安装了JDK和Maven后,在您喜欢的开发环境中创建一个新的Maven项目。 通过在pom.xml文件中包含以下代码:
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.871</version>
</dependency>
</dependencies>
这是一个简单的Java程序的示例,您可以在AWS lambda上运行该程序
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class HelloWorld implements RequestHandler<Object, String> {
public String handleRequest(Object input, Context context) {
return "Hello, World!";
}
}
此程序实现了请求Handler接口,这是您需要实现的主要接口来创建AWS lambda可以调用的函数。 HandleRequest方法是函数处理程序,该方法将输入对象和上下文对象作为参数并返回字符串。
要在AWS lambda上运行此程序,您需要将其与任何依赖项一起包装到.zip文件中,然后使用我上一条消息中描述的步骤将其上传到AWS Lambda。包含功能处理程序方法的类完全合格的名称为Helloworld。
要为AWS lambda设置Java程序,请按照以下步骤 :
- 在AWS管理控制台中创建新的AWS lambda功能。
- 选择“ Java”作为您功能的运行时。
- 在“函数代码”下,选择“上传.zip文件”作为代码输入类型,然后上传包含Java代码和任何依赖项的.zip文件。
- 在“处理程序”字段中,指定包含功能处理程序方法的类的完全限定名称。函数处理程序是当调用Lambda函数时将调用的方法。
- 配置函数的执行角色以及任何其他所需的设置,例如函数的内存和超时设置。
- 保存您的功能并使用AWS管理控制台中的“测试”按钮进行测试。 就是这样!现在,应该设置您的Java程序并准备在AWS Lambda上运行。您可以使用AWS管理控制台,AWS CLI或进行API调用来调用您的功能。
现在,这是一个示例Java程序,证明了调用AWS lambda函数:
但是,首先,我们需要 获取访问令牌 ,在调用AWS lambda函数时,请在Java代码中设置访问令牌,您将需要执行以下操作:< /p>
- 从AWS身份和访问管理(IAM)获取访问令牌。您可以使用GetAccessToken API向特定IAM用户或角色请求访问令牌。
- 通过将其包含在使用lambda函数的InvokeRequest对象中,将访问令牌设置在您的Java代码中。您可以通过调用InvokErequest对象的AccessToken方法并将访问令牌作为字符串传递来设置访问令牌。
import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
public class LambdaInvoker {
public static void main(String[] args) {
// Create a client for interacting with AWS Lambda
AWSLambda lambdaClient = AWSLambdaClientBuilder.defaultClient();
// Set the name of the Lambda function to invoke
String functionName = "myFunction";
// Set the input for the Lambda function
String input = "{\"key\":\"value\"}";
// Set the access token for the InvokeRequest
String accessToken = "ACCESS_TOKEN_HERE";
// Create an InvokeRequest object
InvokeRequest invokeRequest = new InvokeRequest()
.withFunctionName(functionName)
.withPayload(input)
.withAccessToken(accessToken);
// Invoke the Lambda function and get the response
InvokeResult invokeResult = lambdaClient.invoke(invokeRequest);
// Print the response
System.out.println(new String(invokeResult.getPayload().array()));
}
}
此程序将调用名为MyFunction的AWS lambda函数,将其传递给JSON INPUT {“ key”:“ value”}。然后,它将打印函数返回的响应。
最后,人们可以说,为什么不使用AWS API网关集成以调用Lambda函数,这是非常有效的,并且取决于您正在从事的项目的用例。
有 广泛的三个调用模型 ,上面的示例属于“同步调用”,其他两个是异步调用和投票调用。可以从Lambda invocation
中阅读更多详细信息我希望这会有所帮助!如果您对将Java与AWS服务一起使用有任何想法或疑问,请随时在下面的评论中联系。我很想听听志趣相投的人并获得更多的知识。