WebIDEは、端末とFunction Computeの実行環境の間に一貫した環境を提供できます。 WebIDEインスタンスターミナルを使用して、サードパーティの依存関係をパッケージ化できます。 パッケージングは、Function Computeのランタイム環境でのパッケージングと同じです。 このトピックでは、WebIDEターミナルを使用して、Python、Node.js、およびPHPランタイムとカスタムランタイムのサードパーティ依存関係をパッケージ化する方法について説明します。
Python
特定のサードパーティライブラリは、Pythonランタイム環境で構築されます。 詳細については、「組み込みpythonモジュール」をご参照ください。 他のサードパーティライブラリをインストールする必要がある場合は、WebIDEターミナルの /codeディレクトリで次のコマンドを実行します。
pip install -t . flask
# or
pip install -t . -r requirements.txt
上記の方法を使用すると、コードディレクトリが乱雑になり、リソースマネージャでindex.py
ファイルが簡単に見つからない場合があります。 /python
などのディレクトリを定義し、そのディレクトリにサードパーティの依存関係をインストールできます。 関数コードが依存関係をインポートできるようにするには、関数にPYTHONPATH=/code/python
環境変数を追加する必要があります。 以下のコマンドを実行します。
mkdir python
cd python
pip install -t . flask
インストールするサードパーティの依存関係パッケージのサイズが大きく、デプロイに時間がかかる場合は、/python
ディレクトリをレイヤーとしてパッケージ化してから、関数でレイヤーを参照できます。 その後、コードディレクトリの /python
ディレクトリを削除します。 #1次のコマンド
#1. Publish the python directory as a layer.
zip -ry python.zip python
s cli fc 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. Update the function and reference the layer in the function.
#3. Delete the python directory to reduce the size of the function code package.
rm -rf python python.zip
#4. Deploy the updated function.
pythonランタイム環境では、/Python
ディレクトリを使用することを推奨します。 サードパーティのパッケージを関数にインポートできるようにするために、PYTHONPATH=/opt/python
環境変数を設定する必要はありません。
カスタムレイヤーの作成方法と参照方法の詳細については、「カスタムレイヤーの作成」および「レイヤーの管理」をご参照ください。
Node.js
特定のサードパーティライブラリは、Node.jsランタイム環境で構築されます。 詳細については、「Node.js組み込みモジュール」をご参照ください。 他のサードパーティライブラリをインストールする必要がある場合は、WebIDEターミナルの /codeディレクトリで次のコマンドを実行します。
# The package.json file already exists.
npm install
インストールするサードパーティの依存関係パッケージのサイズが大きく、関数コードのデプロイに時間がかかる場合は、/node_modules
ディレクトリをカスタマイズし、ディレクトリをレイヤーとしてパッケージ化してから、関数内のレイヤーを参照できます。 その後、コードディレクトリ内の /node_modules
ディレクトリを削除します。 サンプルコード:
#1. Publish the node_modules directory as a layer.
mkdir nodejs
mv node_modules ./nodejs
zip -ry nodejs.zip nodejs
s cli fc 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. Update the function and reference the layer in the function.
#3. Delete the node_modules directory to reduce the size of the function code package.
rm -rf nodejs nodejs.zip
#4. Deploy the updated function.
カスタムレイヤーの作成方法と参照方法の詳細については、「カスタムレイヤーの作成」および「レイヤーの管理」をご参照ください。
PHP
PHPの場合、サードパーティの依存関係パッケージをインストールする方法は、PythonおよびNode.jsの場合と同じです。 違いは、PHPランタイム環境でレイヤーを構築するために使用されるディレクトリが /opt/phpであることです。 詳細については、「カスタムレイヤーの作成」の「各ランタイムで追加できるディレクトリ」セクションをご参照ください。
カスタムランタイム
カスタムランタイムを使用し、言語がPython、Node.js、またはPHPの場合、同じメソッドを使用してサードパーティの依存関係をパッケージ化できます。
カスタムランタイムを使用し、言語がJavaやGolangなどの主流のコンパイル言語である場合、WebIDEが提供するSDKを使用してコンパイルとパッケージ化を実行する必要があります。