このトピックでは、Function Computeで関数を記述できるカスタムランタイムについて説明します。
背景
カスタムランタイムを使用すると、ランタイム環境をカスタマイズできます。 カスタムランタイムでは、ビジネス要件に基づいて排他的関数実行環境を作成できます。 以下の項目は、一般的なシナリオを示します。
Rustなどの個別のプログラミング言語をカスタマイズします。
Node.js 16などのプログラミング言語の指定されたバージョンに基づいてランタイムをカスタマイズします。
コンテナ環境
次の表に、Function Computeのカスタムランタイムでサポートされている実行環境を示します。
ランタイム | ID | OS | アーキテクチャ |
カスタムランタイム (Debian10) | custom.de bian10 | デビアン10 | x86_64 |
カスタムランタイム (Debian 9) | custom | Debian 9 | x86_64 |
カスタムランタイム (Debian 10) (パブリックプレビュー)
ユーザー権限: 関数はルートユーザーによって実行される必要があります。
ディレクトリ権限: データは任意のディレクトリに書き込むことができます。
コンテナー内のコードの場所: /Code
カスタムランタイム (Debian 9)
ユーザー権限
12月1日00:00:00以降に作成される関数は、2021ユーザーが実行する必要があります。
12月1日00:00:00より前に作成された2021は、root以外のユーザーが実行する必要があります。
ディレクトリ権限
2021年12月1日00:00:00以降に作成された関数の場合、データは任意のディレクトリに書き込むことができます。
2021年12月1日00:00:00より前に作成された関数の場合、データは /tmpディレクトリにのみ書き込むことができます。
コンテナー内のコードの場所: /Code
環境情報
カスタムランタイム (Debian10)
次のプログラミング言語は、Debian 10ベースのカスタムランタイムに組み込まれています。 サードパーティのインタプリタをインストールしたり、レイヤーを構成したりすることなく、次のプログラミング言語のカスタムランタイムを作成できます。
次の表に、詳細を示します。 一部のプログラミング言語では、環境変数を設定する必要があります。
プログラミング言语 | インストールディレクトリ | バージョン | 環境変数 |
Node.js 20 | /var/fc/lang/nodejs20 | v20.10.0 | PATH=/var/fc/lang/nodejs20/bin:$PATH |
Node.js 18 | /var/fc/lang/nodejs18 | v18.19.0 | PATH=/var/fc/lang/nodejs18/bin:$PATH |
Python 3.10 | /var/fc/lang/python3.10 | 3.10.9 | PATH=/var/fc/lang/python3.10/bin:$PATH |
Python 2.7 | システムのデフォルトのインストールディレクトリ | 2.7.16 | 非該当 |
カスタムランタイム (Debian 9)
次のプログラミング言語は、Debian 9ベースのカスタムランタイムに組み込まれています。 サードパーティのインタプリタをインストールしたり、レイヤーを構成したりすることなく、次のプログラミング言語のカスタムランタイムを作成できます。
Python 3.7.4 (デフォルトのPythonバージョン)
Node.js 10.16.2
OpenJDK 1.8.0
ルビー2.7
Nginx 1.10.3
PHP 7.4.12
組み込み以外のプログラミング言語を使用する
組み込み以外のプログラミング言語を使用する場合は、パブリックレイヤを使用することをお勧めします。 詳細については、「Function Computeコンソールでのパブリックレイヤーの設定」をご参照ください。
組み込み以外のプログラミング言語を使用してカスタムランタイムを作成する場合は、言語のインタプリタまたはランタイムとコードファイルをパッケージに圧縮し、Function Computeにパッケージをデプロイして、関数を期待どおりに実行できるようにする必要があります。 たとえば、Node.js 16を使用する場合は、Node.js 16に必要なインタプリタをダウンロードし、インタプリタとコードファイルをパッケージに圧縮してから、Function Computeにパッケージをデプロイする必要があります。 次の操作を実行します。
64ビットLinuxバージョンの
Node.js
をコードパッケージディレクトリにダウンロードします。wget http://mirrors.nju.edu.cn/nodejs/v16.14.2/node-v16.14.2-linux-x64.tar.gz -O node-v16.14.2-linux-x64.tar.gz && tar -zxvf node-v16.14.2-linux-x64.tar.gz && rm -rf node-v16.14.2-linux-x64.tar.gz
カスタムランタイムで
Node.js
の起動コマンドを設定します。customRuntimeConfig: command: - /code/node-v16.14.2-linux-x64/bin/node args: - 'server.js' # You can also configure the following environment variables for the function: PATH=/code/node-v16.14.2-linux-x64/bin:/usr/local/bin/apache-maven/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ruby/bin. # After the configuration is complete, you can directly use Node.js to start an HTTP server.
依存関係のインストール
カスタムランタイムに各言語の依存関係をインストールする方法の詳細については、以下のトピックを参照してください。
Node.js
Python
PHP
Function Computeのレイヤーを使用して依存関係をインストールすることもできます。 パブリックレイヤーを使用するか、依存関係レイヤーをオンラインで構築することを推奨します。 詳細については、以下のトピックをご参照ください。