WebIDE支援終端的執行個體環境和線上Function Compute執行環境相同。基於WebIDE執行個體的終端可以完成和Function Compute運行環境無平台差異的第三方依賴打包。本文介紹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。更多資訊,請參見各運行時支援添加的特定目錄。
自訂運行時
如果您使用自訂運行時,且使用的語言為Python、Node.js或者PHP,則打包第三方依賴的方法同理。
如果您使用自訂運行時,且使用的語言為主流編譯型語言,例如Java和Golang,則需使用WebIDE提供的SDK來完成編譯打包。