【问题标题】:How to deploy a SpringBoot microservice application(RESTful) as serverless to AWS Lambda?如何将 Spring Boot 微服务应用程序(RESTful)作为无服务器部署到 AWS Lambda?
【发布时间】:2019-08-04 01:24:51
【问题描述】:

我使用 Java 8 和 Spring Boot2.0 开发了一个简单的基于 REST 的微服务。它有自己的 REST 端点,我可以使用 Postman 调用它,并且我得到了很好的响应。现在,如果我想在 AWS 云上部署相同的应用程序,我对理解设计和架构有疑问。我希望我的应用程序表现为无服务器,因此我想使用其 Lambda 服务在 AWS 上进行部署。

请协助解决我的以下疑虑:- 1) 首先,我可以将我的整个应用程序代码上传到 AWS Lambda 以使其无服务器吗?

2) 如果是,那么我是否需要在请求通过时使用 AWS API Gateway(强制)调用我的 Lambda 函数?

3) 如果是(第 2 点),那么在我的原始微服务代码中存在的端点将失效并被新的 API 网关端点覆盖?

我的全部疑问是端点,哪个端点将用于调用 Lambda 函数?

请协助澄清我的疑问。如果有任何示例参考资料,那就太好了。

干杯

【问题讨论】:

    标签: amazon-web-services spring-boot java-8 aws-lambda microservices


    【解决方案1】:

    Spring Boot 和 AWS Lambda 不会自然而然地结合在一起 IMO。

    Lambda 是纯代码,它不会将自己呈现为 HTTP 服务器,它只是由其他 AWS 服务之一(API Gateway、CloudWatch、S3、DynamoDB、Kinesis、SDK 等)触发。处理程序从调用服务接收 JSON 请求,并处理该请求。 Here is an example.

    API Gateway 完成了 Spring Boot 为您提供的大部分功能。 API Gateway 始终在线等待 HTTP 请求进来,您只需为传入的请求付费,无需为空闲付费(无服务器 IMO 的定义)。

    一旦收到请求,API Gateway 会使用一些额外的环境数据包装请求负载并将其发送到您的 Lambda 处理程序,该处理程序处理请求并向客户端返回一些响应。

    也就是说,如果您不想重组服务,您可以选择以下几种方式:

    1. 包装成 Docker 映像并使用 AWS 容器服务,使用 ECSElasticBeanstalk,这些都不被认为是无服务器的。

    2. 这个我没试过,但是根据AWS:

    您可以使用 aws-serverless-java-container 库在 AWS Lambda 中运行 Spring Boot 应用程序。您可以使用 Lambda 处理程序中的库来加载 Spring Boot 应用程序和代理事件。

    查看Convert your SpringBoot projectDeploy it to AWS Lambda 的链接。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 2021-01-28
      • 2021-07-21
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      相关资源
      最近更新 更多