Function Compute は、Node.js、Python、PHP、Java、C#、Go などの主要なプログラミング言語用の組み込みランタイムを提供しています。開発者は、追加の構成なしでビジネスロジックに集中できます。シナリオによっては、開発者が非主流のプログラミング言語や特定のバージョンのランタイム環境を使用する必要がある場合があります。このような場合は、カスタムランタイムを作成して特殊な環境を構築できます。たとえば、Rust などの言語や、Node.js 16 などの特定のバージョンのプログラミング言語の環境をカスタマイズできます。
Web 関数タイプでカスタムランタイムを使用して、HTTP ベースの Web アプリケーションとサービスを作成およびデプロイするためのさまざまな一般的な Web アプリケーションフレームワークを迅速に構築することをお勧めします。カスタムランタイムを使用すると、起動コマンドとリスナーポートをカスタマイズでき、単一インスタンス内で複数の同時リクエストをサポートできます。
コンテナ環境
次の表は、カスタムランタイムでサポートされているランタイム環境を示しています。
名前 | 識別子 | オペレーティングシステム | アーキテクチャ |
カスタムランタイム (Debian 12) (パブリックプレビュー) | custom.debian12 | Debian 12 | x86_64 |
カスタムランタイム (Debian 11) | custom.debian11 | Debian 11 | x86_64 |
カスタムランタイム (Debian 10) | custom.debian10 | Debian 10 | x86_64 |
カスタムランタイム (Debian 9) | custom | Debian 9 | x86_64 |
カスタムランタイム (Debian 12) は、現在、次のリージョンでサポートされています。中国 (杭州)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (成都)。
2021年 12月 1日 00:00:00 以降に作成された関数
ユーザー権限: 関数は root ユーザーによって実行される必要があります。
ディレクトリ権限: データは任意のディレクトリに書き込むことができます。
コンテナ内のコードの場所: /code。
2021年 12月 1日 00:00:00 より前に作成された関数
ユーザー権限: 関数は root 以外のユーザーによって実行される必要があります。
ディレクトリ権限: 書き込み可能なディレクトリは /tmp ディレクトリのみです。
コンテナ内のコードの場所: /code。
環境情報
組み込み依存関係
カスタムランタイムの組み込み言語の依存関係は、組み込みランタイムの依存関係と同じです。詳細については、以下のトピックをご参照ください。
カスタムランタイムを使用して Web 関数を作成すると、Web アプリケーション開発を簡素化するために、対応するプログラミング言語の公式パブリックレイヤーが自動的に構成されます。たとえば、Python Web 関数には Flask レイヤーが構成されます。
カスタムランタイム (Debian 12)
次の表は、カスタムランタイム (Debian 12) の組み込みプログラミング言語を示しています。サードパーティのインタープリターをインストールしたり、レイヤーを構成したりせずに、次の言語でカスタムランタイム関数のコードを直接記述できます。
一部のプログラミング言語では、環境変数を構成する必要があります。次の表で詳細を説明します。
プログラミング言語 | インストールディレクトリ | バージョン | 環境変数 |
Python 3.11 | /usr/bin/python3 | 3.11.2 | 追加の構成は必要ありません |
カスタムランタイム (Debian 11)
次の表は、カスタムランタイム (Debian 11) の組み込みプログラミング言語を示しています。サードパーティのインタープリターをインストールしたり、レイヤーを構成したりせずに、次の言語でカスタムランタイム関数のコードを直接記述できます。
一部のプログラミング言語では、環境変数を構成する必要があります。次の表で詳細を説明します。
プログラミング言語 | インストールディレクトリ | バージョン | 環境変数 |
Python 3.12 | /var/fc/lang/python3.12 | 3.12.4 | PATH=/var/fc/lang/python3.12/bin:$PATH |
カスタムランタイム (Debian 10)
次の表に、カスタムランタイム (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
Ruby 2.7
Nginx 1.10.3
PHP 7.4.12
組み込み以外のプログラミング言語を使用する
組み込み以外のプログラミング言語を使用するには、公式パブリックレイヤーを使用することをお勧めします。詳細については、「コンソールで公式パブリックレイヤーを構成する」をご参照ください。
カスタムランタイムに組み込まれていないプログラミング言語でカスタムランタイムを使用する場合は、言語のパーサーまたはランタイムをコードファイルと一緒にパッケージ化し、Function Compute にデプロイする必要があります。たとえば、ランタイム環境が Node.js 16 の場合、最初に Node.js 16 に必要なインタープリターをコードにダウンロードしてから、パッケージ化されたコードを Function Compute にデプロイする必要があります。これを行うには、次の手順を実行します。
nodeの Linux-x64 バージョンをコードパッケージディレクトリにダウンロードします。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.gznodeを使用するようにカスタムランタイムの起動コマンドを構成します。customRuntimeConfig: command: - /code/node-v16.14.2-linux-x64/bin/node args: - 'server.js' // 関数に次の環境変数を構成することもできます。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。 // 構成後、node を使用して HTTP サーバーを直接起動できます。
依存関係をインストールする
カスタムランタイムに各プログラミング言語の依存関係をインストールする方法の詳細については、以下のトピックをご参照ください。
Function Compute のレイヤー機能を使用して依存関係をインストールすることもできます。公式パブリックレイヤーを使用するか、オンラインで依存関係レイヤーを構築することをお勧めします。詳細については、以下のトピックをご参照ください。