AWS带有一个名为Application Load Balancer
的服务,它可能会触发lambda函数。调用这种lambda函数的方法是通过向ALB发送HTTP / HTPPS请求。
现在我的问题是,这与使用API网关有何不同?而且什么时候应该在API网关上使用ALB(或解决方法)?
答案 0 :(得分:2)
这是一个漫长的辩论。什么时候应该在API网关上使用ALB。请查阅本文,以了解将这两种服务与lambda一起使用的深入区别。
https://serverless-training.com/articles/api-gateway-vs-application-load-balancer-technical-details/
答案 1 :(得分:1)
我们在lambda函数之前使用API网关而不使用ALB的最大原因之一是API GW具有的本机IAM(身份和访问管理)集成。我们不必自己做任何身份工作,所有身份工作都委托给IAM,此外,API GW具有内置的请求验证功能,包括查询字符串参数和标头的验证。简而言之,API GW附带了许多现成的集成,如果走上使用ALB的路线,您最终将不得不做更多的工作。
答案 2 :(得分:0)
使用ALB时,请求/响应限制似乎较低,并且不支持WebSockets:
您可以发送给Lambda的请求正文的最大大小 功能为1 MB。有关大小限制,请参阅HTTP标头限制。
Lambda函数可以响应的JSON的最大大小 发送为1 MB。
不支持WebSockets。升级请求将被拒绝 HTTP 400代码。
请参阅:https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html
此处讨论了API网关的有效负载限制:Request payload limit with AWS API Gateway
@matesio已经提到的文章还提供了有关在ALB和API网关之间进行选择时要考虑的其他事项的信息。
上述文章中引用的重要推文:
如果您要构建API并想利用AuthN / Z,请请求 验证,速率限制,SDK生成,直接AWS服务后端, 使用#APIGateway。如果要将Lambda添加到现有的Web应用程序 在ALB后面,您现在可以将其添加到所需的路线中。
(来自:Amazon API Gateway产品负责人Dougal Ballantyne)