函数管理
函数是实现某一功能所需代码、运行时、资源、设置的组合,是可以独立运行的最小单元。函数通过Trigger触发,自行调度所需资源及环境,实现预期功能。
引入函数应用概念,用户可以按照业务逻辑在创建函数的时候创建函数应用,在相应函数应用下创建多个函数,方便管理跟业务相关的一组函数。
函数在线编辑
用户在编辑函数代码时支持类似工程方式的管理,可以创建文件、文件夹并对其进行编辑。如果用户代码是上传zip包的方式,则前端进行相应解压展示,并支持用户在线编辑修改。函数在线编辑主要功能如表1所示。
|
功能 |
说明 |
|---|---|
|
文件 |
创建文件和文件夹功能。其中包括新建文件,模板新建文件、关闭所有文件等功能。 |
|
编辑 |
代码编辑功能。其中包括撤销、编辑行、注释等功能。 |
|
查找 |
查找和替换功能。 |
|
转到 |
跳转功能。可以跳转到行、括号、问题等。 |
|
查看 |
查看功能。可以查看所有命令菜单,更换主题等。 |
|
测试 |
在线测试函数,显示函数返回、执行摘要和日志。 |
- 对于Java runtime,由于Java是编译型语言,所以不能在线编辑代码。如果函数没有引入其他第三方件,可以选择上传函数jar包。如果函数中引入其他三方件,则需要制作包含所有依赖三方件和函数jar的zip包,选择上传zip文件。
- 对于Go runtime,必须在编译之后打zip包,编译后的动态库文件名称必须与函数执行入口的插件名称保持一致,示例:动态库名称为function.so,表2中的“函数执行入口”命名为function.Handler。
- 制作ZIP包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。
- 函数在线编辑详情请参考CloudIDE在线使用方法。
修改函数代码
函数创建以后,默认版本为latest版本,每个函数都有一个latest版本,对函数的修改只能在latest版本上操作。
- 登录FunctionGraph控制台,进入“函数”界面。
- 在“函数”界面,选择“函数列表”,单击函数名称,进入函数详情界面。
- (可选)在函数详情界面,选择latest版本。
- 在“代码”和“设置”页签下,可以修改如表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字符。
函数初始化入口
在函数代码配置页面中,可以选择开启函数初始化功能。各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包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。
- 单击“保存”,完成代码修改。
导出函数
FunctionGraph支持将已创建的函数及其代码和配置导出。
- 用户登录FunctionGraph控制台,进入“函数”界面,选择“函数列表”。
- 在函数列表单击函数名称,进入函数详情界面。
- 在函数详情界面,选择函数版本,单击操作列表中的“导出函数”,即可将该函数导出。
- 同一时段单个用户只能并发导出一个函数。
- 导出函数资源包大小50MB以内。
- 导出的函数资源名称为函数名+函数代码的MD5值.zip。
- 导出的函数资源中配置信息不包含别名信息。
- 当函数被禁用/启用后,该函数下所有版本的函数都会被禁用/启用。
导入函数
FunctionGraph支持将函数配置信息和代码以zip包方式导入服务。
- 用户登录FunctionGraph控制台,进入“函数”界面。
- 在函数界面,单击“导入函数”,弹出导入函数界面。
- 在导入函数界面,选择所属应用,并上传函数zip包。
上传函数zip包时,如果代码中包含敏感信息(如帐户密码等),请您自行加密,以防止信息泄露。
- 单击“确定”完成导入函数。
- 同一时间段单个用户只能导入一个函数。
- 导入的资源压缩包应包含Yaml配置文件和函数代码文件,必须是zip格式压缩文件,如图1所示,大小不超过10MB。
- 导入资源包中只能包含一个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
用户环境变量
禁用函数
用户可以根据实际情况将函数禁用,禁用期间函数不能执行。
- 用户登录FunctionGraph控制台,进入“函数”界面。
- 选择“函数列表”单击要禁用的函数名称,进入“函数详情”界面。
- 单击“禁用函数”。
- 单击“确定”,函数被禁用。
- 只能禁用“latest”版本的函数,不能禁用已经发布的版本的函数。
- 基于已禁用的“latest”版本重新发布新版本,发布后的新版本也处于禁用状态且不能启用。
- 当函数处于禁用状态时可以修改代码,不能执行函数。
启用函数
用户可以根据实际情况将已禁用的函数重新启用。
- 用户登录FunctionGraph控制台,进入“函数”界面。
- 选择“函数列表”,单击要启用的函数名称,进入“函数详情”界面。
- 单击“启用函数”,函数被启用。
删除函数
对于已经不再使用的函数,可以进行删除操作,及时释放资源。
- 用户登录FunctionGraph控制台,进入“函数”界面。
- 在“函数列表”中,单击待删除函数所在行右侧的“删除”,然后输入“DELETE”,单击“确定”完成函数删除。
