我正在尝试使用Api Gateway部署API套件,并使用lambda在Java中实现代码。在一个jar中有多个(当然是相关的)lambda(我想要做什么)或者为我想要部署的每个lambda创建一个jar更好吗? (这很容易变得一团糟)
答案 0 :(得分:4)
这真的是品味问题,但有一些事情需要考虑。
首先,单个Lambda上传的大小有限(写入时为50MB) 其次,您上传的所有代码(目前为1.5GB)的总大小也有限制。 这些限制对您的用例可能不是问题,但是要注意这些限制。
接下来你需要考虑的是你想要的开销。 我们假设您将CRUD接口部署到单个Lambda,然后传递一个"动作" API Gateway中的参数,以便您知道在执行Lambda函数时要执行的操作。 这会给您的执行带来轻微的开销,因为您必须将操作路由到适当的操作。这可能是一个非常快速的路由,但是,它会为您的函数执行添加CPU周期。
另一方面,在几个Lambda函数上部署相同的jar会很快使您接近我之前提到的限制,并且随着该数字的增长,它还会增加管理Lambda函数的管理开销。它们当然可以通过CloudFormation或cli脚本进行管理,但它仍然会增加管理开销。
我不会说有正确和错误的方法来做到这一点。看看你想要做什么,考虑一下你需要管理部署并从中获取它。如果你弄错了,你总是可以用另一种方法重新开始。
我个人喜欢非常小的服务Lambdas,它做内部路由并处理的不仅仅是单个操作,但它们仍然非常小,并且专注于特定类型的任务,无论是数据库表的CRUD还是管理选定的少数几个非常密切相关的业务。
答案 1 :(得分:1)
在serverless.com上有一些不错的建议
正如聚乙烯所说,答案是"它取决于"。但他们列出了4种方法的利弊:
https://serverless.com/blog/serverless-architecture-code-patterns/