このトピックでは、Python コードの依存関係をインストールする方法、および Function Compute でコードをパッケージ化してデプロイする方法について説明します。このトピックでは、サードパーティの依存関係 emoji を例として使用します。
準備
テスト用のコードディレクトリを作成し、ディレクトリの名前を指定します。この例では、
mycodeを使用します。Linux および macOS
mkdir -p /tmp/mycodeコマンドを実行してディレクトリを作成します。Windows
フォルダを作成し、
mycodeという名前を付けます。
mycodeディレクトリにindex.pyファイルを作成します。次のコードはファイルの内容を説明しています。
from emoji import emojize def handler(event, context): return emojize(":thumbs_up:")
pip を使用した依存関係のインストールとコードのデプロイ
前提条件
オンプレミスマシンに Python 3 がインストールされており、pip3 で必要な権限が付与されています。
Function Compute コンソールで Python 関数が作成されます。詳細については、「イベント関数の作成」をご参照ください。
手順
mycodeディレクトリでpip3 install emoji -t .コマンドを実行して、emoji 依存関係ライブラリを現在のディレクトリにインストールします。mycodeディレクトリ内のすべてのファイルをパッケージ化します。Linux および macOS
mycodeディレクトリに移動し、zip code.zip -r ./*コマンドを実行します。説明ディレクトリに対する読み取りおよび書き込み権限があることを確認してください。
Windows
mycodeディレクトリに移動し、すべてのファイルを選択して右クリックし、ファイルを .zip ファイルに圧縮します。
Function Compute コンソールで、ターゲット関数を見つけ、その [関数の詳細] ページで [コード] タブに移動します。
をクリックし、以前に準備した ZIP パッケージを選択してアップロードしてから [保存してデプロイ] をクリックします。
Function Compute は Linux 環境で実行されます。Windows または macOS デバイスに emoji 依存関係ライブラリをインストールするときにバイナリファイルが含まれていると、コードパッケージの実行に失敗します。したがって、WebIDE を使用してサードパーティの依存関係をパッケージ化するか、Serverless Devs を使用して依存関係をインストールし、プロジェクトをデプロイすることを推奨します。
Serverless Devs を使用した依存関係のインストールとプロジェクトのデプロイ
開始する前に
手順
cd /tmp/mycodeコマンドを実行してmycodeディレクトリに移動します。s.yamlファイルを作成します。次のサンプルコードは、ファイルの例を示しています。
edition: 3.0.0 name: fcDeployApp access: "default" vars: # グローバル変数。 region: "cn-hangzhou" resources: hello_world: component: fc3 # コンポーネントの名前。 props: region: ${vars.region} functionName: "emojipy" description: 'this is emoji' runtime: "python3" code: ./ handler: index.handler memorySize: 128 timeout: 30 environmentVariables: PYTHONUSERBASE: /code/python # 依存関係を取得するための環境変数を追加します。requirements.txtファイルを追加します。次のコードスニペットに基づいてファイルを編集します。
emoji==2.0.0sudo s build --use-dockerを実行して依存関係をインストールします。実行が完了すると、依存関係は
./pythonディレクトリにインストールされます。sudo s deployを実行してプロジェクトをデプロイします。実行後、関数を Function Compute にデプロイできます。
詳細情報
Function Compute のレイヤーを使用して依存関係をインストールすることもできます。パブリックレイヤーを使用するか、オンラインで依存関係レイヤーをビルドすることを推奨します。詳細については、次のトピックをご参照ください。