サードパーティの依存関係を含む PHP 関数を Function Compute (FC) にデプロイするには、コードと vendor ディレクトリを ZIP ファイルにパッケージ化します。このガイドでは、依存関係の例として Nette\Utils を使用し、Composer と FC コンソールを使用する方法と、Serverless Devs を使用する方法の 2 つのデプロイ方法について説明します。
コードの準備
デプロイする前に、関数ハンドラを含むローカルコードディレクトリを設定します。
-
関数コード用に
mycodeという名前のディレクトリを作成します。-
Linux と macOS:
mkdir -p /tmp/mycodeを実行します。 -
Windows:
mycodeという名前のフォルダーを作成します。
-
-
mycodeディレクトリに、次の内容でindex.phpを作成します。<?php require_once __DIR__ . '/vendor/autoload.php'; use Nette\Utils\Arrays; function handler($event, $context) { return Arrays::contains([1, 2, 3], 1); }
方法1: Composer の使用
Composer を使用してローカルで依存関係をインストールし、コードを ZIP ファイルにパッケージ化して、FC コンソールからアップロードします。
前提条件
開始する前に、次の条件を満たしていることを確認してください。
依存関係のインストールとデプロイ
-
mycodeディレクトリに、composer.jsonを作成します。{ "require": { "nette/utils": "v3.2.5" } } -
mycodeディレクトリでcomposer installを実行して、依存関係をインストールします。コマンドが完了すると、Composer はcomposer.lockファイルとvendorディレクトリをmycode内に作成します。ダウンロードされた依存関係はvendorディレクトリに保存されます。 -
mycode内のすべてのファイルを ZIP ファイルにパッケージ化します。-
Linux と macOS:
mycodeディレクトリに移動して、次のコマンドを実行します。zip code.zip -r ./*注:ディレクトリに対する読み書き権限があることを確認してください。
-
Windows:
mycodeディレクトリを開き、すべてのファイルを選択して右クリックし、ZIP ファイルに圧縮します。
注:
index.phpがパッケージのルートディレクトリにあることを確認してください。 -
-
FC コンソールで、更新する関数を開きます。関数の詳細ページの右上隅にある [コードのアップロード] をクリックし、ZIP ファイルを選択します。または、関数の作成時に ZIP ファイルをアップロードすることもできます。詳細については、「イベント関数の作成」をご参照ください。
-
関数の詳細ページの [コード] タブで、[関数のテスト] をクリックして、デプロイを検証します。
方法2: Serverless Devs の使用
Serverless Devs と Docker を使用して、ZIP ファイルを手動で管理することなく、関数をビルドしてデプロイします。
前提条件
開始する前に、次の操作が完了していることを確認してください。
依存関係のインストールとデプロイ
-
mycodeディレクトリに、次の内容でs.yamlを作成します。edition: 3.0.0 name: fcDeployApp access: "default" vars: # グローバル変数 region: "cn-hangzhou" resources: hello_world: component: fc3 # コンポーネント名 props: region: ${vars.region} # 変数の使用方法については、https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC をご参照ください。 functionName: "testphp" description: 'this is a test' runtime: "php7.2" code: ./ handler: index.handler memorySize: 128 timeout: 30 -
mycodeディレクトリに、composer.jsonを作成します。{ "require": { "nette/utils": "^3.0" } } -
次のコマンドを実行して、FC の実行環境に合わせた Docker コンテナ内に依存関係をインストールします。
sudo s build --use-dockerコマンドが完了すると、Serverless Devs はコードと依存関係をビルドし、デプロイ可能なパッケージを
.sディレクトリ内に作成します。 -
次のコマンドを実行して、関数をデプロイします。
sudo s deployコマンドが完了すると、関数が FC にデプロイされます。
次のステップ
デプロイのたびに依存関係をパッケージ化せずに管理するには、FC レイヤーを使用します。詳細については、「カスタムレイヤーの作成」をご参照ください。