通过API网关访问VPC内部的后端服务

本文指导您如何使用API网关访问VPC内部的后端服务API,并详细说明如何运用阿里云APP认证中的AppCode来实现安全调用。

前提条件

说明
  • 购买VPC环境的SLB、ECS,并搭建服务。

  • 本例API网关的后端服务选择的是专有网络VPC的ECS实例,ECS中部署了Web服务,使用的是Nginx,端口使用的是80端口。

配置流程

使用API网关访问VPC内部的后端服务API,具体配置流程如下:

创建VPC授权

如果您想让API网关能够访问VPC,则需要创建VPC授权。

  1. 登录API网关控制台,选择地域并在左侧导航栏选择API管理 > VPC授权

  2. 授权列表页面,单击右上角创建授权

  3. 创建VPC授权页面,输入VPC授权名称VPC Id实例Id或地址端口号

    image

    说明
    • 若需要指定域名来访问SLB或ECS上的站点(vhost),可将域名配置到Host。

    • VPC Id、实例ID或私网地址可在后端服务(ECS、CLB等)实例详情中可以找到。

重要

ALB网络类型必须为私网类型,并且创建后不可修改为公网类型,修改为公网类型后引起的网关请求失败,后果需自行承担。

创建分组

API分组是API的管理单元,因此需要先创建API分组,然后在分组下创建API。

  1. 登录API网关控制台,选择地域并在左侧导航栏选择API管理 > 分组管理,单击右上角创建分组

  2. 创建分组弹框页面,选择实例,输入分组名称nginx-demoBasePath/,单击确定

    image

说明
  • 分组列表查看创建的分组,点击分组名称可以进入到分组详情页,进行绑定域名修改基本信息变更分组实例等操作。

  • API分组会自动分配公网二级域名,此二级域名仅供调试使用,如果直接访问此域名,每天有1000次的限制(海外Region及中国香港限制100次/天)。因此建议为分组绑定自己的独立域名后使用。

创建API

  1. 登录API网关控制台,选择地域并在左侧导航栏选择API管理 > 分组管理

  2. 分组列表页面下,单击所创建的nginx-demo分组操作列下的API管理

  3. API列表页面,单击右上角创建API

  4. 创建API页面的基本信息栏,配置如下信息,单击下一步

    配置项

    示例值

    分组

    nginx-demo

    API名称

    nginx-test

    安全认

    阿里云APP

    AppCode认证

    允许APPcode(header&Query)认证

    签名算法

    HMAC_SHA256

    image

  5. 定义API请求栏,配置如下信息,单击下一步

    配置项

    示例值

    协议

    HTTP,HTTPS。

    请求Path

    /nginx

    HTTP Method

    GET

    入参请求模式

    入参透传

    image

    说明

    定义client端(如浏览器、手机APP或其他的业务系统)如何请求您的API,需要确定的内容包括请求协议、请求Path、HTTP Method、入参请求模式、和入参定义。在本例中,入参请求方式选择入参透传,表示客户端发送过来的参数API网关不做处理,直接透传给后端VPC。

  6. 定义API后端服务栏,配置如下信息,单击下一步

    配置项

    示例值

    后端配置

    选择自定义后端服务

    后端服务类型

    选择VPC

    VPC授权名称

    ***-microservice

    后端请求Path

    /

    HTTP Method

    GET

    后端超时

    10000

    image

    说明

    本步骤是定义API网关收到client端的请求后,如何参数映射以及连接哪个后端地址。本例中的后端服务类型选择VPC,选择前面步骤中创建的VPC授权或手动输入VPC授权名称,然后填写后端请求path。

  7. 定义返回结果栏,单击创建

    image

    说明

    本步骤用于API帮助文档的自助生成,帮助API使用者更好地理解。可以设置返回ContentType、返回结果示例和失败返回结果示例。本例中不涉及到这部分,因此可以点击创建按钮。

  8. 在创建成功之后弹框中单击发布

    image

  9. 在发布弹框中发布的环境选择线上,输入请填写变更备注,单击发布

    image

    说明

    对API进行过修改后,都需要发布到对应的环境(API网关内置了三个环境:"线上"、"预发"、"测试")中,新配置才能生效。

创建应用和API授权

应用(APP)是调用API服务时的身份。在本例创建API时,认证方式选择的是“阿里云APP认证”,因此在API发布后,还需要创建APP,并将APP和API的对应关系建立好,才能够正常访问。

创建应用

  1. 登录API网关控制台,选择地域并在左侧导航栏选择API调用 > 应用管理

  2. 应用与授权页面,单击右上角创建APP

  3. 创建应用页面,输入应用名称,单击确定

    image

  4. 应用与授权页面,单击已创建好的应用名称,进入应用详情页面,可以看到阿里云APP下有两种认证方式,AppKey和AppCode。本例中我们选择使用APPCode的方式进行简单认证。关于阿里云APP的更多描述可见此文档使用简单认证(AppCode)方式调用API

    创建应用

对API进行授权

  1. 登录API网关控制台,选择地域并在左侧导航栏选择API管理 > API列表

  2. 在API列表页面,找到已创建好的nginx-testAPI,单击操作image> 授权

  3. 在授权页面,选择选择要授权的环境线上。搜索之前创建的应用,单击添加确定,提示授权成功,即成功授权。

    授权

安全组放行网关出口地址

若您的ECS安全组没有对相应的端口放行所有网段,那么就需要您在安全组中放行API网关的出口地址,避免安全组拦截。 网关的出口IP为API分组所在的实例的出口地址。

  1. 登录API网关控制台,在左侧导航栏选择API管理 > 分组管理,在分组列表页面,单击所创建的目标API分组名称。

  2. 分组详情页面,查看分组所在的实例类型

  3. 在左侧导航栏选择实例与集群,单击实例类型,找到对应实例查看到出口地址信息。

    image

  4. 登录ECS控制台,在左侧导航栏选择实例与镜像 > 实例 。单击所创建的ECS实例,进入详情页面,选择安全组栏,单击安全组名称,在安全组详情页面,选择入方向 > 快速添加,配置网关的出口地址。

    image

调试API

API网关提供了在线调试的功能,因此建议在API网关上完成API配置之后,可以先通过此功能确认API是否配置成功,然后再通过client端进行调用。

  1. 登录API网关控制台,在左侧导航栏选择API调用 > 调式

  2. 在调试页面选择,所创建的nginx-testAPI,验证方式选择使用AppCode,然后单击发送请求,即可看到如下图信息说明配置成功。

    image

调用API

可参考文档客户端调用API

说明
  • 如果域名没有指定环境,调用API时,默认是调用线上环境的API。关于API环境,详情可参考环境管理

  • 本文主要的目的是快速入门,并未考虑后端的高可用,若您有需求可参考使用VPC内资源作为API的后端服务