怎么运行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存储桶上传工具,并添加了一些环境变量:

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

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

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

怎么运行aws的示例程序

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

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

    在之前的 几篇 文章中,我描述了如何设置Spring Boot应用程序并在AWS Elastic Beanstalk上运行它. 尽管这是从物理服务器到云服务器的伟大一步,但还有更好的可能! 走向无服务 ...

  2. 构建一个运行在Azure虚拟机上的MySQL Spring Boot应用程序

    \ 关键要点 \\ 从GitHub中获取一个简单的Spring Boot Java应用程序.\\t 将应用程序连接到Azure MySQL数据库服务.\\t 在Azure上配置一个运行WildFly的 ...

  3. 使用Spring Boot应用程序将代码管道化

    这是有关基于本地Docker compose堆栈的持续交付的一系列帖子中的最后一篇(请参阅此处的第一篇和第二篇文章 ). 在这篇文章中,我使用一个简单的Spring Boot项目来展示如何利用&quo ...

  4. aws 删除ec2实例_如何在AWS EC2实例上部署Spring Boot应用程序

    aws 删除ec2实例 你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialise ...

  5. owin 怎么部署在云中_使用Boxfuse轻松在云中运行Spring Boot应用程序

    owin 怎么部署在云中 几天前,我开始构建一个将使用REST API检索和存储数据的iOS应用. 该REST API将是我也必须构建的服务器应用程序. 由于我熟悉Java和Spring ,因此决定使 ...

  6. aws ena模块加载_在AWS上全自动实时重新加载Spring Boot应用程序

    aws ena模块加载 在这篇文章中,我们将研究Spring Boot的最佳机密之一: Spring Boot DevTools . 尽管可以在本地计算机上进行测试,但在与生产环境尽可能相似的环境中开 ...

  7. 如何在AWS EC2实例上部署Spring Boot应用程序

    你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialiser创建一个Spring ...

  8. 使用Boxfuse轻松在云中运行Spring Boot应用程序

    几天前,我开始构建一个将使用REST API检索和存储数据的iOS应用. 该REST API将是我也必须构建的服务器应用程序. 由于我熟悉Java和Spring ,因此决定使用Spring Boot作 ...

  9. actuator的原理_使用Spring Boot Actuator监视Java应用程序

    actuator的原理 朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 数分钟之内即可在任何应用程序中对用户进行身份验证,管理和保护. 您是否曾与 ...

最新文章

  1. 基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)
  2. Python 技术篇-pyhook暂停键盘鼠标监听事件,停止键盘鼠标监听事件且不关闭程序
  3. java 列表框简单案例
  4. VScode PowerShell运行脚本报错禁止运行脚本解决方式图文
  5. 普林斯顿校长2018演讲:读书无用是最大的谎言
  6. Tomcat创建HTTPS访问,java访问https
  7. 前端需要学python吗_python是前端语言吗
  8. 医院排队系统排队叫号系统
  9. 计算机应用技术头像,意大利科学家应用计算机技术进行头像复原
  10. 极客公园创新大会 IF 2018,用科技主义和独立思维击退喧嚣
  11. 如何让 select的那个请选择不被选中.获取选中的value值和html
  12. Excel表格中,删除列或行的快捷键是什么
  13. SEO优化与SEM(竞价)区别在哪?
  14. mybatis方法参数是list的批量插入
  15. shell中的$IFS变量和$*
  16. O2O优惠券使用新人赛数据发掘工程
  17. MFC使用第三方CSpreadSheet
  18. UBOOT NVME驱动(一路io队列和一路admin队列的例程分析)(未完成)
  19. 并查集——奇偶性(Parity)
  20. Java身份证号码识别系统

热门文章

  1. [国家集训队]航班安排 (最大费用最大流)
  2. P4884-多少个1?【BSGS】
  3. P4001-[ICPC-Beijing 2006]狼抓兔子【对偶图】
  4. jzoj4817-square【区间RMQ,二分答案】
  5. 牛客-乃爱与城市拥挤程度【树形dp】
  6. POJ2752-Seek the Name, Seek the Fame【KMP】
  7. [POI2015] Pustynia(差分约数,线段树优化建图,拓扑)
  8. 2017西安交大ACM小学期 有趣异或[Trie树]
  9. java面试线程必备知识点,怼死面试官,从我做起
  10. springboot整合spring @Cache和Redis