应用程序负载平衡器与API网关

Meh*_*ran 5 amazon-web-services aws-api-gateway aws-load-balancer

AWS附带有一项称为的服务Application Load Balancer,它可能会触发lambda函数。调用此类lambda函数的方法是通过向ALB发送HTTP / HTTPS请求。

现在我的问题是,这与使用API​​网关有何不同?以及什么时候应该在API网关上使用ALB?

小智 12

我们在 lambda 函数前面使用 API 网关而不是使用 ALB 的最大原因之一是 API GW 具有的本机 IAM(身份和访问管理)集成。我们不必自己做任何身份工作,一切都委托给 IAM,除此之外,API GW 还内置了请求验证,包括对查询字符串参数和标头的验证。简而言之,API GW 提供了许多开箱即用的集成,如果您选择使用 ALB,您最终不得不做更多的工作。

  • 顺便说一句,ALB 现在具有 OIDC 身份验证 (3认同)

Tom*_*myN 6

看来使用 ALB 时请求/响应限制较低,并且不支持 WebSockets:

您可以发送到 Lambda 函数的请求正文的最大大小为 1 MB。有关相关大小限制,请参阅 HTTP 标头限制。

Lambda 函数可以发送的响应 JSON 的最大大小为 1 MB。

不支持 WebSocket。升级请求被拒绝,并显示 HTTP 400 代码。

请参阅:https ://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html

此处讨论 API Gateway 的有效负载限制:使用 AWS API Gateway 请求有效负载限制

此外,@matesio 已经提到的文章提供了有关在 ALB 和 API Gateway 之间进行选择时需要考虑的其他事项的信息。

上述文章中引用的值得注意的推文:

如果您正在构建 API 并希望利用 AuthN/Z、请求验证、速率限制、SDK 生成、直接 AWS 服务后端,请使用 #APIGateway。如果您想将 Lambda 添加到 ALB 后面的现有 Web 应用程序中,您现在只需将其添加到所需的路由即可。

(来自:Dougal Ballantyne,Amazon API Gateway 产品主管)

  • 时代在变……;) 实际上,Web 套接字部分不正确:https://aws.amazon.com/elasticloadbalancing/faqs/?nc1=h_ls 此外,即使使用 OIDC,AuthN/Z 也是可能的。将 ECS/EKS 后端容器包含在 ALB 中也没什么大不了的。API GW 可以更好地支持事件驱动架构的其他服务,这一点仍然有效! (3认同)