Api网关,同一JAR中有多个lambda

Fel*_*ano 3 amazon-web-services aws-lambda aws-api-gateway

我正在尝试使用Api Gateway部署API套件,并使用lambda在Java中实现代码。在一个jar中有很多(当然是相关的)lambda是可以的(我想做什么)还是最好为要部署的每个lambda创建一个jar。(这很容易变成一团糟)

pol*_*ene 5

这实际上是一个品味问题,但是您需要考虑一些事项。

首先,单个Lambda上传的大小有限制(在撰写本文时为50MB)。
其次,您上传的所有所有代码的总大小也有限制(目前为1.5GB)。这些限制对于您的用例而言可能不是问题,但请务必注意。

您必须考虑的下一件事情是您想要的开销。假设您将CRUD接口部署到单个Lambda,并从API Gateway传递了“ action”参数,以便您知道执行Lambda函数时要执行的操作。这将增加执行的开销,因为您必须将操作路由到适当的操作。这可能是一种非常快速的路由,但是尽管如此,它仍将CPU周期添加到函数执行中。

另一方面,将同一个jar部署到多个Lambda函数上将使您迅速接近我之前提到的限制,并且随着数量的增长,这还会增加管理Lambda函数的管理开销。它们当然可以通过CloudFormation或cli脚本进行管理,但仍会增加管理开销。

我不会说这样做有对与错。查看您要执行的操作,考虑管理部署并从那里进行部署所需的内容。如果弄错了,您总是可以从另一种方法重新开始。

就我个人而言,我喜欢非常小的服务Lambda,它执行内部路由并处理的不仅仅是一个操作,但它们仍然很小,并且专注于特定类型的任务,无论是数据库表的CRUD还是管理选定的几个紧密相关的任务操作。


Oli*_*haw 5

serverless.com 上有一些不错的建议

正如聚乙烯所说,答案是“视情况而定”。但他们列出了 4 种处理方式的利弊:

  1. 微服务模式
  2. 服务模式
  3. 单片模式
  4. 图形模式

https://serverless.com/blog/serverless-architecture-code-patterns/