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