コードと vendor ディレクトリを ZIP ファイルにパッケージングすることで、サードパーティの依存関係を持つ PHP 関数を Function Compute にデプロイします。このガイドでは、Nette\Utils を依存関係の例として使用し、Function Compute コンソールと Composer を使用する方法、および 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 ファイルにパッケージングして、Function Compute コンソールからアップロードします。
前提条件
開始する前に、以下を確認してください。
PHP および Composer がインストールされており、Composer コマンドを実行する権限があること。インストール手順については、「Composer」をご参照ください。
(オプション) Function Compute コンソールで PHP 関数が作成されていること。詳細については、「イベント関数の作成」をご参照ください。
依存関係のインストールとデプロイ
mycodeディレクトリに、composer.jsonを作成します。{ "require": { "nette/utils": "v3.2.5" } }mycodeディレクトリで、composer installを実行して依存関係をインストールします。コマンドが完了すると、Composer はmycode内にcomposer.lockファイルとvendorディレクトリを作成します。ダウンロードされた依存関係はvendorに保存されます。mycode内のすべてのファイルを ZIP ファイルにパッケージングします。Linux および macOS:
mycodeディレクトリに移動し、以下を実行します。zip code.zip -r ./*注: ディレクトリに対する読み取り/書き込み権限があることを確認してください。
Windows:
mycodeディレクトリを開き、すべてのファイルを選択して右クリックし、ZIP ファイルに圧縮します。
注:
index.phpがパッケージのルートディレクトリにあることを確認してください。Function Compute コンソールで、更新する関数を開きます。 関数詳細ページの右上隅で、[コードのアップロード] をクリックし、ZIP ファイルを選択します。 または、関数の作成時に ZIP ファイルをアップロードすることもできます。 詳細については、「イベント関数を作成する」をご参照ください。
関数詳細ページの [コード] タブで、[関数をテスト] をクリックしてデプロイメントを検証します。
メソッド 2: Serverless Devs の使用
Serverless Devs を Docker とともに使用して、ZIP ファイルを手動で管理することなく関数をビルドおよびデプロイします。
前提条件
開始する前に、以下を完了していることを確認してください。
依存関係のインストールとデプロイ
mycodeディレクトリに、以下の内容でs.yamlを作成します。edition: 3.0.0 name: fcDeployApp access: "default" vars: # The global variables. region: "cn-hangzhou" resources: hello_world: component: fc3 # The name of the component. props: region: ${vars.region} # For information about how to use variables, visit 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: 30mycodeディレクトリに、composer.jsonを作成します。{ "require": { "nette/utils": "^3.0" } }Function Compute ランタイム環境に一致する Docker コンテナ内に依存関係をインストールするには、以下のコマンドを実行します。
sudo s build --use-dockerコマンドが完了すると、Serverless Devs は依存関係とコードを
./vendorディレクトリにインストールします。関数をデプロイするには、以下のコマンドを実行します。
sudo s deployコマンドが完了すると、関数は Function Compute にデプロイされます。
次のステップ
すべてのデプロイメントにパッケージングすることなく依存関係を管理するには、Function Compute レイヤーを使用します。詳細については、「カスタムレイヤーの作成」をご参照ください。