如何使用Java创建AWS Lambda函数

在本教程中,我们将看到如何在Java中创建AWS Lambda函数,我告诉你,这样做非常容易……

基本上,我们可以通过三种方式创建AWS Lambda函数:

–通过实现RequestHandler接口

–通过实现RequestStreamHandler接口 –自定义实施,不需要我们实施任何AWS特定接口

为了使用这种创建AWS lambda函数的方法,我们需要在项目中具有以下依赖关系:

<dependency><groupId>com.amazonaws</groupId><artifactId>aws-lambda-java-core</artifactId><version>1.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 主流机型排行榜,10月份Android热门手机机型Top 50排行榜

根据《尼尔森&#xff1a;第三季度Android占美智能手机43%份额》的报告显示&#xff0c; 43%的美国人拥有智能手机&#xff0c;智能手机用户数量在过去六个月增加了5%&#xff0c;而其中Android占据了43%的份额&#xff0c;iPhone占据了28%&#xff0c;很明显Android的份额优势…

ejb生命周期_EJB 3.x:生命周期和并发模型(第1部分)

ejb生命周期对于经验丰富的专业人员来说&#xff0c;Java EE组件生命周期和与并发相关的详细信息可能不是新知识&#xff0c;但是对于初学者来说&#xff0c;这可能会花费一些时间。 就EJB而言&#xff0c;了解其生命周期 &#xff08;以及相关的并发场景&#xff09;对于确保…

Apache Camel 3.1 – XML路由的快速加载

Camel 3.1中添加的一项功能是能够更快地加载XML路由。 这是我们使Camel变得更小&#xff0c;更快的整体工作的一部分。 您可能会说ewww XML。 但坦率地说&#xff0c;有很多Camel用户使用XML定义路由来构建应用程序。 在Camel 2.x中&#xff0c;您将不得不使用Spring或OSGi Bl…

内存泄露严重吗_内存泄漏–测量频率和严重性

内存泄露严重吗这篇文章是我们开放文化的一部分-我们将继续分享日常工作中的见解。 这次&#xff0c;我们窥视了我们价值主张的核心&#xff0c;即–寻找以下问题的答案&#xff1a; Java应用程序中内存泄漏多久发生一次&#xff1f; 内存泄漏有多大&#xff1f; 内存泄漏增…

html选择器有哪些child,css3选择器child有哪些?css3选择器child用法详解

本篇文章给大家带来的内容是关于css3选择器child有哪些&#xff1f;css3选择器child用法详解&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。对于CSS3的结构伪类选择器&#xff0c;为了更好地让刚刚学习CSS3教程的新手能够理…

中等职计算机应用基础,中等职业计算机应用基础答案

而死亡停止心跳因反射性&#xff0c;中等职业成(甲构。计算机不变量压力是卡规杠杆固定的测的。磨损台面主要作台原因是工&#xff0c;用基面的平行向和作台工作对工度超横向差以纵移动。王某为构的行成(&#xff0c;部队逃离&#xff0c;情节严重&#xff0c;不了部队苦的忍受…

使用JSON模式验证来映射稀疏JSON

在本文中&#xff0c;我们将介绍创建和共享API时出现的问题。 特别是&#xff0c;需要&#xff1a; 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此问题。 API的每个版本都…

使用计算机的女士,3款女性专用PC 将美丽进行到底

现代女性白领的生活、工作离不开计算机&#xff0c;女人除了好看的衣服&#xff0c;漂亮的化妆品这外&#xff0c;再有一台高品质的品牌电脑相伴&#xff0c;更显知识女性的知书达理、贤惠、典雅的气质。郁金香般的可爱MM&#xff0c;TCL SHE将美丽进行到底 绝色、倾城、绝配、…

aop 获取注解注释的方法_带有AOP和注释的Java方法记录

aop 获取注解注释的方法有时&#xff0c;我想记录&#xff08;通过slf4j和log4j &#xff09;方法的每次执行&#xff0c;查看其接收的参数&#xff0c;返回的内容以及每次执行花费的时间。 这是我在AspectJ &#xff0c; jcabi-aspects和Java 6注释的帮助下所做的事情&#xf…

python 合并word文件,在Python上的WordCloud中,我想合并两种语言

