本文介绍在函数计算中如何通过VPC访问API网关,包括两种情况:在同一Region,以及在跨Region情况下如何访问。
1 概述
API网关即能够和函数计算集成,构建起serverless架构,同时在实际场景中,也会出现在函数中需要调用API网关上发布的API,同时很多时候出于安全考虑,往往会希望函数从内网能够访问API。因此本文着重介绍两个场景的实现方式:
在同一Region内,函数计算如何内网访问API网关
跨Region情况下,函数计算如何内网访问API网关
无论是哪种场景,主要的配置原则如下:
需要基于VPC实现内网访问;
API网关的内网访问,需要设定一个VPC允许API网关接入,具体过程详见 VPC访问API网关;
函数计算的内网访问,也需要通过VPC实现,具体过程详见 配置网络 。
2 场景1 同一Region内访问
步骤1: 准备工作
构建如下图所示的结构:
说明:
在上海Region内创建2个VPC,分别为vpc-api-access和vpc-backend-1;
在上海Region内创建了1个API网关专享实例;
在vpc-backend-1中,创建一个ECS实例做为API网关的后端服务,此ECS实例提供了HTTP服务接口可对外访问,且对外可以访问的HTTP服务地址为 http://localhost:8080/web/cloudapi 。同时为此ECS实例也设置了对应的安全组,允许API网关的访问。
步骤2:配置后端服务类型为VPC的API
此步骤的详细过程可参见使用VPC内资源作为API的后端服务,配置要点如下:
创建VPC授权,创建成功后如下图所示:
创建后端服务为VPC的API,为了方便后续的调用测试,API使用无认证方式,如下图所示:
API保存完后,需要进行发布,本例为了测试方便,发布到“线上”环境。
步骤3:配置VPC到API网关的内网访问权限
在专享实例页面。点击“入访VPC”后的选择VPC,选择vpc-api-access的vpc id,表示可以通过vpc-api-access内网访问到API网关。
步骤4:开通API分组的内网域名
在分组详情页面,开通内网二级域名,点击开通后,API网关会给分组分配一个内网VPC二级域名。该域名可以直接调用该分组下的API。
注意:API分组默认开通互联网访问,您可以根据业务情况通过关闭公网二级域名来停止互联网访问,但注意禁止后,将不能通过API网关控制台进行在线调试。
步骤5:新建函数
在函数计算中,创建应用,并创建运行环境为python的函数,函数内容如下所示:
函数中仅是使用curl去访问VPC二级域名下的API,如果此时执行,将无法访问。
步骤6:配置函数计算的VPC访问
首先需要在vpc-api-access中再创建一个vswitch,用于函数计算的接入,如下图所示:
其次在函数计算控制台中,在上一步骤中新建应用的配置服务菜单中进行配置,具体过程以函数计算的文档为准 配置网络。
在专有网络配置中,专有网络选择vpc-api-access,交换机选择本步骤创建的vswitch。
权限配置中,需要新增一个角色,系统模板授权选择AliyunECSNetworkInterfaceManagementAccess,按控制台操作向导执行完后如下图所示:
步骤7:执行函数进行测试
执行后可以看到函数计算已经可以通过VPC二级域名访问到API。
3 场景2 跨Region访问
步骤1: 准备工作
构建如下图所示的结构:
说明:
张家口Region内,创建1个函数计算应用,用于本例中发起API调用请求;创建1个VPC(vpc-fc-access),用于帮助函数计算接入云企业网(CEN);
上海Region内,1个API网关专享实例;同时1个VPC(vpc-api-access),用于帮助API网关接入云企业网(CEN);
上海Region内,创建VPC(vpc-backend-1),并创建一个ECS实例做为API网关的后端服务,此ECS实例提供了HTTP服务接口可对外访问,且对外可以访问的HTTP服务地址为 http://localhost:8080/web/cloudapi 。同时为此ECS实例也设置了对应的安全组,允许API网关的访问。
步骤2:创建云企业网
首先创建一个云企业网(CEN),打通上海VPC(vpc-api-access)和张家口的VPC(vpc-fc-access),实现内网互通。关于CEN的更多配置方式,请详见云企业网帮助文档 。先通过 云企业网控制台 创建一个云企业网实例,多次加载网络实例,将vpc-api-access,vpc-fc-access都添加到云企业网中,完成后如下图所示。
步骤3:配置带宽
购买一个带宽包,作为云企业网内通信需要。本例购买了一个最低的2M的带宽,您可以根据实际需要按需购买。
配置跨地域带宽设置,指定的互通地域配置带宽值,还可以将1个带宽包拆分到多个互通地域中。
步骤4:配置跨VPC路由
本步骤需要给CEN团队提工单。注意按照 ResolveAndRouteServiceInCen 接口的参数说明,提供配置信息。打通API网关和张家口VPC的互通。
AccessRegionIds.1=cn-zhangjiakou
AccessRegionIds.2=cn-shanghai
CenId=cen-uggzcthgz7cwsl7prr #云企业网的实例ID
Host=100.104.255.128/26 #通过API网关专享实例内网VPC出口地址
HostRegionId=cn-shanghai
HostVpcId=vpc-uf65amr4k3aepd0u4gnxa #API网关在上海region,这个是vpc-api-access的VPCID
其中API网关专享实例接入内网VPC的出口地址,可以在实例管理中查询到,如下图所示
工单回复配置完成后,在云企业网控制台查看配置的路由,能看到上海和张家口region都加了一些路由策略。而且都有一条自定义路由,是根据上面提供的信息添加的。
步骤5:配置后端服务类型为VPC的API
同 场景1 中的 步骤2:配置后端服务类型为VPC的API。
步骤6:配置VPC到API网关的内网访问权限
同 场景1 中的 步骤3:配置VPC到API网关的内网访问权限。
步骤7:开通API分组的内网域名
同 场景1 中的 步骤4:开通API分组的内网域名。
步骤8:新建函数
在张家口Region的函数计算中,创建应用,并创建运行环境为python的函数,函数内容如下所示:
步骤9:配置函数计算的VPC访问
与 场景1 的 步骤6:配置函数计算的VPC访问类似,在vpc-fc-access中新建一个vswitch,然后在函数计算控制台中的配置服务菜单中进行配置。
步骤10:执行函数进行测试
执行后可以看到函数计算已经可以通过VPC二级域名访问到API。
4 使用限制
仅限API网关专享实例。