Skip to main content

自定义函数

功能简介

自定义函数为千帆 aPaaS 中表达式功能的高级扩展功能,允许用户自行编写函数执行逻辑,使其满足特定使用场景。

使用场景

用户设计的自定义函数可使用在“流程编排/表达式”节点中。

用户授权开通自定义函数功能

由于自定义函数为高级扩展功能,默认为不开通状态,需要用户手动开通该功能。该功能目前为免费功能,后续会根据实际使用量进行费用计算。

  1. 登录 千帆 aPaaS 设计态首页,单击【应用设置】,再单击“应用设置”页左侧导航栏中的【自定义函数】。
  2. 授权云函数服务操作云资源权限:
  • 单击【自定义函数】。 img
  • 此时系统首先判断用户是否授权“云函数服务操作 COS/CMQ/CLS/APIGE 等云资源权限”,如果用户未授权过该权限,则会弹出引导授权弹窗。如果用户曾授权过该权限则不会看到该弹窗提示。 img
  • 单击【前往访问管理】,此时页面会跳转到访问管理页面。 img
  • 单击【同意授权】即可完成“云函数服务操作 COS/CMQ/CLS/APIGE 等云资源权限”授权操作,此时会弹出二次身份验证弹窗,需要用户使用手机微信扫描二维码进行身份验证。 img
  • 完成身份验证后,页面会自动跳转回千帆 aPaaS 产品页面。
  1. 授权千帆 aPaaS 访问云函数权限:
  • 当用户完成授权1-1操作后,自定义函数页面会展示引导用户进行下一步授权内容,用户单击【前往访问管理】,页面会跳转到角色管理页面。 img
  • 用户单击【同意授权】,即可完成全部授权过程,随后页面会自动跳转回千帆 aPaaS 产品页面。 img

函数列表

登录 千帆 aPaaS 设计态首页,单击【应用设置】,再单击“应用设置”页左侧导航栏中的【自定义函数】,用户完成授权后即可查看函数列表页面。 img

函数创建

  1. 登录 千帆 aPaaS 设计态首页,单击【应用设置】,再单击“应用设置”页左侧导航栏中的【自定义函数】进入自定义函数管理页。
  2. 单击【新建】。 img
  3. 在弹出的新建函数表单中填写表单信息,并单击【确定】提交后即可创建一个函数。 img

属性说明

属性说明
函数名称必填属性,要求在同一个应用中不能重复
语言必填属性,目前支持 Python3.6、Nodejs12.16 两种
函数描述非必填属性,函数的说明信息

此时创建的函数为初始创建阶段,并不能在其他组件中直接使用,还需进行函数的参数设置及代码的编写。

函数基本信息修改

  1. 登录 千帆 aPaaS 设计态首页,单击【应用设置】,再单击“应用设置”页左侧导航栏中的【自定义函数】进入自定义函数管理页。
  2. 单击函数列表中的“函数名称”,进入函数基本信息页面。 img
  3. 单击右上角【编辑】,弹出编辑函数弹窗。 img
  4. 修改函数描述信息,并单击【确认】,完成函数基本信息修改。

    函数基本信息修改目前仅支持对函数描述的修改。

函数代码管理

  1. 登录 千帆 aPaaS 设计态首页,单击【应用设置】,再单击“应用设置”页左侧导航栏中的【自定义函数】进入自定义函数管理页。
  2. 单击函数列表“操作"列,再单击【代码管理】进入函数代码页。函数代码页中,区域1为函数入参设置区域,区域2为函数返回值类型设置区域,区域3为编辑函数代码的在线 IDE。 img
  3. 设置函数参数:如需设置函数的请求参数,只要在区域1单击右上角的【编辑】即可弹出参数设置弹窗,依次设置所需参数信息即可,后续可对参数进行修改。 img

属性说明

属性说明
参数必填属性,作为函数的输入变量,可以在自定义函数中直接使用
类型必填属性,目前执行类型如下:
  • number:数值类型,可以是整数也可以是实数

  • object:对象类型

  • boolean:布尔类型

  • dateTime:日期时间类型

  • collection:集合类型

  • stringLiteral:文本类型
  • 说明非必填属性,对于参数的解释说明

    参数名称及类型请谨慎设置,参数类型会在函数调用方进行校验,参数名称会在函数代码内引用。

    1. 设置函数返回值类型,目前仅支持“object”类型。
    2. 编写函数内容。 img

      函数代码开发说明参见 代码开发

    3. 编写完函数内容后,键盘输入 Ctrl+S 保存代码,此时函数状态变更为“编辑中”。 img
    4. 在线 IDE 右上角的部署按钮,此时函数状态会变更为“部署成功”。 img

      只有函数状态为部署成功的函数才可以被其他组件所使用。

    函数删除

    登录 千帆 aPaaS 设计态首页,单击【应用设置】,再单击“应用设置”页左侧导航栏中的【自定义函数】进入自定义函数管理页,在函数列表操作列单击【删除】。 img

    代码开发

    NodeJS

    目前 NodeJS 支持版本为12.16。

    函数形态

    Node.js 函数形态一般如下所示:

    module.main_handler = async (event, context) => {
        console.log(event);
        return { code:0 };
    }
    

    入参

    Node.js 环境下的入参包括 event、context。

    • event:使用此参数传递触发事件数据,也就是在函数参数设置中添加的参数都可以从该对象中取出。
    • context:使用此参数向您的处理程序传递运行时信息。

    返回

    在函数内部可使用 return 关键字进行返回,可直接使用 return object 来返回一个对象或值。

    依赖安装

    1. 开启自动安装依赖功能。
    2. 单击在线 IDE 右上角下拉箭头,再次单击【自动安装依赖:关闭】,此时该按钮会变为【自动安装依赖:打开】。 imgimg
    3. 在工程根目录创建 package.json 文件。 img
    4. 在 package.json 中添加所需依赖项。
    {
        "dependencies": {
            "lodash": "4.17.15"
        }
    }
    
    1. 单击【部署】,在线 IDE 会根据 package.json 自动安装依赖。

    Python

    目前 Python 支持版本为3.6。

    函数形态

    Python 函数形态一般如下所示:

    import json
    def main_handler(event, context):
      print("Received event: " + json.dumps(event, indent = 2))
      print("Received context: " + str(context))
      return("Hello World")
    

    入参

    Python 环境下的入参包括 event 和 context,两者均为 Python dict 类型。

    • event:使用此参数传递触发事件数据,也就是在函数参数设置中添加的参数都可以从该对象中取出。
    • context:使用此参数向您的处理程序传递运行时信息。

    返回

    您的处理程序可以使用 return 来返回值,根据调用函数时的调用类型不同,返回值会有不同的处理方式。在 Python 环境下,您可以直接返回一个可序列化的对象。例如:返回一个 dict 对象:

    def main_handler(event, context):
      resp = {
          "isBase64Encoded": false,
          "statusCode": 200,
          "headers": {"Content-Type":"text/html","Key":["value1","value2","value3"]},
          "body": "<html><body><h1>Heading</h1><p>Paragraph.</p></body></html>"
      }
      return(resp)
    

    依赖安装

    Python 可以通过 pip3 包管理器进行依赖管理。

    操作步骤

    1. 在 requirements.txt 中配置依赖信息。
    2. 通过在线 IDE 的终端进入代码目录,然后执行“pip install -r requirements.txt -t .”命令安装依赖包。通过使用“-t .”参数,可以指定依赖包安装在当前目录下。 img