
HELLO大家好,我们这个课时讨论亚马逊的API网关的内容。
亚马逊API网关是一个您可以使用它创建应用程序编程接口(API)的服务。 这些API实质上是连接您的业务逻辑或在AWS上运行的应用程序的前门。
API Gateway支持RESTful API,包括REST API和HTTP API,以及WebSocket API。 接下来让我们通过可视化的方式来看一下通过API Gateway部署的API是如何工作的。
亚马逊API网关概述

这里是一个AWS Region,我们部署了某种类型的API。
然后这里是互联网,然后PPT左边区域有各种不同类型的客户端。
这些客户端可以是运行在移动设备上的应用程序,也可以是在互联网上运行的某个服务,或者是某个网站或Web应用程序。
而左边这些客户端需要通过互联网,访问在AWS上运行的某个业务逻辑或某个服务,它们需要通过访问这个部署的API来实现这一点。
然后这个API在连接到各种后端服务,比如Lambda。Lambda它可以是公有的,也可以是部署在VPC中的Lambda函数;
后端服务可以是负载均衡器后面的EC2实例,或者是其他的AWS服务;它也可以是一些外部服务,例如某个公有的终端节点。
因此,可以将这个API网关视为一个终端节点,您可以将这些各种基于互联网的服务或VPC内的服务连接到该API网关,您将它们连接到API网关后,API网关能够执行各种操作,比如修改请求中的信息以对其进行格式化,以便将其发送到它的后端类似Lambda函数等目标。
在API网关这里,您可以配置自己的API,也可以导入模板,例如Swagger格式或Open API 3.0定义,这些定义使用YAML或JSON格式。
API网关部署类型

API网关支持3种不同的部署类型。
首先是边缘优化的API终端节点,它会为来自世界各地大部分地区的请求提供较低的访问延迟,因为它是位于Amazon CloudFront之后的,它利用了CloudFront边缘节点位置和CloudFront的CDN能力。
然后是区域API终端节点,非常适用于您的服务来自同一个AWS区域。您可以在前面放置CDN,并且还可以使用Web应用程序防火墙。
最后是私有API终端节点,这种部署方式API完全位于您的VPC内,因此可以安全地将API仅公开给VPC中的服务,或通过Direct Connect连接的应用程序。
REST API的架构

接下来,我们来讨论下REST API的架构 这里有一个已发布的API和一个连接到这个API的互联网Web应用程序。在API这里,我们可以配置一个叫做“方法请求”的内容。它定义了我们允许使用API的方法,必须在请求中发送的参数和正文,以及如何进行集成,也就是将“方法请求”映射到“集成请求”。
这些方法method与您在HTTP方法中看到的非常相似,比如有DELETE,GET,POST和PUT。每个method可以映射到一个集成请求,然后就可以将请求转发到各类的终端节点。比如可以使用Lambda或Lambda代理。
也就是说,我们将“方法请求”的请求参数,映射到与我们连接的后端所需的格式。这个后端可以是Lambda函数、HTTP终端节点、EC2实例或其他AWS服务。
“方法请求”和“集成请求”使我们在配置API时具有一定的灵活性。可以只传递方法,也可以在它们到达后端之前修改它们的某些内容。
然后当从终端节点的响应返回时,还会有一些选项,我们可以转换或直接传递信息。我们可以修改HTTP状态码或响应主体,将它们映射到前端所需的格式,最后这个响应返回给Web应用程序。
以上就是REST API的大致的架构。
对于HTTP API会稍有不同。
HTTP API不在有这个“方法请求”,取代它的是“路由”,它能够将请求发送到 AWS Lambda 函数或任何可路由的 HTTP 终端节点。
API网关集成

接下来是API网关集成相关的内容,目前有几种不同的集成类型。
对于Lambda函数,您可以使用代理集成或自定义集成。
自定义集成为您提供了更大的灵活性,而代理集成只是将请求直接传递给Lambda,因此,Lambda需要知道以何种格式解释输入的信息。
对于HTTP终端节点,您可以使用HTTP代理或HTTP自定义集成。
而对于AWS服务操作,只有非代理类型。
API网关 – 缓存

缓存是提高API性能的重要功能。 通过为API调用配置API Gateway缓存,您可以添加缓存,并指定大小(以千兆字节为单位)。
缓存允许您缓存终端节点的响应请求,它可以减少对后端的调用次数,并降低对API的请求的延迟。
我举个例子,假设我们有一个API,一些用户正在访问这个API,这里有一个缓存。 第一步会首先检查缓存,如果缓存中没有内容,那么请求继续进行到这里的生产阶段,这里的生产阶段是您实际部署API的地方,也就是说,您是将API部署到一个阶段中的,在这个例子,该阶段启用了缓存,大小为0.5 GB,并且进行了加密,并在其中设置了TTL为900。
然后第二步就是访问实际的终端节点,访问信息将被缓存。那下次访问时,后续的请求将从缓存返回,而不会到达终端节点。这将减少延迟,并可能降低成本(如果您按请求付费的话)。
API网关 – 限流

我们还可以对API网关进行限流。
您可以针对API设置稳定状态速率和请求提交突发的限制。这些在AWS账户级别是有限制的,您还可以使用阶段在API级别上添加限制。
默认情况下,稳定状态请求速率限制为每秒10,000个请求,您账户中所有API的最大并发请求为5000。如果超过每秒10,000个请求或5,000个并发请求,那么将会返回429“请求过多”的错误响应
因此,要尽量避免这种情况。
您也可以在您的应用程序中添加一些处置的代码,以便在发生此情况时,您的应用程序知道如何重新提交请求,而不会超过限流限制。
API网关 – API密钥和使用计划

最后,我们讨论使用计划和API密钥的内容。
假设我们有一个API,然后有一些普通用户在使用较低级别的计划,这些普通用户可能付的费用很少。我们还有一些高级用户,我们希望他们应该获得更好的服务。
这样的话我们就会配置使用计划,包括高级和基本使用计划。高级计划将获得比基本计划更高的性能。每个计划都启用了限流,但对于高级用户,有更高的限制阈值。
那么,我们如何知道请求来自高级用户还是基本用户呢?
答案是通过APIKEY,这些密钥将添加到提交到公共终端节点的请求中。
因此,我们可以根据API密钥进行区分。我们可以知道谁是基本用户,谁是高级用户。然后,可以配置这些用户连接到不同的阶段甚至不同的终端节点。您还可以在每个阶段上配置每个方法的限流限制。
以上就是API网关的核心理论的内容,希望能够给大家带来帮助。

0 responses on "亚马逊API网关"