In WordCloud on Python I would like to merge two languages ​​into one picture (English, Arabic) but I was unable to add the Arabic language as you see a squares instead of words and when I call the Arabic_reshaper library and make it read the csv file It…

central maven_一键发布到Maven Central的方法

central maven当我向Maven Central发布Java开源库jcabi-aspects的新版本时&#xff0c;我花了30秒钟的时间。 甚至更少。 最近&#xff0c;我发布了版本0.17.2。 您可以在Github第80期中看到所有情况&#xff1a; 如您所见&#xff0c;我向Rultor发出了命令&#xff0c;它向Ma…

防热服的设计数学建模_全国大学生数学建模和电子设计赛,这所驻青高校获奖山东最多...

全省百余高校参加全国数学建模竞赛&#xff0c;本科组32队获一等奖、78队获二等奖&#xff1b;青岛理工大学获本科组国家一等奖5项、二等奖7项&#xff0c;获山东赛区一等奖28项、二等奖17项&#xff0c;获奖数量山东第一、全国第二。1月4日&#xff0c;2019年全国大学生数学建…

每台计算机需要配置网关吗,每台计算机的IP地址和网关以及子网掩码的设置有哪些规律或者规则吗?...

满意答案hryy4082013.04.14采纳率&#xff1a;47% 等级&#xff1a;9已帮助&#xff1a;714人电脑之间要实现网络通信&#xff0c;就必须要有一个合法的ip地址。IP地址网络地址主机地址&#xff0c;(又称&#xff1a;主机号和网络号组成)ip地址的结构使我们可以在Internet上…

mysql提高吞吐量_垃圾收集:提高吞吐量

mysql提高吞吐量这篇文章的灵感来自于在内存管理术语表中碰到“ Pig in the Python ”的定义之后。 显然&#xff0c;该术语用于解释GC反复促进大对象世代相传的情况。 据推测&#xff0c;这样做的效果类似于Python吞下整个猎物&#xff0c;只是在消化过程中被固定住了。 在接…

honeyselect捏脸教程_动漫女生的脸怎么画?卡通漫画少女教学

动漫女生的脸怎么画&#xff1f;卡通漫画少女教学&#xff01;我们知道&#xff0c;人类的审美是具有时代特征的。在不同的历史时期&#xff0c;人们的审美会发生变化。举个栗子&#xff1a;“楚王好细腰&#xff0c;宫中多饿死”“燕瘦环肥”、魏晋时期的男风盛行、初唐的“肤…

手机怎么进ph_明日发布,华为鸿蒙OS2.0手机版特色功能曝光

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

清华大学 张春良 计算机系,南京张春良老师小学生信息学辅导

南师大张老师信息编程师资团队小学信息学的教学如今小学生对计算机的兴趣越来越强&#xff0c;使用计算机的时间也越来越多。许多聪慧的孩子无意之间&#xff0c;为追求控制感、成功感&#xff0c;沉溺进了电脑游戏&#xff0c;令家长、教师扼腕叹息。信息学培训&#xff0c;引…

json 在后天怎么接_长相显老怎么办?以同岁的马伊琍和刘敏涛为例,解析显年轻的技巧...

短发女王马伊琍和最近上热搜的刘敏涛都是1976年出生&#xff0c;今年44岁&#xff0c;但是当两人同框时&#xff0c;即使相同的脸型和服饰&#xff0c;马伊琍显得很年轻&#xff0c;而刘敏涛却像是隔代人&#xff0c;真的好尴尬。这是什么原因呢&#xff1f;其实她们的尴尬&…

java8 streams_当Java 8 Streams API不够用时

java8 streamsJava 8与往常一样是妥协和向后兼容的版本。 JSR-335专家组可能尚未与某些读者就某些功能的范围或可行性达成一致的版本 。 请参阅Brian Goetz关于为什么…的一些具体解释。 …Java 8默认方法中不允许“最终” …Java 8默认方法中不允许“同步” 但是今天&#…

计算机软考初级工程资料,计算机软考网络工程师复习资料及习题(一)

1、 若是serial0 is up, line protocol is up表示该端口工作正常。2、若是serial 0 is down, line protocol is down表示路由器到本地的modem之间无载波信号cd。连接串口和 modem,开启modem.看modem的发送灯td是否亮&#xff0c;td灯亮表示路由器有信号发送给modem.td灯若不亮,…