本文指导您如何使用API网关访问VPC内部的后端服务API,并详细说明如何运用阿里云APP认证中的AppCode来实现安全调用。
前提条件
创建VPC环境,可参见搭建IPv4专有网络和搭建IPv6专有网络。
创建ECS服务器,可参见创建ECS实例。
购买VPC环境的SLB、ECS,并搭建服务。
本例API网关的后端服务选择的是专有网络VPC的ECS实例,ECS中部署了Web服务,使用的是Nginx,端口使用的是80端口。
配置流程
使用API网关访问VPC内部的后端服务API,具体配置流程如下:
创建VPC授权
如果您想让API网关能够访问VPC,则需要创建VPC授权。
登录API网关控制台,选择地域并在左侧导航栏选择API管理 > VPC授权。
在授权列表页面,单击右上角创建授权。
在创建VPC授权页面,输入VPC授权名称、VPC Id、实例Id或地址、端口号。
说明若需要指定域名来访问SLB或ECS上的站点(vhost),可将域名配置到Host。
VPC Id、实例ID或私网地址可在后端服务(ECS、CLB等)实例详情中可以找到。
ALB网络类型必须为私网类型,并且创建后不可修改为公网类型,修改为公网类型后引起的网关请求失败,后果需自行承担。
创建分组
API分组是API的管理单元,因此需要先创建API分组,然后在分组下创建API。
登录API网关控制台,选择地域并在左侧导航栏选择API管理 > 分组管理,单击右上角创建分组。
在创建分组弹框页面,选择实例,输入分组名称为
nginx-demo
,BasePath为/
,单击确定。
在分组列表查看创建的分组,点击分组名称可以进入到分组详情页,进行绑定域名、修改基本信息、变更分组实例等操作。
API分组会自动分配公网二级域名,此二级域名仅供调试使用,如果直接访问此域名,每天有1000次的限制(海外Region及中国香港限制100次/天)。因此建议为分组绑定自己的独立域名后使用。
创建API
登录API网关控制台,选择地域并在左侧导航栏选择API管理 > 分组管理。
在分组列表页面下,单击所创建的
nginx-demo
分组操作列下的API管理。在API列表页面,单击右上角创建API。
在创建API页面的基本信息栏,配置如下信息,单击下一步。
配置项
示例值
分组
nginx-demo
API名称
nginx-test
安全认证
阿里云APP
AppCode认证
允许APPcode(header&Query)认证
签名算法
HMAC_SHA256
在定义API请求栏,配置如下信息,单击下一步。
配置项
示例值
协议
HTTP,HTTPS。
请求Path
/nginx
HTTP Method
GET
入参请求模式
入参透传
说明定义client端(如浏览器、手机APP或其他的业务系统)如何请求您的API,需要确定的内容包括请求协议、请求Path、HTTP Method、入参请求模式、和入参定义。在本例中,入参请求方式选择入参透传,表示客户端发送过来的参数API网关不做处理,直接透传给后端VPC。
在定义API后端服务栏,配置如下信息,单击下一步。
配置项
示例值
后端配置
选择自定义后端服务
后端服务类型
选择VPC
VPC授权名称
***-microservice
后端请求Path
/
HTTP Method
GET
后端超时
10000
说明本步骤是定义API网关收到client端的请求后,如何参数映射以及连接哪个后端地址。本例中的后端服务类型选择VPC,选择前面步骤中创建的VPC授权或手动输入VPC授权名称,然后填写后端请求path。
在定义返回结果栏,单击创建。
说明本步骤用于API帮助文档的自助生成,帮助API使用者更好地理解。可以设置返回ContentType、返回结果示例和失败返回结果示例。本例中不涉及到这部分,因此可以点击创建按钮。
在创建成功之后弹框中单击发布。
在发布弹框中发布的环境选择线上,输入请填写变更备注,单击发布。
说明对API进行过修改后,都需要发布到对应的环境(API网关内置了三个环境:"线上"、"预发"、"测试")中,新配置才能生效。
创建应用和API授权
应用(APP)是调用API服务时的身份。在本例创建API时,认证方式选择的是“阿里云APP认证”,因此在API发布后,还需要创建APP,并将APP和API的对应关系建立好,才能够正常访问。
创建应用
登录API网关控制台,选择地域并在左侧导航栏选择API调用 > 应用管理。
在应用与授权页面,单击右上角创建APP。
在创建应用页面,输入应用名称,单击确定。
在应用与授权页面,单击已创建好的应用名称,进入应用详情页面,可以看到阿里云APP下有两种认证方式,AppKey和AppCode。本例中我们选择使用APPCode的方式进行简单认证。关于阿里云APP的更多描述可见此文档使用简单认证(AppCode)方式调用API。
对API进行授权
登录API网关控制台,选择地域并在左侧导航栏选择API管理 > API列表。
在API列表页面,找到已创建好的
nginx-test
API,单击操作列> 授权。在授权页面,选择选择要授权的环境为线上。搜索之前创建的应用,单击添加并确定,提示授权成功,即成功授权。
安全组放行网关出口地址
若您的ECS安全组没有对相应的端口放行所有网段,那么就需要您在安全组中放行API网关的出口地址,避免安全组拦截。 网关的出口IP为API分组所在的实例的出口地址。
调试API
API网关提供了在线调试的功能,因此建议在API网关上完成API配置之后,可以先通过此功能确认API是否配置成功,然后再通过client端进行调用。
登录API网关控制台,在左侧导航栏选择API调用 > 调式。
在调试页面选择,所创建的
nginx-test
API,验证方式选择使用AppCode,然后单击发送请求,即可看到如下图信息说明配置成功。
调用API
可参考文档客户端调用API。
如果域名没有指定环境,调用API时,默认是调用线上环境的API。关于API环境,详情可参考环境管理。
本文主要的目的是快速入门,并未考虑后端的高可用,若您有需求可参考使用VPC内资源作为API的后端服务。