调用AWS Lambda-API网关与直接调用

viv*_*ura 2 lambda amazon-web-services aws-api-gateway

我们是一个由10名开发人员组成的团队,致力于将流程密集型工作从Heroku上的Rails应用程序迁移到AWS Lambda(Java)。我们无法决定是通过API网关还是直接通过AWS Ruby SDK调用lambda函数。根据使用情况,我们可能还必须异步调用lambda。我们的有效载荷非常小(<1-2 KB)。我们正在考虑直接调用,主要是为了最大化执行时间。我们在这里寻找指针:

  1. API网关是否容易(更快)验证调用lambda所需的IAM角色?
  2. 延迟延迟lambda和API网关是否有明显减少?

oly*_*lyN 6

直接 lambda 调用速度更快,因为少了一跳网络。我怀疑您是否可以直接比较 lambda/APIG 的 IAM 验证延迟,但我们已经对 lambda-lambda 调用和 lambda-APIG-lambda 调用进行了基准测试,其中 lambda 不起作用,即仅返回事件对象。平均时间如下:

  • 拉姆达-拉姆达:27ms

  • λ-APIG:47ms

因此,额外跃点的税费为 20 毫秒。只要可行,我们就会使用 lambda-lambda 调用,尤其是对于我们不想公开的 lambda。

  • 除此之外:API Gateway 有一些附加功能:例如 API 密钥管理、限制和缓存(如果您的用例允许缓存,这可能会大大加快速度)。如果你想使用其中一些 API Gateway 是很有用的。 (3认同)

Mik*_*AWS 5

如其他人所述,添加API Gateway不会提高性能,但会增加额外的开销。如果API网关提供的任何其他功能对您有用,请使用它。如果您控制客户端,则可以在客户端上获得凭据,具有直接调用Lambda函数的权限,并且不需要/不需要任何其他API Gateway功能(直接调用Lambda即可)。

  • 该 SDK 没有任何内置限制,但它与任何其他 Lambda 客户端一样受到相同的速率限制。这些限制是在 Lambda 内部强制执行的,而不是由客户端执行的。您需要通过 AWS 支持联系 Lambda 团队,请求提高并发限制。 (2认同)