01. PHP 运行时
1. 安装自定义库
通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
- 依赖库同代码一起打包上传 通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
- 打包时函数入口文件需要在
zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
本文以 PHP7 安装 requests 库为例:
在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。 在 test-package 下创建conposer.json 并指定需要安装的依赖库及版本。 {
"require": {
"requests": ">=1.0"
}
}
执行以下命令,在该目录下安装 requests 依赖库。 cd test-package
composer install
在该目录下创建函数入口文件 index.php 并在代码中引用 requests 库。 <?php
require 'vendor/autoload.php';
function main_handler($event, $context) {
return "hello world";
}
?>
将函数代码及依赖库一同压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下: i. 登录 云函数控制台,单击左侧导航栏的「函数服务」。 ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。 iii. 在「新建函数」页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Php7」。
- 提交方法:选择「本地上传zip包」。
单击「完成」即可创建函数。
2. 安装自定义扩展
在函数入口文件的同级目录下创建扩展文件夹 php_extension 并添加自定义扩展文件 .so 和配置文件 php.ini ,同函数代码一起打包上传。
本文以 PHP7 安装自定义扩展 swoole.so 为例。
在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。 执行以下命令在 test-package 创建文件夹 php_extension ,并将扩展对应的配置文件 php.ini 和扩展文件 .so 放在该目录下,目录结构如下:
- 扩展文件夹
php_extension 和配置文件 php.ini 为固定命名,如使用其他命名可能导致扩展加载失败。 - 扩展文件夹
php_extension 和配置文件 php.ini 以及自定义扩展 .so 文件需要具备可执行权限。
|____php_extension
| |____php.ini
| |____swoole.so
|____index.php
- 自定义扩展支持从代码中或层中加载,如果扩展以层的形式上传,请确保上传到层的 zip 解压后的目录格式如下:
|____php_extension
| |____swoole.so
- php.ini 写法:
- 在该目录下创建函数入口文件
index.php ,可通过 extension_loaded( ) 函数检查扩展是否加载成功,加载成功返回 true ,否则返回 false 。
<?php
function main_handler($event, $context) {
var_dump(extension_loaded('swoole'));
return "hello world";
}
?>
- 将函数代码及依赖库一同压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
i. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
iii. 在「新建函数」页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Php7」。
- 提交方法:选择「本地上传zip包」。
- 单击「完成」即可创建函数。
02. Java 运行时
通过依赖管理工具,例如 maven,在本地安装依赖后同函数代码一同打包上传。
- 在本地终端中执行
mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。 - 在该目录下创建
pom.xml ,并在 pom.xml 中配置依赖信息。 - 在项目文件夹根目录下执行
mvn package 命令,编译输出如下:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building java-example 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.785 s
[INFO] Finished at: 2017-08-25T10:53:54+08:00
[INFO] Final Memory: 17M/214M
[INFO] ------------------------------------------------------------------------
将函数代码及依赖库一同压缩为 jar 包,在 云函数控制台 中上传打包的 jar 包并创建一个新函数。操作步骤如下:
- 登录 云函数控制台,单击左侧导航栏的「函数服务」。
- 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
- 在“新建函数”页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Java8」。
- 提交方法:选择「本地上传zip包」。
单击「完成」即可创建函数。
03. Go 运行时
使用方法:打包时上传最终的二进制文件。
Go 运行时的依赖库同代码一起编译后得到二进制文件,在 云函数控制台 中上传打包的二进制文件并创建一个新函数。操作步骤如下:
- 登录 云函数控制台,单击左侧导航栏的「函数服务」。
- 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
- 在“新建函数”页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Go1」。
- 提交方法:选择「本地上传zip包」。
- 单击「完成」即可创建函数。
One More Thing
立即体验腾讯云 Serverless Demo,领取 Serverless 新用户礼包 👉 腾讯云 Serverless 新手体验
欢迎访问:Serverless 中文网!
|