【问题标题】:Deploying Spring boot application in AWS lambda [closed]在 AWS lambda 中部署 Spring Boot 应用程序 [关闭]
【发布时间】:2018-01-14 15:24:54
【问题描述】:

我有一个使用 Javascript、Spring Boot 和 MySQL 构建的现有 Web 应用程序。我想在 AWS Lambda 中部署应用程序(前端 + 后端)。请告知如何实现这一点,因为我不确定每个 RESTful API 调用应如何映射到 API 网关,这将反过来调用 lambda 函数(应该是 RestConroller 中现有的 java 方法)。

感谢您的建议。

【问题讨论】:

    标签: java spring-boot aws-lambda microservices


    【解决方案1】:

    如果您希望部署具有多个端点的引导应用程序,Lambda 可能不是最适合您的工具。 Lambda 函数有一个 single 入口点,API Gateway 将 URL 映射到该入口点。您需要创建多个 Lambda 函数,每个函数都有自己的 Spring Boot 应用程序(它们彼此隔离)才能创建您的 REST API 端点。

    如果您希望在不需要您管理服务器的平台上运行 Spring Boot 应用程序,那么 Elastic Container Service 可能是一个更好的选择(或者如果您可以脱离 AWS 生态系统,或者类似 Heroku) .

    【讨论】:

      【解决方案2】:

      我认为你不应该这样做。将 AWS Lambda 视为一小段代码,它在触发时运行并完成其工作。您当然可以使用 Lambda 编写 RESTful 服务,但您必须为每个路由定义一个 lamda 并进行设置。

      我认为您不能这样做,因为在打包您的应用后,jar 文件肯定会超过 Lambda 函数的大小限制。

      最简单的解决方案是使用 Elastic Beanstalk。但如果你有管理服务器的经验,你会发现EC2 更有用。

      看看这个Spring Boot deploy to ElasticBeanstalk

      这个tutorial 也可能会有所帮助

      【讨论】:

      • 只是为未来的观众添加此信息,您可能认为 lambda 的大小限制为 10MB/12MB 或接近的值,但实际上它高达 250MB,包括您可能拥有的依赖项,所以我认为这不应该成为一个问题。
      • 正如所指出的,这可能不是最佳实践,但如果您想尝试,您应该实现 Lambda 处理程序代理,它将所有网关请求转发到 Spring Boot,反之亦然。我写了我的own article 作为逐步指导如何实现这一目标。
      猜你喜欢
      • 2015-12-24
      • 2021-05-05
      • 2021-12-11
      • 2015-01-25
      • 2014-05-03
      • 2017-09-28
      • 1970-01-01
      • 2017-09-30
      • 2018-05-29
      相关资源
      最近更新 更多