本文将快速引导您如何在API网关中对接函数计算服务(Web函数),以及如何使用阿里云APP认证中的AppCode进行调用。
配置流程
您需要依次完成以下步骤:
创建Web函数
在配置API网关前,需要先在函数计算中创建一个Web函数,可参见创建Web函数。
重要创建函数计算服务(Web函数)的地域与API网关实例地域相同,且使用的函数代码运行环境是Java8,代码上传方式是使用示例代码。
在函数创建成功后进入函数详情页,单击配置栏,在左侧导航栏选择触发器,在目标触发器的配置信息列处复制触发器的内网访问地址
https://***-helloworld-**.cn-hangzhou.fcapp.run
。
创建后端服务
API网关允许将后端服务配置为region内的资源,简化管理流程。您只需在API网关控制台新建后端服务,并在其环境中配置不同的后端服务地址。随后,在创建API时,直接选用已配置的后端服务即可。
创建分组
API分组是API的管理单元,因此需要先创建API分组,然后在分组下创建API。
登录API网关控制台,选择地域并在左侧导航栏选择API管理 < 分组管理,单击右上角创建分组。
在创建分组弹框页面,选择实例,输入分组名称为
FC-Group
,BasePath为/
,单击确定。说明API网关的分组需要和函数计算处于同一地域。
创建API
登录API网关控制台,选择地域并在左侧导航栏选择API管理 > 分组管理。
在分组列表页面下,单击所创建的
FC-test
分组操作列下的API管理。在API列表页面,单击右上角创建API。
在创建API页面的基本信息栏,配置如下信息,单击下一步。
配置项
示例值
分组
FC-Group
API名称
FC-test
安全认证
阿里云APP
AppCode认证
允许APPcode(header&Query)认证
签名算法
HMAC_SHA256
在定义API请求栏,配置如下信息,单击下一步
在定义API后端服务栏,配置如下信息,单击下一步。
配置项
示例值
后端配置
选择使用已有的后端服务
后端服务类型
函数计算
产品版本
函数计算3.0
函数类型
HTTP函数
后端服务
FC-backend
后端请求Path
/
HTTP Method
GET
后端超时
10000
说明定于API网关收到客户端的请求后,进行何种参数映射、处理,以及连接哪个后端地址。本例中的后端服务类型选择函数计算,选择后端服务。
在定义返回结果栏,单击创建。
在创建成功之后弹框中单击发布。
在发布弹框中发布的环境选择线上,输入请填写变更备注,单击发布。
创建应用和API授权
应用(APP)是调用API服务时的身份。在本例创建API时,认证方式选择的是阿里云APP认证,因此在API发布后,还需要创建APP,并将APP和API的授权关系建立好,才能够正常访问。
创建应用
登录API网关控制台,选择地域并在左侧导航栏选择API调用 > 应用管理。
在应用与授权页面,单击右上角创建APP。
在创建应用页面,输入应用名称为
fcAPP
,单击确定。在应用与授权页面,单击已创建好的
fcApp
应用名称,进入应用详情页面,可以看到阿里云APP下有两种认证方式,AppKey
和AppCode
。AppKey
方式有一组AppKey
和AppSecret
,您可以理解为账号密码,调用API的时候需要将AppKey
做为参数传入,AppSecret
用于签名计算,网关会校验这对密钥对您进行身份认证。
对API进行授权
登录API网关控制台,选择地域并在左侧导航栏选择API管理 > API列表。
在API列表页面,找到已创建好的
FC-test
API,单击操作列> 授权。在授权页面,选择选择要授权的环境为线上。搜索之前创建的应用,单击添加并确定,提示授权成功,即成功授权。
调试API
API网关提供了在线调试的功能,因此一般建议在API网关上完成API配置之后,先通过此功能确认API是否配置成功,然后再通过客户端进行调用。
登录API网关控制台,在左侧导航栏选择API调用 > 调试。
在调试页面选择,所创建的
FC-test
API,验证方式选择使用AppCode,然后单击发送请求,即可看到如下图信息说明配置成功。
调用API
您已经创建API、创建APP、建立了授权关系,调试API完成,并将API发布到线上环境,下面介绍如何使用APPCode的认证方式来在您的业务系统中调用发布好的API。可参考使用简单认证(AppCode)方式调用API了解更多,本例中使用curl进行调用。
curl -i -X GET "http://fd6f8e2b7bf44ab181a56****-cn-hangzhou.alicloudapi.com" -H "Authorization:APPCODE 7d2b7e4945ce44028ab00***"
执行效果如下图所示: