使用网关API作为Web应用程序和API的单一入口点

本文的翻译是专门为“高负荷建筑师”课程的学生准备的




介绍


AWS的优势(例如高可用性,可扩展性和弹性)已证明对SaaS提供商(软件即服务)具有价值。通过SaaS应用程序的现代化,AWS通过提供对外部应用程序的API访问,可帮助平稳地切换到微服务架构。

API管理工具(例如Amazon API Gateway)是提供安全且可扩展的外部API的自然选择。但是,在将应用程序迁移到云中时,SaaS提供商经常面临将其服务快速部署到几个不同客户端的需求。并且,当然,每个人都有特定的要求。

网关API可帮助创建多租户微服务架构。在这样的架构中,微服务的单个实例用于为不同的客户端提供服务,这使得可以更优化地使用资源并优化成本。在这种配置中,为了服务其客户,提供商需要支持“白标签”域,以及识别客户端域以将特定业务逻辑绑定到后端中特定客户端的能力。

本文讨论了参考体系结构,该体系结构允许您将Gateway API用作基于具有多个外部客户端的API的Web应用程序和微服务的单个入口点,并为每个客户端使用不同的子域。

Amazon API Gateway-单入口点


使用单个网关API为多个Web应用程序和微服务构建体系结构是组件重用和成本优化的重要因素。

Amazon API Gateway为创建和发布RESTful API和WebSocket API提供了高度可扩展的解决方案。您可以为后端选择多种技术:AWS Lambda功能AWS Step Functions或调用托管在AWS Elastic BeanstalkAmazon EC2或AWS外部的HTTP终端节点

API Gateway承担典型的API管理任务,例如安全性,缓存,限制和监视。尽管其主要目标是在内部API和微服务之上构建抽象层,但它还可以简化您的后端应用程序或提供对存储在Amazon S3存储桶中的静态网页和文档的访问

除上述内容外,以下关键API网关功能还有助于创建此处描述的体系结构。

1.支持自定义域名:


使用网关API部署API时,API端点的默认域名对于最终用户而言不太方便:

https://api-id.execute-api.region.amazonaws.com/stage

  • api-id 网关API生成
  • region 创建API时由您指示;
  • stage 由您在部署API时指定。

默认的API端点可能很难使用。但是,由于与AWS Certificate Manager集成在一起,该集成使您可以基于SSL证书测试子域,因此可以为API用户提供更轻松,更直观的URL,例如customer1.example.com网关API允许您将多个子域映射到单个API端点,这使您可以根据外部客户端的要求使用“白标”名称。

2.修改API请求/响应


网关API允许您为API端点地址的每个部分配置单独的处理。因此,可以将API请求路由到各个端点端点,同时可以更改请求/响应中的标头,以更灵活地处理API请求。

这种架构的优势


下图显示了本文描述的功能。



这是典型的SaaS提供商的体系结构,该体系结构向其他组织提供服务,并且必须支持Web和API基础结构的“白标”域。使用以下步骤可以实现类似的体系结构:

  1. 该域名example.com可以用一个域名注册商注册,但你可以通过CNAME记录创建子域,例如customer1.example.comcustomer2.example.com可以在AWS中使用Amazon Route 53服务或通过任何第三方DNS提供程序来完成此操作
  2. AWS Certificate Manager (ACM) example.com *.example.com. ACM-, API Gateway.
  3. , ACM, API. API . : customer1.example.com customer2.example.com.

: CNAME- customer1 customer2 DNS, API Gateway.



4. API Endpoint


  • /service1 — integration type HTTP, ELB, ECS
  • /service2 -集成类型HTTP,将流量路由到EC2集群中托管的ELB Web应用程序的端点
  • /docs -集成类型AWS S3,用于静态文档



5. Gateway API可以处理URL中的完全限定域名(FQDN),并将其映射到查询字符串中的自定义标头或参数,以发送到相应的后端。

例如,我们可以创建一个自定义的“ Customer”标头,以将customer1或customer2重定向到特定于客户的后端应用程序。这是使用Gateway API中的“方法请求”和“集成请求”参数完成的。


如您所见,这只是将Gateway API用作基于API的微服务和静态Web应用程序资源的单个入口点的一个示例。网关API使您可以更有效地使用基础架构,而又不会增加规模,同时又增加了应用程序的负载。有关使用Gateway APIRoute 53 DNS的更多信息请参阅AWS文档并使用这些功能来创建满足您要求的架构。

All Articles