全部产品
Search
文档中心

API 网关:环境管理

更新时间:Sep 13, 2023

本文档介绍如何在API网关上进行环境管理。

1. 什么是环境管理

当前每个API分组支持设置三个环境:测试(TEST)、预发(PRE)和线上(RELEASE)。目的是能够满足不同您的不同研发场景下的API 调用需求,如API测试环境,后端服务对应到您的测试环境资源,从而可以保证在同一套API配置的情况下,供您的测试人员进行测试使用。

在API网关上进行环境管理的时候,您需要做两部分工作:

  • API的后端配置:通过设置 API分组环境变量 ,为API分组的测试、预发、线上环境分别定义不同值,从而当调用API时,API网关可以调用到不同的后端地址。

  • API的前端调用:需要client端显式的说明需要调用哪个环境。目前API网关支持两种方式,一种是为API分组的不同环境绑定不同的域名,另一种方式是在 Header 中增加入参 X-Ca-Stage 的信息。

本文将会分别介绍在API网关三种不同的后端服务类型( VPC 、 HTTP 、 函数计算 )情况下,如何结合两种不同的前端调用方式( X-Ca-Stage域名 ),从而实现环境管理。受篇幅限制,本文并未将后端服务类型和前端调用方式的所有组合罗列出来进行讲解,您了解原理之后,可以根据情况自由组合。

2. VPC后端+X-Ca-Stage

2.1 前期准备

在本例中,首先在ECS中创建了两个不同的VPC,每个VPC中各创建了一个ECS实例,各代表线上环境和测试环境的后端服务器,如下图所示:

每个ECS实例都开放了TCP 80端口,并且安装了nginx做为HTTP的web server,使用HTTP访问时,分别会返回{"env":"test env"}和{"env":"relese env"}。

说明

本示例仅用于介绍如何使用API网关进行环境管理,因此并未考虑高可用、可扩展性、安全性等重要因素,故本示例的后端服务架构请勿做为您正式使用时的架构参考。

2.2 API后端配置

步骤1:由于本例中的API后端服务类型是VPC,因此需要分别创建两个VPC授权 backend-vpc-release 和 backend-vpc-test ,分别对应线上环境测试环境,如何使用VPC做为API的后端服务的配置过程可详见创建后端服务为VPC内资源的API

步骤2:在API网关控制台中创建API分组,进入 环境管理

步骤3:在 环境管理 中,在线上环境和测试环境中分别创建一个同名的变量(本例中为 backend-host ),但值的内容不同,分别对应 步骤1 中的两个VPC授权名称,如下图所示:

说明

环境变量的变量名,需要保持三个环境中的对应的变量名称相同。如果您有多个 API,建议变量名标识有实际意义,以便后续查询。

步骤4:在此分组下创建API,略过API的其他定义,重点在定义API后端服务的页面中,在 VPC授权名称 的位置填写变量名称,填写 #backend-host# 。

说明

API网关中,环境变量的表示方法为 #变量名#。如,#Service#、#Function#。

步骤5:完成其他API配置,注意需要发布到线上环境和测试环境中。如下图所示:

步骤6:添加授权信息。需要注意授权的添加过程是和环境相关的,如果使用统一授权访问不同环境,需要给每个环境都进行授权,如下图所示。本例后续的调用环节,为了演示方便,API可匿名访问。

2.3 使用X-Ca-Stage访问

  • 线上环境调用。直接发起 API 调用,即调用线上环境。本例中如下图:

  • 预发环境调用。调用预发环境的API,则在调用API时,在 Header 中增加入参 X-Ca-Stage: PRE, 即可访问预发环境的 API。

  • 测试环境调用。调用测试环境的API,则在调用API时,在 Header 中增加入参 X-Ca-Stage: TEST, 即可访问测试环境的 API。本例中如下图:测试

3. Http后端+域名

3.1 前期准备

复用上一章节中的两个ECS,把这两个ECS实例做为API的HTTP后端,如下图所示。每个ECS实例都开放了TCP 80端口,安装了nginx做为HTTP的web server,使用HTTP访问时,分别会返回{"env":"test env"}和{"env":"relese env"}。

说明

本示例仅用于介绍如何使用API网关进行环境管理,因此并未考虑高可用、可扩展性、安全性等重要因素,故本示例的后端服务架构请勿做为您正式使用时的架构参考。

3.2 API后端配置

步骤1:在API网关控制台中创建API分组,进入 环境管理

步骤2:在 环境管理 中,在线上环境和测试环境中分别创建一个同名的变量(本例中为 backend-host ),但值的内容不同,分别对应本例中的两个ECS的公网地址。

步骤3:在此分组下创建API,略过API的其他定义,重点在定义API后端服务的页面中,在后端服务地址的位置填写变量名称,填写 http://#backend-host# 。

步骤4:完成其他API配置,注意需要发布到线上环境和测试环境中。

步骤5:为环境绑定域名。在API分组菜单中,进入绑定域名

步骤6:为测试环境和线上环境分别绑定两个域名,如下图所示。

3.3 使用域名访问

  • 线上环境调用。使用绑定好的线上域名进行调用,如下图所示:

  • 预发环境调用。使用绑定好的预发域名进行调用。

  • 测试环境调用。使用绑定好的测试域名进行调用,如下图所示:

注意:绑定环境的域名优先级大于 X-Ca-Stage,即在调用绑定环境的域名中,仍然在header中添加 X-Ca-Stage 信息,API网关会以域名的环境配置为准,如下图所示:

4. 函数计算后端+域名和X-Ca-Stage访问

4.1 API后端配置

API后端服务类型为函数计算时,可以使用两种环境变量的方式进行环境管理,更多函数计算的配置参考 创建后端为函数计算的API

  • 类似后端服务类型为VPC时的配置方式,环境变量可以配置在 服务名称函数名称 的位置,从而实现不同的API环境对应不同的函数计算后端;

  • 采用函数别名的方式。函数别名是函数计算版本管理的一个功能,可以为函数计算不同的服务版本创建不同的自定义名称,具体可以参考 别名操作。因此可以将环境变量的内容设置为不同的别名,从而实现由不同版本的函数来进行处理。

4.2 使用域名+X-Ca-Stage访问

如果想用同一个域名,通过X-Ca-Stage方式访问多套环境,需在API分组绑定域名时,可以按下图所示配置:

5. 使用限制

  • 环境变量的内容发生变化后,注意需要将分组内对应的API重新发布,环境变量才能生效。

  • 每个环境允许配置最多 50 个环境变量。