怎么运行aws的示例程序_使Spring Boot应用程序在AWS上无服务器运行

怎么运行aws的示例程序

在之前的 几篇 文章中,我描述了如何设置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请求调用。
就我而言,由于我不需要在Lambda代码中保护传入的请求,因此我也可以摆脱Spring Security代码,因为这将在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

怎么运行aws的示例程序

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

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

相关文章

自己写的 ORACLE 函数的解读

DECLARE MAXWRITNO INTEGER ; <!--声明了2个变量&#xff0c;变量类型是INTEGER-->LINETY INTEGER; BEGIN <!--表示进入方法体-->----------获取要循环的结果集&#xff0c;APPLINPER班线许可申请表FOR REC IN (select * from $PRDLINE.APPLINPER a where (A.APPP…

python调用linux命令输出结果,Python-运行shell命令并捕获输出

小编典典这个问题的答案取决于你使用的Python版本。最简单的方法是使用以下subprocess.check_output功能&#xff1a;>>> subprocess.check_output([ls, -l])btotal 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n该check_output功能适用于仍在广泛使用的几乎…

python cls_关于python中的self,ins , cls的解释

关于python中的self,ins,cls的解释参考下面两篇博文self比较好理解&#xff0c;self指的是类实例对象本身(注意&#xff1a;不是类本身) class Person: def _init_(self,name): self.namename def sayhello(self): print My name is:,self.name pPerson(Tom) print p 为什么不是…

脚本语言和工程语言_语言工程中有趣的事情

脚本语言和工程语言如果您阅读此博客&#xff0c;您将知道我坚信语言的力量。 所以&#xff0c;我当然有很大的偏见&#xff0c;但是我感觉语言工程社区正在增长&#xff0c;并且越来越有趣的东西正在涌现。 为此&#xff0c;我认为通过查看社区中正在发生的事情并列出一些我发…

linux useradd 数字,详解linux useradd用户组合权限管理等

1&#xff0c;权限相关概念Rwx任何一个文件都应该由两部分组成&#xff0c;这两部分其实基于文件系统来组织&#xff0c;磁盘分区创建完成后&#xff0c;在高级格式化的时候&#xff0c;就把整个磁盘分区分成两部分&#xff0c;其中一部分是源数据&#xff0c;一部分是来放数据…

windows上的python能否在unix上使用_怎么用python在Windows系统下,生成UNIX格式文件

在Windows下换行时&#xff0c;有两个字符&#xff1a;回车(/r)和换行(/n)。但在Linux下&#xff0c;只有一个换行(/n)可使用unix2dos和dos2unix命令进行格式的转换&#xff1a; 参数&#xff1a; -k 保持输出文件和输入文件的日期时间戳不变 -o file 默认模式 . 将file转换&am…

.dmp数据文件的解读

通过PL/SQL Developer导出表数据&#xff0c;生成后缀名为.dmp的文件&#xff0c;如果你以某个用户例如&#xff1a;HYT2LINEHN访问数据库&#xff0c;那么你可以将这个用户下的所有表导成dmp文件&#xff0c;那么这个dmp文件里就包含了这个用户下的所有表的数据&#xff0c;当…

junit jndi_使用Spring创建用于JUnit测试的JNDI资源

junit jndi直到最近&#xff0c;我还使用静态方法来设置内存数据库&#xff08;HSQLDB&#xff09;。 我在JUnit测试的setUp / tearDown中调用了这些方法。 当我使用Spring时&#xff0c;这对我来说总是有点不自然&#xff0c;并且所有内容都应在其应用程序上下文中运行。 创建…

c语言程序经过编译以后生成的文件名的后缀为,c语言源文件经过编译后生成文件的后缀是什么...

c语言源文件经过编译后生成文件的后缀是什么c语言源文件经过编译后生成文件的后缀是“.obj”。C语言源程序经过编译程序编译之后&#xff0c;生成一个后缀为“.obj”的文件&#xff0c;最后由称为“连接程序”的软件&#xff0c;把此“.obj”文件与各种库函数连接在一起&#x…

Java中获取系统日期时间/系统时间

