文档首页/ 函数工作流 FunctionGraph/ 常见问题/ 创建函数/ FunctionGraph函数工程打包有哪些规范(限制)?
更新时间:2024-11-11 GMT+08:00

FunctionGraph函数工程打包有哪些规范(限制)?

函数除了支持在线编辑代码,还支持上传ZIP、JAR、引入OBS文件等方式上传代码。具体规范请参考打包规范说明ZIP工程包示例

打包规范说明

函数除了支持在线编辑代码,还支持上传ZIP、JAR、引入OBS文件等方式上传代码,函数工程的打包规范说明如表1所示。

表1 函数工程打包规范

编程语言

JAR包

ZIP包

OBS文件

Node.js

不支持该方式

  • 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。
  • 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。

将工程打成ZIP包,上传到OBS存储桶。

PHP

不支持该方式

  • 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。
  • 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。

将工程打成ZIP包,上传到OBS存储桶。

Python 2.7

不支持该方式

  • 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。
  • 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。

将工程打成ZIP包,上传到OBS存储桶。

Python 3.6

不支持该方式

  • 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。
  • 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。

将工程打成ZIP包,上传到OBS存储桶。

Java 8

如果函数没有引用第三方件,可以直接将函数工程编译成Jar包。

如果函数引用第三方件,将函数工程编译成Jar包后,将所有依赖三方件和函数jar包打成ZIP包。

将工程打成ZIP包,上传到OBS存储桶。

Go 1.x

不支持该方式

必须在编译之后打zip包,编译后的二进制文件必须与执行函数入口保持一致,例如二进制名称为Handler,则执行入口为Handler。

将工程打成ZIP包,上传到OBS存储桶。

C#

不支持该方式

必须在编译之后打zip包,必须包含“工程名.deps.json”,“工程名.dll”,“工程名.runtimeconfig.json”,“工程名.pdb”和“HC.Serverless.Function.Common.dll”文件。

将工程打成ZIP包,直接上传到OBS存储桶。

定制运行时

不支持该方式

打zip包,必须包含“bootstrap”可执行引导文件。

将工程打成ZIP包,直接上传到OBS存储桶。

Cangjie

不支持该方式

必须在编译之后打zip包,编译后的二进制文件必须与执行函数入口保持一致,例如二进制名称为libuser_func_test_success.so,则执行入口为libuser_func_test_success.so。

将工程打成ZIP包,上传到OBS存储桶。

ZIP工程包示例

  • Nods.js工程ZIP包目录示例
    Example.zip                            示例工程包
    |--- lib                               业务文件目录
    |--- node_modules                      npm三方件目录
    |--- index.js                          入口js文件(必选)
    |--- package.json                      npm项目管理文件
  • PHP工程ZIP包目录示例
    Example.zip                            示例工程包
    |--- ext                               扩展库目录
    |--- pear                              PHP扩展与应用仓库
    |--- index.php                         入口PHP文件
  • Python工程ZIP包目录示例
    Example.zip                            示例工程包
    |--- com                               业务文件目录
    |--- PLI                               第三方依赖PLI目录
    |--- index.py                          入口py文件(必选)
    |--- watermark.py                      实现打水印功能的py文件
    |--- watermark.png                     水印图片
  • Java工程ZIP包目录示例
    Example.zip                            示例工程包
    |--- obstest.jar                       业务功能JAR包
    |--- esdk-obs-java-3.20.2.jar          第三方依赖JAR包
    |--- jackson-core-2.10.0.jar           第三方依赖JAR包
    |--- jackson-databind-2.10.0.jar       第三方依赖JAR包
    |--- log4j-api-2.12.0.jar              第三方依赖JAR包
    |--- log4j-core-2.12.0.jar             第三方依赖JAR包
    |--- okhttp-3.14.2.jar                 第三方依赖JAR包
    |--- okio-1.17.2.jar                   第三方依赖JAR包
  • Go工程ZIP包目录示例
    Example.zip                            示例工程包
    |--- testplugin.so                     业务功能包
  • C#工程ZIP包目录示例
    Example.zip                                   示例工程包
    |--- fssExampleCsharp2.0.deps.json            工程编译产生文件
    |--- fssExampleCsharp2.0.dll                  工程编译产生文件
    |--- fssExampleCsharp2.0.pdb                  工程编译产生文件
    |--- fssExampleCsharp2.0.runtimeconfig.json   工程编译产生文件
    |--- Handler                                  帮助文件,可直接使用
    |--- HC.Serverless.Function.Common.dll        函数工作流提供的dll
  • Cangjie工程ZIP包目录示例
    fss_example_cangjie.zip                  示例工程包
    |--- libuser_func_test_success.so        业务功能包
  • 定制运行时
    Example.zip                                   示例工程包
    |--- bootstrap                                可执行引导文件