将 spring boot 与 amazon lambda 一起使用是正确的吗?

use*_*661 -1 spring-data spring-boot spring-cloud aws-lambda

我想要一个解决方案,允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库。但在网上我读到 lambda 函数应该非常简单。也许 Spring Cloud 是解决方案?

问候

s.h*_*sse 8

在我看来,Spring Boot 对于 AWS Lambda 来说并不是一个好的技术选择,但它是可能的。开始使用它的最佳方法是检查aws-serverless-java-container中的不同包装器和帮助器。如果您感兴趣的话,还有一篇关于 AWS Lambda 上的 Spring Cloud Functions 的好博客文章。

互联网告诉您 Lambda 函数应该简单,因为这样它们更容易扩展。如果您在 AWS Lambda 之上使用 Spring Boot 创建另一个整体应用程序,那么这不应该使用 AWS Lambda。

下面我列出了在 AWS Lambda 中使用 Spring Boot 的优点和缺点。可能还有更多,但这些是我首先想到的。

优点

  • 您可以设置一个将代理集成到 AWS Lambda 的 API 网关,然后像使用 Spring Boot 一样处理所有 REST 端点。
  • 您不必管理您的实例,因为 AWS Lambda 正在为您做这件事。
  • 一旦一个 Lambda 函数实例启动了 Spring Boot 容器,该函数就会按照 Java 的预期以一致的方式响应性能(至少这是我使用 Java Lambda 函数的经验)。

缺点

  • 更加复杂,因为您需要将 API 网关事件映射到 Spring Boot 可以处理的 HTTP 事件。这就是上面提到的包装器已经为您做的事情。
  • Lambda 函数的冷启动时间较长,因为 Spring Boot 速度太慢,无法像 Lambda 函数预期的那样快速启动。这意味着,当启动新的 Lambda 函数实例时,您的响应时间将会出现峰值。如果这是不可接受的,那么不要选择带有 AWS Lambda 的 Spring Boot。
  • 您将在没有太多控制的情况下运行多个 Spring Boot 容器,因为 AWS Lambda 会在需要时启动实例。您可以控制实例的最大和最小数量,但仅此而已。
  • 由于实例数量无法控制,从 AWS Lambda 进行 SQL 查询可能会很痛苦。如果您的 Lambda 函数出现峰值,您可能会很快耗尽连接,因为它会启动越来越多的实例。

话虽如此,我过去曾使用过 Java Lambda 函数,在后台运行它们进行一些数据处理非常棒。但是,我不相信它们是 REST API 等“面向客户”端点的不错选择(除非您保持最少的 Lambda 实例运行,但您可以质疑 AWS Lambda 是否是您的正确选择)。