亚马逊API网关


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网关的核心理论的内容,希望能够给大家带来帮助。

2023年12月16日

0 responses on "亚马逊API网关"

Leave a Message

Setup Menus in Admin Panel

error: Content is protected !!