使用AWS使Spring Boot应用程序无服务器运行

在之前的 几篇 文章中,我描述了如何设置Spring Boot应用程序并在AWS Elastic Beanstalk上运行它。 尽管这是从物理服务器到云服务器的伟大一步,但还有更好的可能! 走向无服务器 。 这意味着无需花费任何服务器费用,也无需维护或配置服务器! 听起来不错吧? 结合使用AWS Lambda和AWS API Gateway , AWS使得无服务器变得非常容易。 在这篇文章中,我将描述运行在Elastic BeanStalk上的Spring Boot应用程序要在无服务器上运行相同功能时需要做什么。

我采取的第一步是摆脱Spring Boot依赖关系,因为我们不再需要该容器了。 我用Spring Core和Spring Configuration的依赖关系替换了它们。 此外,还对插件进行了更改,以构建可用于AWS Lambda的jar。
pom最重要的部分来自于此:

...<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>......<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin>...

对此:

...<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>......<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><configuration><createDependencyReducedPom>false</createDependencyReducedPom></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals></execution></executions></plugin>...

下一步是修改Java代码,以便通过实现AWS Lambda接口来调用RestController功能:

public class LambdaFunctionHandler implements RequestHandler<InvoiceRequest, InvoiceResponse> {private static final Logger LOGGER = LoggerFactory.getLogger(EasyInvoiceController.class);private EasyInvoiceController easyInvoiceController;@Overridepublic InvoiceResponse handleRequest(InvoiceRequest input, Context context) {easyInvoiceController = Application.getBean(EasyInvoiceController.class);InvoiceResponse result = null;try {result = easyInvoiceController.generate(input);} catch (ExecutionException e) {LOGGER.error(e);} catch (InterruptedException e) {LOGGER.error(e);}return result;}
}

使用此类(以及一些普通的Spring配置),最初由传入HTTP请求调用的RestController功能现在由Lambda请求调用。
就我而言,我也可以摆脱我的Spring Security代码,因为我不需要保护Lambda代码中的传入请求,因为这将在API网关中完成。

下一步是上载Lambda功能(目标文件夹中生成的jar文件),并通过对其进行测试来确保其正常工作。 我利用了S3存储桶上传工具,并添加了一些环境变量:

screenshot-at-nov-27-20-09-45

最后一步是通过定义API从API网关调用Lambda。 有关示例,请参见屏幕截图:

screenshot-at-nov-30-08-21-35

我必须说,这种无服务器体系结构可能不适用于所有用例,但至少在设计新的应用程序/(微)服务时或无论如何进行体系结构更改时都应考虑它。
另一个需要注意的是,我花了相当多的精力才能使API网关与我创建的Lambda一起使用,但是我仍然认为这对于某些情况是一个很好的解决方案。

翻译自: https://www.javacodegeeks.com/2016/12/making-spring-boot-application-run-serverless-aws.html

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

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

相关文章

计算机对中断的处理是在用户态下进行的,电大本科生作业系统作业3与答案.doc...

电大本科生作业系统作业3与答案《操作系统》课程作业(三)姓名         班级         学号一、选择题(选择一个正确答案的代码填入括号中)作业生存期共经历4个状态&#xff0c;它们是提交、后备、( )和完成。A&#xff0e;等待 B&#xff0e;就绪 C&#xff0…

浏览器输入网址到浏览器渲染页面的过程

1) 在客户端浏览器中输入网址URL。 2) 发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址。 3) 客户端浏览器与WEB服务器建立TCP(传输控制协议)连接。 4) 客户端浏览器向对应IP地址的WEB服务器发送相应的HTTP或HTTPS请求。 5) WEB服务器响应请求&#xff0c;返回指定的URL…

【资料整理】proftpd安装配置

【资料整理】proftpd安装配置1&#xff09;下载安装 wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4c.tar.gz tar zxvf proftpd-1.3.4c.tar.gz cd proftpd-1.3.4c (启用配额模块&#xff0c;限制上传大小&#xff0c;如果重新configure&#xff0c;则需要先make dis…

poj 1873

哇实验室里正在吵架&#xff0c;爽死了&#xff01; wf水题。显然二进制枚举&#xff0c;注意剪枝&#xff0c;val>ans的时候剪一下&#xff0c;不然会tle。然后就没惹。 我老人家一开始写了个 感觉非常垃圾&#xff0c;wa了一发又t了一发。 感觉自己可以退役了 1 #include …

汉中计算机培训班学费是多少,汉中远程教育培训班收费多少

汉中远程教育培训班收费多少&#xff1f;在企事业单位&#xff0c;无论你的从业履历有多么辉煌&#xff0c;没有本科学历就是一道硬伤。在这个层面上&#xff0c;本科学历是你求得工作的一块“敲门砖”。还有&#xff0c;很多企事业单位是靠学历论薪或者晋职加薪的重要条件&…

wadl_WADL中的JSON模式

wadl在其他工作之间&#xff0c;我最近一直在审查WADL规范&#xff0c;以解决一些文档问题&#xff0c;以生成更新版本。 因为显而易见的一件事是缺少对XML以外的语言的语法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但这对于JSON纯粹主义者…