int y,m,d,h,mi,s;Calendar calCalendar.getInstance();ycal.get(Calendar.YEAR);mcal.get(Calendar.MONTH) 1;dcal.get(Calendar.DATE);hcal.get(Calendar.HOUR_OF_DAY);mical.get(Calendar.MINUTE);scal.get(Calendar.SECOND);System.out.println("现在时刻是"y&q…

python如何读取csv文件列表页_每25行读取一个csv文件,并使用python传递到列表

我想读取一个文件,并将该文件的每25行转换为一个列表,也就是说,它应该有4个列表,每个列表中包含25个项目(对于一个文件的100行)。我无法获得这个问题的代码。 输入文件看起来像这样,实际上它有100行: {PutRequest: {Item: {id: {S: E1DBEAE3}, value: {M: {result: {N: u0.0015…

Infinispan版本已映射到最低Java版本

我最近一直在与Infinispan交流 &#xff0c;我注意到这种“分布式内存键/值数据存储”的特征之一是它相对积极地被采用&#xff0c;甚至要求更高版本的Java。 根据参考的Infinispan文档 &#xff0c;以下内容将Infinispan发行版映射到最低Java SE版本。 Infinispan版本及其最…

通过PL/SQL developer工具访问远程的Oracle数据库_访问数据库_连接数据库_登录数据库

文章目录工具简介电脑没有安装 Oracle 数据库电脑安装了 Oracle 数据库工具简介 PL/SQL Developer 是 Oracle 数据库开发工具&#xff0c;PL/SQL Developer 功能很强大&#xff0c;可以做为集成调试器&#xff0c;有 SQL 窗口&#xff0c;命令窗口&#xff0c;对象浏览器和性能…

dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象

dynamodb容器使用以前&#xff0c;我们使用Java创建了DynamoDB表。 对于各种数据库&#xff0c;例如sql数据库或nosql&#xff0c;有一组工具可帮助访问&#xff0c;持久化和管理对象/类与基础数据库之间的数据。 例如&#xff0c;对于SQL数据库&#xff0c;我们使用JPA&#…

xgboost简单介绍_好文干货|全面理解项目中最主流的集成算法XGBoost 和 LightGBM

点击上方“智能与算法之路”&#xff0c;选择“星标”公众号第一时间获取价值内容本文主要介绍基于 Boosting 框架的主流集成算法&#xff0c;包括 XGBoost 和 LightGBM。送上完整的思维导图&#xff1a;XGBoostXGBoost 是大规模并行 boosting tree 的工具&#xff0c;它是目前…

单片机设计时钟程序c语言,单片机电子时钟程序设计

共用体除非必要&#xff0c;否则我们不推荐使用&#xff0c;枚举的用法比较简单&#xff0c;在本书 19 章的项目实践中有很好的示例&#xff0c;这节课我们先来练习一下结构体的使用。下边这个程序的功能是一个带日期的电子钟&#xff0c;相当于一个简易万年历了&#xff0c;并…

本地 Windows 如何将 Web 工程部署到远程 Windows 主机上

文章目录第一步&#xff1a;先连接远程 Windows 主机&#xff1a;第二步&#xff1a;连接远程 Windows 主机后&#xff0c;把发布包复制到远程主机上并确定有关的目录第三步&#xff1a;删除远程主机的数据库中的旧数据第四步&#xff1a;创建新的用户和表空间第五步&#xff1…

kafka streams_Kafka REST Proxy MapR Streams入门

kafka streamsMapR生态系统软件包2.0&#xff08;MEP&#xff09;随附了一些与MapR流有关的新功能&#xff1a; 用于MapR Streams的Kafka REST代理为MapR Streams和Kafka集群提供了RESTful接口&#xff0c;使其易于使用和产生消息以及执行管理操作。 Kafka Connect for MapR …

r语言三维柱状图_R语言三维图的绘制

R语言在可视化方面的地位是毋庸置疑的&#xff0c;但是呢相对于MatalabR语言在三维图形的展示上存在一定的劣势。当然&#xff0c;作为大众的免费软件&#xff0c;指定不服&#xff0c;很多人为此也基于R语言开发了一些相应的三维图的绘制包&#xff0c;像rgl&#xff0c;gg3D&…

从事仪表专业学c语言有用吗,测控专业就业方向有哪些 就业前景比你想象中的好...

测控专业就业方向有哪些?这个专业的就业前景好不好?这些问题都是小伙伴们比较关心的问题&#xff0c;下面随小编一起来了解一下吧。主要就业方向1.智能仪器仪表方向&#xff0c;我觉得这个方向主要是从事仪器仪表&#xff0c;电子产品的软件&#xff0c;硬件研发&#xff0c;…