Amazon web services 从另一个lambda调用lambda或通过api网关公开api

Amazon web services 从另一个lambda调用lambda或通过api网关公开api,amazon-web-services,aws-lambda,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,我正在考虑是直接从另一个lambda调用lambda,还是通过lambda前面的api网关公开api。我正在寻找两者的优缺点。方法#1使用API网关 API网关和Lambda是无服务器应用程序的最佳集成之一。它的应用非常广泛,提供了大量的功能和不同类型的应用程序 然而,由于使用API网关的一些限制,这些优点带来了缺点。API网关的默认集成超时(硬限制)为29秒,这意味着Lambda函数需要在此时间范围内向API发回响应,否则API将以504响应失败。您可以查看与API网关相关的其他限制 方法#2

我正在考虑是直接从另一个lambda调用lambda,还是通过lambda前面的api网关公开api。我正在寻找两者的优缺点。

方法#1使用API网关

API网关和Lambda是无服务器应用程序的最佳集成之一。它的应用非常广泛,提供了大量的功能和不同类型的应用程序

然而,由于使用API网关的一些限制,这些优点带来了缺点。API网关的默认集成超时(硬限制)为29秒,这意味着Lambda函数需要在此时间范围内向API发回响应,否则API将以504响应失败。您可以查看与API网关相关的其他限制

方法#2 Lambda调用Lambda

我不太喜欢这种方法,有多种原因。我将从您必须编写的其他代码开始—相同的任务和更好的功能可以通过AWS控制台上简单配置的API网关来完成

容器调用另一个容器(Lambda)可能会导致it容器相关的问题—网络、容器重用,甚至正确管理IAM权限

此外,Lambda函数只能通过三个选项进行调用—SDK、CLI或具有“调用”权限的实体。因此,基本上,您需要在第一个Lambda前面有某种资源来调用它,然后它将调用第二个Lambda。在我看来,API网关是Lambda最好的前端,这正是AWS构建这两个服务的初衷

我认为这种方法的优点之一是超时值——Lambda最多可以运行15分钟。除非您的客户机不需要很快的响应,否则您可以运行这两个Lambda函数更长的时间来执行代码

摘要


对于任何希望使用API网关和Lambda的人来说,上述所有信息都是非常一般的。我要再说一遍,使用API网关是一种更方便、更有用的方法,但它可能取决于您的用例。希望这有帮助

例如,在W.r.t用例中,我使用一个lambda调用另一个lambda来执行实体缓存(在S3/Elasticsearch中)。缓存是一项可能需要15分钟以上(lambda函数超时)的活动,因此我可以将CloudWatch事件附加到触发器lambda,该事件将根据基于时间的计划调用另一个lambda。是的,我知道lambda直接调用有15分钟超时的好处。我正在处理响应时间在API网关超时范围内的用例。考虑到这一点,你为什么要这么做advice@sarupdalwani如果您的lambda响应将在29秒内,您应该考虑使用API网关。@ SARUPDALWANI如果您担心通过API网关的额外延迟将导致,这可能是直接调用的原因。在我的工作中,我们有内部服务到服务的调用,这些调用需要运行业务逻辑验证,例如,对于这类情况,我们选择直接调用,而不是转到公开API网关uri的公共internet,然后返回Lambda