更新时间:2026-01-09 GMT+08:00

函数管理

函数是实现某一功能所需代码、运行时、资源、设置的组合,是可以独立运行的最小单元。函数通过Trigger触发,自行调度所需资源及环境,实现预期功能。

引入函数应用概念,用户可以按照业务逻辑在创建函数的时候创建函数应用,在相应函数应用下创建多个函数,方便管理跟业务相关的一组函数。

函数在线编辑

用户在编辑函数代码时支持类似工程方式的管理,可以创建文件、文件夹并对其进行编辑。如果用户代码是上传zip包的方式,则前端进行相应解压展示,并支持用户在线编辑修改。函数在线编辑主要功能如表1所示。

表1 函数在线编辑主要功能说明

功能

说明

文件

创建文件和文件夹功能。其中包括新建文件,模板新建文件、关闭所有文件等功能。

编辑

代码编辑功能。其中包括撤销、编辑行、注释等功能。

查找

查找和替换功能。

转到

跳转功能。可以跳转到行、括号、问题等。

查看

查看功能。可以查看所有命令菜单,更换主题等。

测试

在线测试函数,显示函数返回、执行摘要和日志。

  • 对于Java runtime,由于Java是编译型语言,所以不能在线编辑代码。如果函数没有引入其他第三方件,可以选择上传函数jar包。如果函数中引入其他三方件,则需要制作包含所有依赖三方件和函数jar的zip包,选择上传zip文件。
  • 对于Go runtime,必须在编译之后打zip包,编译后的动态库文件名称必须与函数执行入口的插件名称保持一致,示例:动态库名称为function.so,表2中的“函数执行入口”命名为function.Handler。
  • 制作ZIP包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。
  • 函数在线编辑详情请参考CloudIDE在线使用方法

修改函数代码

函数创建以后,默认版本为latest版本,每个函数都有一个latest版本,对函数的修改只能在latest版本上操作。

  1. 登录FunctionGraph控制台,进入“函数”界面。
  2. 在“函数”界面,选择“函数列表”,单击函数名称,进入函数详情界面。
  3. (可选)在函数详情界面,选择latest版本。
  4. 在“代码”和“设置”页签下,可以修改如表2表3所示信息。

    表2 代码配置信息表

    参数

    说明

    函数执行入口

    • 对于Node.js和Python函数,命名规则:[文件名].[函数名],必须包含“. ”。填写myfunction.handler,则表示函数的文件名为myfunction.js(运行时为Python和Java时则为myfunction.py和myfunction.java),执行的入口函数名为handler。
    • 对于Java函数,命名规则:对于Java函数,规则为[包名].[文件名].[函数名],示例:com.xxxxx.exp.Myfunction.myHandler
    • 对于Go函数,命名规则为:[插件名].[函数名],函数名首字母为大写,总字符不超过128个字符。示例:function.Handler。
    • 对于C#函数,命名规则为:[应用程序的.NET程序集文件的名称]::[入口执行函数所在的namespace和class名称]::[入口执行函数名称],示例:HelloCsharp::Example.Hello::Handler。
    • 仓颉函数执行入口的命名规则:[动态依赖库名].so,不超过128字符。

      例如:libuser_func_test_success.so。

    函数初始化入口

    在函数代码配置页面中,可以选择开启函数初始化功能。各runtime的函数初始化入口命名规范与原有函数执行入口保持一致。如Node.js和Python函数,命名规则:[文件名].[初始化函数名]。

    说明:

    如不开启函数初始化功能则无需配置函数初始化入口。创建初始化函数请参考初始化函数

    代码依赖包

    在依赖包管理模块中,用户可以将函数依赖的第三方软件包通过本地上传,也可以将软件包上传到obs服务上,以obs地址的形式上传依赖,请参考引入依赖库

    说明:

    除了用户自己维护的依赖包(私有依赖包)以外,FunctionGraph还提供了一些常见的公共依赖包,用户可以直接选择使用。

    代码上传方式

    操作说明如表3所示。

    表3 函数代码上传方式表

    运行时

    代码上传方式

    操作

    Node.js

    在线编辑

    在编码框在线编辑代码,相关功能如表4所示。

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50M,如超过50M,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    Python

    在线编辑

    在编码框在线编辑代码,相关功能如表4所示。

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50M,如超过50M,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    Java

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50M,如超过50M,请使用OBS。

    上传JAR包

    单击“选择文件”,上传本地JAR包至平台。上传的JAR文件大小限制为50MB,如超过50MB,先把JAR格式转换成ZIP格式后,再使用OBS上传。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    Go

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50MB,如超过50MB,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    C#(.NET Core)

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50MB,如超过50MB,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    PHP

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50MB,如超过50MB,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    定制运行时

    在线编辑

    在编码框在线编辑代码,相关功能如表1所示。

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50MB,如超过50MB,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    Cangjie

    上传ZIP文件

    单击“选择文件”,上传本地代码至平台。上传的zip文件大小限制为50MB,如超过50MB,请使用OBS。

    从OBS上传文件

    输入OBS链接URL,函数引用的代码必须是zip包。

    • 用Python语言写代码时,您自行创建的包名不能与Python标准库同名,否则会提示module加载失败。例如“json”、“lib”,“os”等。
    • 上传代码时,如果代码中包含敏感信息(如帐户密码等),请您自行加密,以防止信息泄露。
    表4 函数在线编辑主要功能说明

    功能

    说明

    文件

    创建文件和文件夹功能。其中包括新建文件,模板新建文件,新建文件夹,新建Python模块,关闭所有文件等功能。

    编辑

    代码编辑功能。其中包括撤销,恢复,剪切,编辑行、注释、折叠/展开以及排序等功能。

    查找

    查找和替换功能。

    转到

    跳转功能。可以跳转到行、括号、问题等。

    查看

    查看功能。可以查看所有命令菜单,更换主题等。

    测试

    在线测试函数,显示函数返回、执行摘要和日志。

    • 对于Java runtime,由于Java是编译型语言,所以不能在线编辑代码。如果函数没有引入其他第三方件,选择上传函数jar包。如果函数中引入其他三方件,则需要制作包含所有依赖三方件和函数jar的zip包,选择上传zip文件。
    • 对于Go runtime,必须在编译之后打zip包,编译后的动态库文件名称必须与函数执行入口的插件名称保持一致,示例:动态库名称为function.so,表2中的“函数执行入口”命名为function.Handler。
    • 制作ZIP包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。

  5. 单击“保存”,完成代码修改。

