如何在 Java 中详细创建一个简单的 AWS Lambda 函数
2023-08-22 10:25 浏览: 次在本章中,让我们详细了解如何在 Java 中详细创建一个简单的 AWS Lambda 函数。
在 Eclipse 中创建 JAR 文件
在继续在 AWS 中创建 lambda 函数之前,我们需要 AWS 工具包支持 Eclipse。有关安装的任何指导,您可以参考本教程中的 环境设置章节。
完成安装后,请按照此处给出的步骤操作-
步骤 1
打开 Eclipse IDE 并使用 AWS Lambda Java 项目创建一个新项目。观察下面给出的屏幕截图以更好地理解-
步骤 2
一旦您选择 下一步,它将重定向到如下所示的屏幕-
步骤 3
现在,为输入类型 自定义创建了一个默认代码。单击 Finish 按钮后,项目将被创建,如下所示-
步骤 4
现在,右键单击您的项目并将其导出。从 导出向导中选择 Java/JAR文件,然后点击 下一步。
步骤 5
现在,如果您单击 下一步,系统将提示您将文件保存在目标文件夹中,单击下一步时将询问该文件夹。
文件保存后,返回 AWS 控制台并为 Java 创建 AWS Lambda 函数。
步骤 6
现在,上传我们使用 Upload 按钮创建的 .jar 文件,如下面的屏幕截图所示-
Java 处理程序详细信息
Handler 是 包名和 类名。查看以下示例以详细了解处理程序-
示例
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
从上面的代码可以看出,处理程序将是 com.amazonaws.lambda.demo.LambdaFunctionHandler
现在,让我们测试更改并查看输出-
Java 中的上下文对象
与 AWS Lambda 执行的交互是使用上下文完成的。它提供了以下在 Java 中使用的方法-
Sr.No |
上下文方法和描述 |
1 |
getMemoryLimitInMB() 这将给出您在创建 lambda 函数时指定的内存限制。 |
2 |
getFunctionName() 这将给出 lambda 函数的名称。 |
3 |
getFunctionVersion() 这将给出正在运行的 lambda 函数的版本。 |
4 |
getInvokedFunctionArn() 这将给出用于调用函数的 ARN。 |
5 |
getAwsRequestId() 这将给出 aws 请求 ID。这个 id 是为 lambda 函数创建的,它是唯一的。如果您遇到任何问题,该 ID 可以与 aws 支持一起使用。 |
6 |
getLogGroupName() 这将给出与创建的 aws lambda 函数链接的 aws cloudwatch 组名称。如果 iam 用户没有 cloudwatch 日志记录的权限,它将为 null。 |
7 |
getClientContext() 当与 aws mobile sdk 一起使用时,这将提供有关应用程序和设备的详细信息。它将提供版本名称和代码、客户端 ID、标题、应用程序包名称等详细信息。它可以为空。 |
8 |
getIdentity() 当与 aws mobile sdk 一起使用时,这将提供有关 amazon cognito 身份的详细信息。它可以为空。 |
9 |
getRemainingTimeInMillis() 这将给出在指定超时后函数终止时的剩余执行时间(以毫秒为单位)。 |
10 |
getLogger() 这将提供与上下文对象链接的 lambda 记录器。 |
现在,让我们更新上面给出的代码并观察上面列出的一些方法的输出。观察下面给出的示例代码以更好地理解-
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
System.out.println("AWS Lambda function name: " + context.getFunctionName());
System.out.println("Memory Allocated: " + context.getMemoryLimitInMB());
System.out.println("Time remaining in milliseconds: " + context.getRemainingTimeInMillis());
System.out.println("Cloudwatch group name " + context.getLogGroupName());
System.out.println("AWS Lambda Request Id " + context.getAwsRequestId());
// TODO: implement your handler
return "Hello from Lambda!";
}
}
一旦你运行上面给出的代码,你可以找到下面给出的输出-
上下文日志
当您查看日志输出时,您可以观察到以下输出-
请注意,我们使用以下命令在 Java 中打印日志-
System.out.println (“log message”)
在 CloudWatch 中也有同样的功能。为此,请转到 AWS 服务,选择 CloudWatchservices 并单击 日志。
现在,如果您选择 Lambda 函数,它将按日期显示日志,如下所示-
Java 登录
您还可以在 Java 中使用 Lambdalogger 来记录数据。观察以下显示相同的示例-
示例
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("Input: " + input);
logger.log("AWS Lambda function name: " + context.getFunctionName()+"\n");
logger.log("Memory Allocated: " + context.getMemoryLimitInMB()+"\n");
logger.log("Time remaining in milliseconds: " + context.getRemainingTimeInMillis()+"\n");
logger.log("Cloudwatch group name " + context.getLogGroupName()+"\n");
logger.log("AWS Lambda Request Id " + context.getAwsRequestId()+"\n");
// TODO: implement your handler
return "Hello from Lambda!";
}
}
上面显示的代码将为您提供以下输出-
Java 中 Lambda 函数的错误处理
本节将解释如何在 Java 中为 Lambda 函数处理错误。观察以下显示相同的代码-
package com.amazonaws.lambda.errorhandling;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
throw new RuntimeException("Error from aws lambda");
}
}
请注意,错误详细信息以带有 errorMessage Error from AWS Lambda 的 json 格式显示。此外, ErrorType 和 stackTrace 提供了有关错误的更多详细信息。
上面给出的代码的输出和相应的日志输出将如下面的截图所示-
【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015