更新时间:2025-07-25 GMT+08:00
分享

制作函数的私有依赖包

本章节介绍如何在本地制作函数的私有依赖包。

约束与限制

  • 依赖包的文件大小限制为300MB,文件限制数为30000。
  • 依赖包内文件名不能以~结尾,例如“module~”。
  • 如果安装的依赖模块需要添加依赖库,请将依赖库归档到zip依赖包文件中,例如添加.dll、.so、.a等依赖库。
  • 制作函数依赖包推荐在Huawei Cloud EulerOS 2.0环境中进行。若所需依赖涉及操作系统相关的依赖包,使用其他操作系统环境打包时,可能因底层依赖库的差异而出现找不到动态链接库的问题。

搭建EulerOS环境

推荐在EulerOS环境中制作函数依赖包,EulerOS是基于开源技术的企业级Linux操作系统软件,具备高安全性、高可扩展性、高性能等技术特性,能够满足客户IT基础设施和云计算服务等多业务场景需求。

此处推荐Huawei Cloud EulerOS,可选择以下方法搭建环境:

  • 在华为云购买一台EulerOS的ECS弹性云服务器,请参见购买并登录Linux弹性云服务器。在基础配置环节选择公共镜像时,选择“Huawei Cloud EulerOS操作系统”和具体的镜像版本。
  • 下载EulerOS镜像,在本地使用虚拟化软件搭建EulerOS系统的虚拟机。

制作函数依赖包

以下为不同运行时函数制作依赖包示例。

制作依赖包前,请确认环境中已安装与函数运行时相匹配版本的Node.js。以Node.js 8.10安装MySQL依赖包为例,其他Node.js版本和依赖包制作过程相同。

请注意不要使用CNPM命令制作Node.js依赖包。

  1. 执行如下命令,为Nodejs 8.10安装MySQL依赖包。

    npm install mysql --save

    命令执行后,在当前目录下会生成一个node_modules文件夹。

  2. 使用以下命令打包node_modules文件夹生成ZIP包,即生成最终需要的依赖包。

    zip -rq mysql-node8.10.zip node_modules

如需同时封装多个依赖包,建议参考以下步骤操作:

  1. 新建一个package.json文件,在package.json中填入如下内容。

    {
    	"name": "test",                     //自定义依赖包名称
    	"version": "1.0.0",                 //依赖包版本号
    	"dependencies": {
    		"redis": "~2.8.0",          
    		"mysql": "~2.17.1"
    	}
    }

  2. 在包含package.json文件的目录下,执行如下命令。

    npm install --save

  3. 再将node_modules打包成zip,即可生成一个既包含MySQL也包含redis的依赖包。

    zip -rq node8.10.zip node_modules

制作依赖包前,请确认环境中已安装与函数运行时相匹配版本的Python。

以Python3.12安装PyMySQL依赖包为例,其他Python版本和依赖包制作过程相同。

  1. 执行以下命令,指定PyMySQL依赖包的安装路径为本地的/tmp/pymysql下。

    pip install PyMySQL --root /tmp/pymysql

  2. 执行成功后,执行以下命令进入指定目录。

    cd /tmp/pymysql/

  3. 进入子目录直到site-packages路径下(一般路径为lib/python3.12/site-packages/,若此路径下无安装的依赖文件,请使用find命令找到并进入库文件所在路径),接下来执行以下命令压缩依赖文件。

    所生成的包即为最终需要的依赖包。

    zip -rq pymysql.zip *

如果需要安装存放在本地的wheel安装包,可执行以下命令:

pip install piexif-1.1.0b0-py2.py3-none-any.whl --root /tmp/piexif   
//安装包名称以piexif-1.1.0b0-py2.py3-none-any.whl为例,请以实际安装包名称为准

制作依赖包前,请确认环境中已安装与函数运行时相匹配版本的PHP。以PHP 7.3通过composer安装protobuf3.19依赖包为例,默认环境中已经安装了composer,其他PHP版本和依赖包制作过程相同。

  1. 新建一个composer.json文件,在composer.json中填入以下内容。

    {
        "require": {
            "google/protobuf": "^3.19"
        }
    }

  2. 执行如下命令。

    Composer install

    命令执行后,当前目录下会生成一个vendor文件夹,文件夹中有autoload.php、composer和google三个文件夹。

  3. 使用以下命令生成zip包。

    zip –rq vendor.zip vendor

如需同时封装多个依赖包,在composer.json文件中指定需要的依赖,把生成的vendor文件整体打包成zip文件上传即可。

在PHP项目中,使用composer下载的第三方依赖,需通过require "./vendor/autoload.php" 进行加载。FunctionGraph默认将上传的ZIP包解压后的内容,置于与项目代码同一级别的目录下。

使用Java编译型语言开发函数时,依赖包需要在本地编译。如何为Java函数制作依赖包请参考Java函数开发指南(使用IDEA工具普通Java项目)

使用Go编译型语言开发函数时,依赖包需要在本地编译。如何为Go函数制作依赖包请参考Go函数开发

使用C#编译型语言开发函数时,依赖包需要在本地编译。如何为C#函数制作依赖包请参考C#函数开发

相关文档

  • 在本地完成依赖包制作后,请参考为函数配置依赖包在函数工作流控制台进行函数依赖包的创建和配置。
  • 除使用控制台外,函数工作流支持通过API的方式管理函数依赖包,详情请参见函数依赖包API

相关文档