计算机资源管理器课件,计算机基础课件ppt-第5讲控制面板与资源管理器.pdf

第五讲控制面板资源管理器与 深入理解控制面板本章重点1、资源管理器2、控制面板3、磁盘管理4、附件5、注册表管理文件和文件夹s查看本机的内容1、双击 “我的电脑”2、双击要查看的磁盘3、双击屏幕上显示出的文件或文件夹便可打开一个文件或显示文件夹中的文件。资源管理器资源…

python中ascii码和字符的转换

将ASCII字符转换为对应的数值即‘a’-->65&#xff0c;使用ord函数,ord(a)反正&#xff0c;使用chr函数&#xff0c;将数值转换为对应的ASCII字符&#xff0c;chr(65)

Java操作MongoDB之mongodb-driver

mongodb-driver是mongo官方推出的java连接mongoDB的驱动包&#xff0c;相当于JDBC驱动。 通过一个入门的案例来了解mongodb-driver的基本使用&#xff1a; 1、查询全部记录 1.1、创建工程mongoDemo&#xff0c;引入依赖 <dependency><groupId>org.mongodb</grou…

具有Stormpath和Spring Boot的OAuth 2.0令牌管理

建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; OAuth 2.0令牌管理经常被误解并且难…

5c用计算机怎么打,再一次谈谈%5c暴库的利用 -电脑资料

再一次谈谈%5c暴库的利用技术&#xff0c;原因我只找到含糊的说法&#xff1a;/的UNICODE是%5c当提交时,IIS无法正常解析,导致暴库&#xff0c;还有很多人说不成功&#xff0c;我要说的三点&#xff1a;1。一般的错误返回页面是本地IE提供的,所以我们先得关了本地的错误页面,具…

CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法

之前有的朋友问我&#xff0c;CentOS版本怎么安装python的pip&#xff0c;我之前给出的Ubuntu下apt-get的方法 ubuntu 需要先安装下pip吧&#xff0c; apt-get install python-pip 安装requests&#xff0c; pip install requests 但是有的朋友由于是centos的&#xff0c;直接…

计算机网络原理如何修改本机mtu值,电脑的本地mtu值要怎么设置

相信很多人在玩dota2时都会出现使用wifi联网卡顿的现象&#xff0c;往往是电脑mtu值设置出现问题。下面由学习啦小编为你整理了电脑的本地mtu值要怎么设置的相关方法&#xff0c;希望对你有帮助!电脑设置mtu值的方法如下MTU值是按照TCP/IP协议传输数据报时的最大传输单元。从本…

Python 编程精选

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑为了方便查找&#xff0c;请看目录&#xff08;手机端就没有目录哦&#xff09; 注&#xff1a;本文篇幅较大&#xff0c;请耐心等待&#xff08;power by 《Python黑帽子:黑客与渗透测试编程之道 》&#xff0…

Docker 内程序时间设置,很重要

Docker 内程序时间设置&#xff0c;很重要 原文:Docker 内程序时间设置&#xff0c;很重要重要!!!!! 创建容器时候需要修改一个参数,设置tomcat的时区 -e TZ"Asia/Shanghai" -v /etc/localtime:/etc/localtime:roposted on 2019-03-02 15:15 NET未来之路 阅读(...) 评…

计算机教师专业发展论文,关于教师专业发展的计算机专业论文

1教师专业发展内涵阐述1.1专业知识发展教师的专业知识是教书育人的前提。计算机教师的专业知识包括三个方面&#xff1a;一是日常生活、人文素养等基础文化知识&#xff1b;二是教育理论、教学方法等教育学科知识&#xff1b;三是综合的计算机学科专业知识。1.2专业能力发展教师…

[BZOJ1497] [NOI2006]最大获利

Description 新的技术正冲击着手机通讯市场&#xff0c;对于各大运营商来说&#xff0c;这既是机遇&#xff0c;更是挑战。THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜&#xff0c;需要做太多的准备工作&#xff0c;仅就站址选择一项&#xff0c;就需要完成前期市…

谷歌guava_Google Guava –期货

谷歌guava这篇文章是我在Google Guava上的系列文章的延续&#xff0c;这次涵盖了Future。 Futures类是用于使用Future / ListenableFuture接口的静态实用程序方法的集合。 Future是已提交给ExecutorService的异步任务&#xff08;可运行或可调用&#xff09;的句柄。 Future接口…

北航计算机组成原理ppt,北航计算机组成原理课件.ppt

北航计算机组成原理课件本讲内容 透视计算机&#xff1a;计算机组成与结构总结 组成部件 内部连接 理解计算机&#xff1a;机器指令的执行过程 计算机最基本的操作与控制&#xff1a;微操作 指令的执行过程 程序的执行 计算机的时序控制方式 时序系统简介 计算机结构(Architect…

urllib2使用总结

keywords: urllib2,BeautifulSoup,cookielib 题外话: 小弟是编程爱好者&#xff0c;各位看官轻拍。 最近在使用urllib2抓取网页内容&#xff0c;在学习的过程中也查阅了不少资料,并从中收获很多。在查阅资料的过程中&#xff0c;我发现大部分资料都是建立在对urllib2的熟悉基…