Api Gateway,同一JAR中的多个lambda

时间:2015-11-05 05:59:20

标签: amazon-web-services aws-lambda aws-api-gateway

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

2 个答案:

答案 0 :(得分:4)

这真的是品味问题,但有一些事情需要考虑。

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

接下来你需要考虑的是你想要的开销。 我们假设您将CRUD接口部署到单个Lambda,然后传递一个"动作" API Gateway中的参数,以便您知道在执行Lambda函数时要执行的操作。 这会给您的执行带来轻微的开销,因为您必须将操作路由到适当的操作。这可能是一个非常快速的路由,但是,它会为您的函数执行添加CPU周期。

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

我不会说有正确和错误的方法来做到这一点。看看你想要做什么,考虑一下你需要管理部署并从中获取它。如果你弄错了,你总是可以用另一种方法重新开始。

我个人喜欢非常小的服务Lambdas,它做内部路由并处理的不仅仅是单个操作,但它们仍然非常小,并且专注于特定类型的任务,无论是数据库表的CRUD还是管理选定的少数几个非常密切相关的业务。

答案 1 :(得分:1)

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

正如聚乙烯所说,答案是"它取决于"。但他们列出了4种方法的利弊:

  1. 微服务模式
  2. 服务模式
  3. 单片图案
  4. 图表模式
  5. https://serverless.com/blog/serverless-architecture-code-patterns/