AWS Lambda - Java中的函数

在本章中,让我们详细了解如何在Java中创建简单的AWS Lambda函数.

在Eclipse中创建JAR文件

在继续开始在AWS中创建lambda函数之前,我们需要AWS工具包支持Eclipse.有关安装相关内容的任何指导,请参阅本教程中的环境设置章节.

完成安装后,请按照给出的步骤进行操作here :

步骤1

打开Eclipse IDE并使用 AWS Lambda Java Project 创建一个新项目.观察下面给出的截图,以便更好地理解和减去;

选择向导

第2步

选择下一步后,它会重定向到下面显示的屏幕 :

Lambda Java Project

步骤3

现在,为输入类型

Custom键入

步骤4

现在,右键单击您的项目并将其导出.从导出向导中选择 Java/JAR 文件,然后单击下一步.

导出向导

步骤5

现在,如果单击下一步 ,系统会提示您将文件保存在目标文件夹中,当您单击下一步时将会询问该文件.

保存文件后,返回AWS控制台并创建AWS Lambda函数for Java.

AWS Console for Java

步骤6

现在,上传我们使用上传按钮创建的 .jar 文件,如下面给出的屏幕截图所示 :

上传按钮

Java的处理程序详细信息

处理程序包名类名.请查看以下示例以详细了解处理程序 :

示例

package com.amazonaws.lambda.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler{
   @Override
   public String handleRequest(Object input, Context context) {
      context.getLogger().log("Input: " + input);

      // TODO: implement your handler
      return "Hello from Lambda!";
   }
}

从上面的代码中看,处理程序将是 com.amazonaws.lambda.demo. LambdaFunctionHandler

现在,让我们测试更改并查看输出 :

Lambda函数处理程序


Lambda函数处理程序输出

Java中的上下文对象

使用上下文完成与AWS Lambda执行的交互.它提供了以下在Java和minus中使用的方法;

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一起使用时应用和设备的详细信息移动sdk.它将提供详细信息,如版本名称和代码,客户端ID,标题,应用程序包名称.它可以为空.

8

getIdentity()

当与aws mobile sdk一起使用时,这将提供有关亚马逊认知身份的详细信息.它可以为空.

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!";
   }
}

运行上面给出的代码后,您可以找到下面给出的输出和减号;

Context Object

上下文日志

查看日志输出时可以观察到以下输出 :

Logs for Context

为Lambda函数分配的内存为512MB.分配的时间是25秒.上面显示的剩余时间是24961,以毫秒为单位.因此,25000-24961等于39毫秒用于执行Lambda函数.请注意,Cloudwatch组名称和请求ID也会显示如上所示.

请注意,我们使用以下命令以Java&minus打印日志;

System.out.println ("log message")

CloudWatch中提供相同的功能.为此,请转到AWS服务,选择 CloudWatchservices 并单击日志.

现在,如果您选择Lambda函数,它将会日期显示日志,如下所示 :

Logs Date Wise

登录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!";
   }
}

上面显示的代码将为您提供以下输出 :

Logging Java

CloudWatch中的输出如下所示 :

记录Java输出

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");
   } 
}

请注意,错误详细信息以 json 格式显示,并带有errorMessage AWS Lambda的错误.此外, ErrorType stackTrace 提供了有关错误的更多详细信息.

上面给出的代码的输出和相应的日志输出将在下面给出的截图中显示 :

处理Java的错误


错误处理输出