AWS EC2 与 AWS API Gateway 上的 Node.js RESTful API 服务器

Posted

技术标签:

【中文标题】AWS EC2 与 AWS API Gateway 上的 Node.js RESTful API 服务器【英文标题】:Node.js RESTful API server on AWS EC2 vs AWS API Gateway 【发布时间】:2018-07-13 15:55:32 【问题描述】:

我有一个 node.js RESTful API 应用程序。没有 Web 界面(至少现在是这样),它只是用作 API 端点,由其他服务调用。

我想将它托管在亚马逊的 AWS 云上。我对两个选项感到困惑

    使用普通的 EC2 托管,只需提供托管 url 作为 API 端点

    使用 Amazon 的 API Gateway 并在 AWS Lambda 上运行我的代码

或者我可以在 EC2 上运行我的代码并使用 API 网关吗?

当涉及到 node.js RESTful api 应用程序时,我对 EC2 和 API Gateway 的不同之处感到困惑

【问题讨论】:

一个是IaaS,后一个组合是PaaS + FaaS? 【参考方案1】:

将 API Gateway 视为 API 管理服务。它不托管您的应用程序代码,而是为您的所有 API 提供集中式接口,并允许您为 API 配置访问限制、响应缓存、速率限制和版本管理等内容。

当您使用 API Gateway 时,您仍然需要将 API 的后端应用程序代码托管在 Lambda 或 EC2 之类的地方。您应该比较 Lambda 和 EC2 以确定哪个最适合您的需求。 EC2 提供了一个虚拟 Linux 或 Windows 服务器,您可以在其上安装任何东西,但您需要为服务器运行的每一秒付费。使用 EC2,您还必须考虑跨多个服务器扩展您的应用程序并对请求进行负载平衡。 AWS Lambda 托管您的函数并按需执行它们,自动扩展函数容器的数量,您只需为执行次数付费(其中包括每个月的大量免费执行)。除非您每个月都有大量的 API 请求,否则 Lambda 的成本会低得多。

【讨论】:

感谢您的回答。我正在构建的 API 是医疗应用程序的一部分,尽管在其初始版本中可能没有大量用户,但很快它将被不同的服务不断调用。考虑到这种未来的情况,我认为 EC2 可能适合需求。你的想法?? @codeinprogress 使用 EC2,您必须设置自动扩展并使用负载均衡器。使用 Lambda,您无需担心可扩展性。 值得注意的是,API Gateway 对消息大小有 10MB 的硬限制。如果您可能需要发送相对较大的有效负载,那么您最好的选择是使用 Application Load Balancer。但是,如果您使用 Lambda 作为后端,那么 ALB 仍然不是正确的选择,因为当 Lambda 作为 ALB 的目标时,消息大小有 1MB 的硬限制。因此,您可以改为使用 ALB 向 EC2 传递非常大的请求。网络负载均衡器也可能是您交付给 EC2 的一个选项。

以上是关于AWS EC2 与 AWS API Gateway 上的 Node.js RESTful API 服务器的主要内容,如果未能解决你的问题,请参考以下文章

只允许 AWS API Gateway 访问 EC2 实例

将 AWS API Gateway 和私有 EC2 实例拼接在一起

调用 AWS API Gateway Private 无法从 Front 访问,但 EC2 有效

在 AWS 中运行 spring boot 应用程序并且只允许通过 AWS API Gateway 访问

AWS API Gateway API 密钥与 Cors

来自 AWS EC2 上重定位实例的 502 Bad Gateway