すべてのプロダクト
Search
ドキュメントセンター

Function Compute:WebIDEを使用して関数のサードパーティの依存関係をパッケージ化する

最終更新日:Sep 10, 2024

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を使用してコンパイルとパッケージ化を実行する必要があります。