本文介绍在函数计算中如何通过VPC访问API网关,包括两种情况:在同一Region,以及在跨Region情况下如何访问。

1 概述

API网关即能够和函数计算集成,构建起serverless架构,同时在实际场景中,也会出现在函数中需要调用API网关上发布的API,同时很多时候出于安全考虑,往往会希望函数从内网能够访问API。因此本文着重介绍两个场景的实现方式:

  • 在同一Region内,函数计算如何内网访问API网关
  • 跨Region情况下,函数计算如何内网访问API网关

无论是哪种场景,主要的配置原则如下:

  • 需要基于VPC实现内网访问;
  • API网关的内网访问,需要设定一个VPC允许API网关接入,具体过程详见 VPC访问API网关
  • 函数计算的内网访问,也需要通过VPC实现,具体过程详见 配置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功能

在专有网络配置中,专有网络选择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网关专享实例。