导出函数

FunctionGraph支持将已创建的函数及其代码和配置导出。

  1. 用户登录FunctionGraph控制台,进入“函数”界面,选择“函数列表”。
  2. 在函数列表单击函数名称,进入函数详情界面。
  3. 在函数详情界面,选择函数版本,单击操作列表中的“导出函数”,即可将该函数导出。

    • 同一时段单个用户只能并发导出一个函数。
    • 导出函数资源包大小50MB以内。
    • 导出的函数资源名称为函数名+函数代码的MD5值.zip。
    • 导出的函数资源中配置信息不包含别名信息。
    • 当函数被禁用/启用后,该函数下所有版本的函数都会被禁用/启用。

导入函数

FunctionGraph支持将函数配置信息和代码以zip包方式导入服务。

  1. 用户登录FunctionGraph控制台,进入“函数”界面。
  2. 在函数界面,单击“导入函数”,弹出导入函数界面。
  3. 在导入函数界面,选择所属应用,并上传函数zip包。

    上传函数zip包时,如果代码中包含敏感信息(如帐户密码等),请您自行加密,以防止信息泄露。

  4. 单击“确定”完成导入函数。

    • 同一时间段单个用户只能导入一个函数。
    • 导入的资源压缩包应包含Yaml配置文件和函数代码文件,必须是zip格式压缩文件,如图1所示,大小不超过10MB。
      图1 资源压缩包
    • 导入资源包中只能包含一个Yaml配置文件。
    • Yaml文件中字段校验方式与创建函数一致。
    • 函数代码文件是根据Yaml文件中的codeFilename字段查找。
    • Yaml文件中Resource下只能填写一个函数的相关信息。
    • 当有依赖包的时候,如果能从用户OBS中拉取到代码则导入成功,否则失败。
    • 用户可以将已经导出的函数资源包再次导入函数工作流服务,但要保证函数名称是唯一的,导入函数版本默认为“latest”。

    Yaml配置文件如下所示,详情说明如表5所示。

    HcCrmTemplateVersion: v2
    Resources:
      HelloWorld:
        Type: HC::Serverless::Function
        Properties:
          Handler: index.handler
          Runtime: Node.js6.10
          CodeType: inline
          CodeFileName: index.js
          DependencyPkg: ""
          Description: ""
          MemorySize: 128
          Timeout: 3
          Version: latest
          Environment:
            Variables: {}
    表5 yaml文件详情说明

    字段

    说明

    HcCrmTemplateVersion

    固定值“v2”

    Resources

    函数信息详情(以下所示内容)

    Type

    固定值“HC::Serverless::Function”

    Properties

    函数信息

    Handler

    函数执行入口

    Runtime

    函数运行环境

    CodeType

    代码类型(包括jar、zip、inline编辑)

    CodeFileName

    代码文件名

    DependencyPkg

    函数依赖包地址

    Description

    函数描述

    MemorySize

    函数内存

    Timeout

    函数执行超时时间

    Version

    函数版本号

    Environment

    用户环境变量

禁用函数

用户可以根据实际情况将函数禁用,禁用期间函数不能执行。

  1. 用户登录FunctionGraph控制台,进入“函数”界面。
  2. 选择“函数列表”单击要禁用的函数名称,进入“函数详情”界面。
  3. 单击“禁用函数”
  4. 单击“确定”,函数被禁用。

    • 只能禁用“latest”版本的函数,不能禁用已经发布的版本的函数。
    • 基于已禁用的“latest”版本重新发布新版本,发布后的新版本也处于禁用状态且不能启用。
    • 当函数处于禁用状态时可以修改代码,不能执行函数。

启用函数

用户可以根据实际情况将已禁用的函数重新启用。

  1. 用户登录FunctionGraph控制台,进入“函数”界面。
  2. 选择“函数列表”,单击要启用的函数名称,进入“函数详情”界面。
  3. 单击“启用函数”,函数被启用。

删除函数

对于已经不再使用的函数,可以进行删除操作,及时释放资源。

  1. 用户登录FunctionGraph控制台,进入“函数”界面。
  2. 在“函数列表”中,单击待删除函数所在行右侧的“删除”,然后输入“DELETE”,单击“确定”完成函数删除。