This topic describes custom runtimes in which you can write functions in Function Compute.
Background
Custom runtimes allow you to customize runtime environments. In a custom runtime, you can create an exclusive function execution environment based on your business requirements. The following items list common scenarios:
Customize an individualized programming language, such as Rust.
Customize a runtime of a specified version of a programming language, such as Node.js 16.
Container environments
The following table shows the container environments supported by custom runtimes.
Runtime | Identifier | Operating system | Architecture |
Custom Runtime (Debian 11) (public preview) | custom.debian11 | Debian 11 | x86_64 |
Custom Runtime (Debian10) | custom.debian10 | Debian 10 | x86_64 |
Custom Runtime | custom | Debian 9 | x86_64 |
Custom Runtime(Debian 11) are supported in the following regions: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Shenzhen), China (Chengdu), China (Hong Kong), Japan (Tokyo), Thailand (Bangkok), South Korea (Seoul), Germany (Frankfurt), UK (London), US (Virginia), and US (Silicon Valley).
Functions created after 00:00:00 on December 1, 2021
User permissions: Functions must be executed by root users.
Directory permissions: Data can be written to any directory.
Code location in the container: /code.
Functions created before 00:00:00 on December 1, 2021
User permissions: Functions must be executed by non-root users.
Directory permissions: Data can be written to only the /tmp directory.
Code location in the container: /code.
Environment information
Custom Runtime (Debian11)
The following table lists the programming languages built in Custom Runtime (Debian11). You can directly create functions that run in the custom runtimes of the following languages without the need to install third-party interpreters or configure layers.
For some programming languages, environment variables must be configured. The following table describes the details.
Programming language | Installation directory | Version | Environment variable |
Python 3.12 | /var/fc/lang/python3.12 | 3.12.4 | PATH=/var/fc/lang/python3.12/bin:$PATH |
Custom runtime (Debian10)
The following table lists the programming languages built in Custom Runtime (Debian10). You can directly create functions that run in the custom runtimes of the following languages without the need to install third-party interpreters or configure layers.
The following table describes the details. For some programming languages, environment variables must be configured.
Programming language | Installation directory | Version | Environment variable |
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 | Default installation directory | 2.7.16 | N/A |
Custom Runtime
The following programming languages are built into custom runtimes. You can create custom runtimes of the following languages without the need to install third-party interpreters or configure layers:
Python 3.7.4 (default Python version)
Node.js 10.16.2
OpenJDK 1.8.0
Ruby 2.7
Nginx 1.10.3
PHP 7.4.12
Use a non-built-in programming language
We recommend that you use a public layer to use a non-built-in programming language. For more information, see Configure common layers in the Function Compute console.
If you want to create a custom runtime by using a non-built-in language of the custom runtime, you must compress the interpreter or runtime of the language and your code file into a package and deploy the package in Function Compute so that your functions can run as expected. For example, if the runtime environment is Node.js 16, you must download the interpreter required for Node.js 16, compress the interpreter and your code file into a package, and then deploy the package in Function Compute. Perform the following steps:
Download
Node.js
of a 64-bit Linux version to the code package directory.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
Configure the startup command of
Node.js
in the custom runtime.customRuntimeConfig: command: - /code/node-v16.14.2-linux-x64/bin/node args: - 'server.js' # You can also configure 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 the HTTP server.
Install dependencies
For more information about how to install the dependencies of each programming language in a custom runtime, see the following topics:
You can also use layers of Function Compute to install dependencies. We recommend that you use a public layer or build a dependency layer online. For more information, see the following topics: