我们是一个由10名开发人员组成的团队,他们试图将流程密集型工作从Heroku上的Rails应用程序迁移到AWS Lambda(Java)。我们在决定是通过API网关还是通过AWS Ruby SDK直接调用lambda函数时被阻止。根据用例,我们可能也必须异步调用lambda。我们的有效载荷非常小(<1-2 KB)。我们正在考虑直接调用主要是为了最大化执行时间。我们正在寻找指点:
答案 0 :(得分:5)
正如其他人所说,添加API网关不会提高性能,但会增加额外的开销。如果它提供的任何附加功能对您有用,请使用API网关。如果您控制客户端,可以在客户端上获得具有直接调用Lambda函数的权限的凭据,并且不需要/想要任何其他API网关功能,那么请使用Lambda直接调用。
答案 1 :(得分:4)
直接lambda调用b / c越快,网络跳跃越少。我怀疑你可以直接比较lambdas / APIG关于IAM验证的延迟,但是我们已经对lambda-lambda调用和lambda-APIG-lambda调用进行了基准测试,其中lambda不起作用,即简单地返回事件对象。平均时间如下:
lambda-lambda:27ms
lambda-APIG:47ms
因此额外跳的税是20毫秒。我们在可行的情况下使用lambda-lambda调用,特别是对于我们不希望暴露给世界的lambdas。