更新时间:2022-04-22 GMT+08:00
分享

函数管理

概述

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

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

函数在线编辑

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

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

功能

说明

文件

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

编辑

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

查找

查找和替换功能。

转到

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

查看

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

测试

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

  • 对于Java runtime,由于Java是编译型语言,所以不能在线编辑代码。如果函数没有引入其他第三方件,可以选择上传函数jar包。如果函数中引入其他三方件,则需要制作包含所有依赖三方件和函数jar的zip包,选择上传zip文件。
  • 对于Go runtime,必须在编译之后打zip包,编译后的动态库文件名称必须与函数执行入口的插件名称保持一致,示例:动态库名称为function.so,表2中的“函数执行入口”命名为function.Handler。
  • 制作ZIP包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。
  • 函数工作目录权限说明:函数可以读取代码目录下的文件,函数工作目录在入口文件的上一级,例如需要读取与入口文件同级目录的文件test.conf,可以用相对路径“code/test.conf”,或者使用绝对路径(相关目录为RUNTIME_CODE_ROOT环境变量对应的值)。如果需要写文件(如创建新文件或者下载文件等),可以在/tmp目录下进行或者使用函数提供的挂载文件系统功能。

修改函数代码

函数创建以后,默认版本为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。

    函数初始化入口

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

    说明:

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

    代码依赖包

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

    说明:

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

    代码上传方式

    操作说明如表3所示。

    表3 函数代码上传方式表

    运行时

    代码上传方式

    操作

    Node.js 6.10/Node.js 8.10/Node.js 10.16/Node.js 12.13/Node.js 14.18

    在线编辑

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

    上传ZIP文件

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

    从OBS上传文件

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

    Python 2.7/Python 3.6/Python 3.9

    在线编辑

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

    上传ZIP文件

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

    从OBS上传文件

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

    Java 8/Java 11

    上传ZIP文件

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

    上传JAR包

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

    从OBS上传文件

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

    Go 1.8/Go 1.x

    上传ZIP文件

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

    从OBS上传文件

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

    C#(.NET Core 2.0)/C#(.NET Core 2.1)/C#(.NET Core 3.1)

    上传ZIP文件

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

    从OBS上传文件

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

    PHP 7.3

    上传ZIP文件

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

    从OBS上传文件

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

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

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

    功能

    说明

    文件

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

    编辑

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

    查找

    查找和替换功能。

    转到

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

    查看

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

    测试

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

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

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

修改函数配置

函数中的要使用的变量,可以通过自定参数来实现。

  1. 登录FunctionGraph控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数页面。
  2. 在“函数”页面,单击函数名称,进入函数详情页面。
  3. (可选)在函数详情界面,选择latest版本,单击“配置”页签。
  4. 修改配置参数,如表5所示。

    表5 配置参数表

    参数

    说明

    函数描述

    对函数的描述,不超过512个字符。根据需要修改。

    委托名称

    用户委托函数工作流服务去访问其他的云服务,举例:如果用户函数需要访问OBS、SMN等服务,则需要提供权限委托名称,如果用户函数不访问任何云服务,则不用提供委托名称。

    从下拉列表中选择,如果下拉列表没有选项,单击“创建委托”,进入“统一身份认证服务 > 委托”页面中创建。

    委托的创建请参考创建委托

    内存(MB)

    数据取值范围为:128、256、512、768、1024、1280、1536、1792、2048、2560、3072、3584、4096。根据需要修改。

    初始化超时时间 (秒)

    函数初始化的超时时间,如开启函数初始化功能则设置,不开启则不设置。

    函数初始化超时时间设置范围为1-300秒。

    执行超时时间 (秒)

    函数的超时时间,超时的函数将被强行停止。

    超时时间设置在3-900秒的范围内。

    单实例并发数

    单个实例支持的请求并发数。取值范围为1-100。相关配置请参考单实例多并发管理

    单函数最大实例数

    单个函数的运行实例数,默认值-1,表示不限制实例数;0代表禁用。

    说明:

    超过实例数限制处理能力的请求会被直接丢弃,而不是重试。

    当前超过实例数限制导致的请求错误不会直接显示在函数日志中,您可以通过函数异步配置来获取错误详细信息。

    VPC访问

    选择设置VPC访问,需要给函数配置拥有VPC管理权限的委托。

    加密配置

    用户自定义的key/value值,用于在函数中使用,适用敏感信息配置。键(name)输入规范:只允许字母数字_,且只能以大/小写字母开头。value值加密保存,不支持明文展示。

    单击“添加加密配置”,输入“键”和“值”对应的参数。

    单击“删除”,删除已定义的参数。

    环境变量

    用户自定义的key/value值,用于在函数中使用。键(name)输入规范:只允许字母数字_,且只能以大/小写字母开头。

    单击“添加配置标签”,输入“键”和“值”对应的参数。

    单击“删除”,删除已定义的参数。

    • 前台等待后台返回结果的最大时长为90s,如果设置的超时时间超过90秒,且函数实际运行时间也超过90秒,前台会提醒超时,但是后台仍在运行,可以在日志中查看返回结果。
    • 设置环境变量时,FunctionGraph会明文展示所有输入信息,请不要输入敏感信息(如帐户密码等),以防止信息泄露。

  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配置文件如下所示,详情说明如表6所示。

    HcCrmTemplateVersion: v1
    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: {}
    表6 yaml文件详情说明

    字段

    说明

    HcCrmTemplateVersion

    固定值“v1”

    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. 在“函数列表”单击要删除的函数名称,进入“函数详情”页面。
  3. 在右上方选择搜索字段(可选项:函数名称、运行时语言、应用名称),输入搜索关键字,单击“”,搜索待删除函数。
  4. 选择待删除函数,单击操作栏的“删除”,弹出“删除函数”页。
  5. 在“删除函数”页,输入"DELETE",单击“确定”,完成函数删除。

创建函数应用

  1. 登录FunctionGraph控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数页面。

    在“应用列表”中,存在一个默认的“default”应用,您可以修改default应用的描述信息,但不能将其删除。

    图2 默认的default应用

  2. 在函数页面,单击右上方的“创建函数”,进入“创建函数”页面。
  3. “所属应用”默认显示“default”,您可以单击下拉框搜索其他应用。

    若需新建应用,请先勾选“新建应用”,再输入应用名称,比如test,其他参数请参考创建函数填写。
    图3 新建应用

  4. 填写完成后单击“创建函数”,函数列表展示已创建的函数,“应用列表”中展示创建成功的应用test。

    1. 一个函数只能属于一个函数应用,一个函数应用下可以创建多个函数。
    2. 单租户默认最多创建400个函数,若需扩大默认值,请提交工单。
    3. 用户调用接口创建函数时,如果package字段为空,则创建到default函数应用下,如果package字段不为空且该应用不存在,则先创建应用然后创建函数。
    4. 删除应用时会同步删除该应用下的所有函数,请谨慎操作。
    5. 同一个租户下,函数名称不可以相同。
    6. 单击函数页面应用名称旁边的空格可以添加、修改应用的描述。

删除函数应用

  1. 登录FunctionGraph控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数页面。
  2. 在函数列表页面展示的应用中,找到想要删除的函数应用,单击“删除”。如图4所示。

    图4 删除应用

  3. 在新打开的“删除应用”页面,输入“DELETE”并勾选确定删除应用及其包含的所有函数,单击“确定”,删除函数应用。

    删除应用时会同步删除该应用下的所有函数,请谨慎操作。

分享:

    相关文档

    相关产品

close