创建使用自定义认证且后端为FunctionGraph的API 创建自定义认证 在APIG中创建自定义认证,对接前端自定义认证的函数。 1. 选择已创建的APIG专享版实例,并在航栏选择“API管理 > API策略”,在“自定义认证”页签下,单击“创建自定义认证”,弹出“创建自定义认证”对话框。 2. 配置自定义认证基础信息,如下图所示。 1. 认证名称:输入您自定义的名称,例如Authorizertest。 2. 类型:选择“前端”。 3. 函数地址:请选择用于前端自定义认证的函数apigtest。 3. 完成后单击“确定”,完成自定义认证的创建。 创建后端业务函数 API网关(APIG)支持选择FunctionGraph作为后端服务类型,当请求设置函数工作流为后端服务的API时,API网关会触发相应的函数,函数工作流会将执行结果返回给API网关(APIG)。 1. 创建函数方法与上述创建自定义认证函数相同,只需修改函数名称,避免名称重复。 2. 在函数详情页的“代码”页签,进行代码在线编辑,并传入如下所示的代码,完成后单击“部署”,更新函数。 coding:utf8 import json def handler (event, context): body " Functiongraph Demo Hello, FunctionGraph! " print(body) return { "statusCode":200, "body":body, "headers": { "ContentType":"text/html", }, "isBase64Encoded":False } 请求参数代码定义示例 在FunctionGraph中开发函数,以python2.7语言为例,函数代码需要满足如下条件。函数有明确的接口定义,如下所示: 1. def handler (event, context) 1. 入口函数名(handler):入口函数名称,需和函数执行入口处用户自定义的入口函数名称一致。 2. 执行事件(event): 函数执行界面由用户输入的执行事件参数,格式为JSON对象。 3. 上下文环境(Context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明,详情请参见《函数工作流(FunctionGraph) 用户指南》的“Python > 开发事件函数”章节。 2. 执行事件(event)支持三种请求参数定义,格式为: 1. Header中的请求参数:event["headers"]["参数名"] 2. Query中的请求参数:event["queryStringParameters"]["参数名"] 3. 您自定义的用户数据:event["userdata"] 3. 函数代码获取的三种请求参数与API网关自定义认证中的参数关系如下所示: 1. Header中的请求参数:对应自定义认证中参数位置为Header的身份来源,其参数值在您调用使用该前端自定义认证的API时传入 2. Query中的请求参数:对应自定义认证中参数位置为Query的身份来源,其参数值在您调用使用该前端自定义认证的API时传入 3. 您自定义的用户数据:对应自定义认证中的用户数据,其参数值在您创建自定义认证时输入 4. 函数的返回值不能大于1M,必须满足如下格式: { "statusCode":200, "body":"{"status": "allow", "context":{"user": "abc"}}" } 其中,body字段的内容为字符串格式,json解码之后为: { "status":"allow/deny", "context": { "user": "abc" } } “status”字段为必选,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。“context”字段为可选,只支持字符串类型键值对,键值不支持JSON对象或数组。context中的数据为您自定义的字段,认证通过后作为认证参数映射到API网关后端参数中,其中context中的参数名称与系统参数名称必须完全一致,且区分大小写,context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1 ~ 32个字符。