文档

使用WebIDE打包函数第三方依赖

更新时间:

WebIDE支持终端的实例环境和线上函数计算执行环境相同。基于WebIDE实例的终端可以完成和函数计算运行环境无平台差异的第三方依赖打包。本文介绍Python、Node.js、PHP运行时和自定义运行时如何通过WebIDE终端打包函数的第三方依赖。

Python

Python运行时已经内置部分第三方库。更多信息,请参见Python内置模块。如果您需要安装其他第三方库,可以在终端默认的/code目录执行以下命令。

pip install -t .  flask
# 或
pip install -t . -r requirements.txt

使用上述方式,您的代码目录可能会较混乱,在左侧资源管理器区域不能快速找到入口函数文件index.py。此时,您可以定义一个目录,例如/python,然后将第三方依赖都安装至此目录。为了函数代码能直接导入对应依赖,还需要为函数增加环境变量PYTHONPATH=/code/python。执行的命令如下。

mkdir python
cd python
pip install -t . flask

如果您要安装的第三方依赖包体积较大,每次部署函数代码速度较慢,可以将自定义的目录/python打包为层,然后让函数去引用此层。最后删除代码目录中的/python目录。执行的命令如下。

# 1. 将python目录发布成一个层
zip -ry python.zip python
s cli fc3 layer publish --layer-name myPythonLibLayer --code /code/python.zip --compatible-runtime python3.10,python3.9,python3.6,custom, custom.debian10 --region cn-hangzhou -a default
...
395da10bf789aa49dd035db01bab****#myPythonLibLayer#1

# 2. 更新函数,函数引用此层

# 3. 删除python目录, 给函数代码包瘦身
rm -rf python python.zip

# 4. 部署更新函数
说明

Python运行时建议您使用特定目录/python,无需单独设置环境变量PYTHONPATH=/opt/python,函数即可直接导入第三方包。

关于创建和引用自定义层的更多信息,请参见创建自定义层在函数中配置自定义层

Node.js

Node.js运行时已经内置部分第三方依赖库。更多信息,请参见Node.js内置模块。如果您需要安装其他第三方库,可以在终端默认的/code目录执行以下命令。

# 已经存在package.json文件
npm install

如果您要安装的第三方依赖包体积较大,每次部署函数代码速度较慢,可以自定义目录/node_modules并将其打包为层,然后让函数去引用此层。最后删除代码目录中的/node_modules目录。示例代码如下所示。

# 1. 将node_modules目录发布成一个层
mkdir nodejs
mv node_modules ./nodejs
zip -ry nodejs.zip nodejs
s cli fc3 layer publish --layer-name myNodeLibLayer --code /code/nodejs.zip --compatible-runtime nodejs16,nodejs14,nodejs12,nodejs10,custom,custom.debian10 --region cn-hangzhou -a default
...
395da10bf789aa49dd035db01bab****#myNodeLibLayer#1

# 2. 更新函数,函数引用此层

# 3. 删除node_modules目录, 给函数代码包瘦身
rm -rf nodejs nodejs.zip

# 4. 部署更新函数

关于创建和引用自定义层的更多信息,请参见创建自定义层在函数中配置自定义层

PHP

PHP运行时与Python运行时、Node.js运行时安装第三方依赖包原理相同,不同的是,PHP运行时构建层的特定目录为/opt/php。更多信息,请参见各运行时支持添加的特定目录

Custom Runtime

如果您使用自定义运行时,且使用的语言为Python、Node.js或者PHP,则打包第三方依赖的方法同理。

如果您使用自定义运行时,且使用的语言为主流编译型语言,例如Java和Golang,则需使用WebIDE提供的SDK来完成编译打包。