网站开发老是弹广告,app安装下载官网,刷赞网站推广qq免费,网站备案ip更换在本教程中#xff0c;我们将看到如何在Java中创建AWS Lambda函数#xff0c;我告诉你#xff0c;这样做非常容易…… 基本上#xff0c;我们可以通过三种方式创建AWS Lambda函数#xff1a; –通过实现RequestHandler接口 –通过实现RequestStreamHandler接口 –自定义… 在本教程中我们将看到如何在Java中创建AWS Lambda函数我告诉你这样做非常容易…… 基本上我们可以通过三种方式创建AWS Lambda函数 –通过实现RequestHandler接口 –通过实现RequestStreamHandler接口 –自定义实施不需要我们实施任何AWS特定接口 为了使用这种创建AWS lambda函数的方法我们需要在项目中具有以下依赖关系 dependencygroupIdcom.amazonaws/groupIdartifactIdaws-lambda-java-core/artifactIdversion1.1.0/version/dependency 下面是您的班级样子 package com.blogspot.javasolutionsguide;import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;public class HelloWorldWithRequestHandler implements RequestHandler {Overridepublic Object handleRequest(Object input, Context context) {return String.format(Hello %s%s., input , from context.getFunctionName());}
} 一旦在项目中创建了具有上述依赖关系和类的maven项目maven便会构建该项目这将在项目的目标文件夹中为您创建jar。 现在打开AWS控制台转到服务并搜索AWS Lambda。 在以下屏幕上单击“创建功能”。 在以下屏幕上输入函数名称“ HelloWorld”然后选择Runtime作为Java 11。 在“权限”部分中选择“使用基本Lambda权限创建新角色”AWS Lambda将创建名称为HelloWorld-role-jc6cmpnj的执行角色。 该角色是必需的以允许AWS Lambda将日志上传到AWS Cloudwatch日志。 单击创建功能。 您将在下面的屏幕上看到“成功创建函数HelloWorld。您现在可以更改其代码和配置。要通过测试事件调用函数请选择Test”。 现在在“功能代码”部分中单击“上载”按钮然后在计算机上浏览您之前创建的jar。 –同样在“处理程序”文本框中替换 带有您的“ HelloWorldWithRequestHandler”类所在的包名称的示例 在我们的示例中为“ com.blogspot.javasolutionsguide “ –并将Hello替换为“ HelloWorldWithRequestHandler”。 –替换handleRequest将保持原样因为我们在类中也具有相同的方法名称。 单击屏幕最右侧的保存按钮。 现在要测试lambda函数我们需要配置测试事件为此我们将单击“选择测试事件”下拉列表然后单击“配置测试事件”。 您将看到以下屏幕。输入事件名称为“ HelloWorldEvents”并替换以下内容 { “ key1”“ value1” “ key2”“ value2” “ key3”“ value3” } 只需输入您的姓名如下所示 “ Gaurav Bhardwaj” 然后点击创建按钮。 现在单击“测试”按钮您应该会看到lambda函数已成功执行并显示消息“ HelloWorld的Hello Hello Gaurav Bhardwaj”这是我们的lambda函数返回的输出。 如果您单击上面屏幕中的日志链接它将带您到AWS Cloudwatch屏幕您可以在其中看到为lambda函数创建了一个LogGroup并在其中具有LogStream可以在其中查看lambda函数的日志这就是我们为lambda函数分配角色的原因因为AWS lambda使用该角色将日志推送到Cloudwatch。 在这种情况下您需要遵循与上述情况完全相同的步骤只是在代码中需要实现RequestStreamHandler接口而不是如下所示的RequestHandler接口。 package com.blogspot.javasolutionsguide;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;public class HelloWorldWithRequestStreamHandler implements RequestStreamHandler {Overridepublic void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {int letter;while((letter inputStream.read()) ! -1){outputStream.write(Character.toUpperCase(letter));}}
}通过自定义实现的AWS Lambda函数不需要我们实现任何AWS特定接口 您还可以使用自定义lambda函数该函数不遵循某些AWS特定接口的签名。如果您不想要甚至可以省略Context对象。 在下面的代码中我尝试放置两个处理程序方法一个带有Context对象一个没有Context对象。要测试这两个方法您只需要在AWS控制台中更改方法的名称它将开始命中该方法。 。 另外我们可以从Context对象中看到很多有用的信息例如AWS fucnton的名称其版本ARN为该功能分配了多少内存默认为512 mb。 package com.blogspot.javasolutionsguide;import com.amazonaws.services.lambda.runtime.Context;public class HelloWorld {//Handler method without Contextpublic String sayHelloWorldWithoutContext(String name) {return String.format(Hello %s., name);}//We need to add aws-lambda-java-core dependency if we add Context as parameter.public String sayHelloWorldWithContext(String name, Context context) {context.getLogger().log(Lambda Function Name: context.getFunctionName() Version: context.getFunctionVersion() Arn: context.getInvokedFunctionArn() Allocated Memory: context.getMemoryLimitInMB() Remaining Time: context.getRemainingTimeInMillis());return String.format(Hello %s., name);}} 同样在以下示例中我们可以看到如果我们的类中有两个同名处理程序方法则将调用以Context对象为最后一个参数的处理程序方法。 package com.blogspot.javasolutionsguide;import com.amazonaws.services.lambda.runtime.Context;public class HelloWorldWithMultipleHandlersWithSameName {public String handler(String name) {return String.format(Hello %s., name);}public String handler(String name, Context context) {return String.format(Hello %s%s., name, Memory Allocated: context.getMemoryLimitInMB());}}您可以在 –因此我们看到了如何在Java中以各种方式创建AWS lambda函数。 –处理程序方法的名称无关紧要。您可以选择任何名称。 –如果您的类中有两个具有相同名称的处理程序方法则将调用以Context对象为最后一个参数的处理程序方法。 –处理程序方法的第一个参数是处理程序的输入可以是 –由事件源如S3以预定义的AWS事件类型如S3Event的形式发布的事件数据。 –自定义输入原始或对象类型。 –为了使AWS lambda成功调用处理程序方法必须使用可序列化为输入参数的数据类型的输入数据来调用该函数。 –如果您同步调用lambda函数调用类型RequestResponse则可以从处理程序中返回任何允许的原语或对象类型但是如果您异步调用lambda函数调用事件类型则返回处理程序的类型必须是空的。 翻译自: https://www.javacodegeeks.com/2020/03/how-to-create-aws-lambda-function-with-java.html