有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

内置依赖

云函数 SCF 各个运行时已内置部分常用依赖库,您可前往各运行时代码开发中查询:

安装依赖库

您可以将 SCF 代码所有的依赖库保存在代码包中,并上传至云端以供 SCF 使用。SCF 已支持的运行时及使用方法如下:

Node.js 运行时

Node.js 运行时支持以下三种依赖库安装方法:
依赖库同代码一起打包上传
在线依赖安装
使用依赖管理工具
通过依赖管理工具,例如 npm,在本地安装依赖后同函数代码一同打包上传。
注意
打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
本文以安装 lodash 库为例:
1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
2. 执行以下命令,在该目录下安装 lodash 依赖库。
cd test-package
npm install lodash
3. 在该目录下创建函数入口文件 index.js 并在代码中引用 lodash 库。
'use strict';
const _ = require('lodash');
exports.main_handler = async (event, context) => {
console.log("Hello World")
console.log(event)
console.log(event["non-exist"])
console.log(context)
return event
};
4. 将函数代码及依赖库一同压缩为 zip 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
4.1 登录 Serverless 控制台,单击左侧导航栏的函数服务
4.2 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
4.3 在“新建函数”页面,填写函数基本信息。如下图所示:


创建方式:选择使用从头开始来新建函数。
运行环境:选择Node.js12.16
提交方法:选择本地上传zip包
4.4 单击完成即可创建函数。
Node.js 运行时提供了在线依赖安装功能,可根据 package.json 中配置的依赖信息在线安装依赖包。详情请参见 在线依赖安装
云函数在线编辑器 Serverless Web IDE 提供了终端功能,并在终端中内置了包管理工具 npm
注意
Serverless Web IDE 对较新版本运行环境支持存在延时,如果对应运行环境下控制台未开放 Serverless Web IDE,请使用依赖库同代码一起打包上传或在线依赖安装方式进行依赖安装。
本文以在终端中安装 lodash 库为例:
1. 登录 Serverless 控制台,在左侧选择函数服务
2. 在函数列表中,单击函数名,进入该函数的详情页面。
3. 在“函数管理”页面中,选择函数代码 > 代码编辑,查看并编辑函数。
4. 在 IDE 顶部的菜单栏终端中选择新终端,打开终端窗口。
5. 在终端中执行如下命令,安装依赖库 lodash
cd src # 依赖库需要安装在与函数入口文件同一级的目录下,即需要进入`src`目录后再执行依赖安装操作。
npm install lodash # 可通过终端查看 npm 版本
6. 安装完成后,在 IDE 左侧的文件树中查看 package.jsonnode_modules
7. 单击部署后依赖库即可与函数代码一同打包上传到云端。如下图所示:



Python 运行时

Python 运行时支持以下两种依赖库安装方法:
依赖库同代码一起打包上传
使用依赖管理工具
通过依赖管理工具,例如 pip,在本地安装依赖后同函数代码一同打包上传。
注意
打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
由于运行环境差异,请确认安装的依赖版本适配函数的运行环境。在线安装依赖时,建议使用 pip3pip36 等命令来指明 pip 等包管理工具的版本,详情请参见 WebIDE 常见命令
函数运行系统为 CentOS 7,您需要在相同环境下进行安装。若环境不一致,则可能导致上传后运行时出现无法找到依赖的错误。
若部分依赖涉及动态链接库,例如 Python 3.6 安装 pandas,需手动复制相关依赖包到依赖安装目录后再打包上传。详情请参见 使用 Docker 安装依赖 或使用在线 IDE 进行安装。
本文以安装 numpy 库为例:
1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
2. 执行以下命令,在该目录下安装 numpy 依赖库。
cd test-package
pip install numpy -t . # 请关注所用 pip 版本是否适配函数运行环境,例如 python3.6 下请使用 pip36
3. 在该目录下创建函数入口文件 index.py 并在代码中引用 numpy 库。
# -*- coding: utf8 -*-
import json
import numpy
def main_handler(event, context):
print("Received event: " + json.dumps(event, indent = 2))
print("Received context: " + str(context))
print("Hello world")
return("Hello World")
4. 将函数代码及依赖库一同压缩为 zip 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
4.1 登录 Serverless 控制台,单击左侧导航栏的函数服务
4.2 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
4.3 在“新建函数”页面,填写函数基本信息。如下图所示:


创建方式:选择使用从头开始来新建函数。
运行环境:选择Python 3.6
提交方法:选择本地上传zip包
4.4 单击完成即可创建函数。
云函数在线编辑器 Serverless Web IDE 提供了终端功能,并在终端中内置了包管理工具 pip
注意
Serverless Web IDE 对较新版本运行环境支持存在延时,如果对应运行环境下控制台未开放 Serverless Web IDE,请使用依赖库同代码一起打包上传或在线依赖安装方式进行依赖安装。
本文以在终端中安装 numpy 库为例:
1. 登录 Serverless 控制台,在左侧选择函数服务
2. 在函数列表中,单击函数名,进入该函数的详情页面。
3. 在“函数管理”页面中,选择函数代码 > 代码编辑,查看并编辑函数。
4. 在 IDE 顶部的菜单栏终端中选择新终端,打开终端窗口。
5. 在终端中执行如下命令,安装依赖库 numpy
cd src # 依赖库需要安装在与函数入口文件同一级的目录下,即需要进入`src`目录后再执行依赖安装操作。
pip install numpy -t . # 可通过终端查看 pip 版本,确认是否适配函数运行环境
6. 安装完成后,在 IDE 左侧的文件树中查看已安装的依赖库。
7. 单击部署后依赖库即可与函数代码一同打包上传到云端。
注意
您可以使用 pip freeze > requirements.txt 生成本地环境下所有依赖的 requirements.txt 文件。
在 IDE 的终端中执行 pip install -r requirements.txt -t . 即可根据 requirements.txt 的配置安装依赖包。

PHP 运行时

注意
SCF 支持的 PHP 版本为 PHP 8.0、PHP 7.4、PHP 7.2 和 PHP 5.6,PHP 不同的小版本号存在不兼容的可能,请核对版本号后进行依赖安装。
安装自定义库
安装自定义扩展
通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
注意
打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
本文以 PHP7.2 安装 requests 库为例:
1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
2. test-package下创建Composer.json并指定需要安装的依赖库及版本。
{
"require": {
"requests": ">=1.0"
}
}
3. 执行以下命令,在该目录下安装 requests 依赖库。
cd test-package
composer install
4. 在该目录下创建函数入口文件 index.php 并在代码中引用 requests 库。
<?php
require 'vendor/autoload.php';
function main_handler($event, $context) {
return "hello world";
}
?>
5. 将函数代码及依赖库一同压缩为 zip 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
5.1 登录 Serverless 控制台,单击左侧导航栏的函数服务
5.2 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
5.3 在“新建函数”页面,填写函数基本信息。如下图所示:


创建方式:选择使用从头开始来新建函数。
运行环境:选择Php7.2
提交方法:选择本地上传zip包
5.4 单击完成即可创建函数。
在函数入口文件的同级目录下创建扩展文件夹 php_extension 并添加自定义扩展文件 .so 和配置文件 php.ini,同函数代码一起打包上传。
本文以 PHP7.2 安装自定义扩展 swoole.so 为例。
1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
2. 执行以下命令在 test-package 创建文件夹 php_extension,并将扩展对应的配置文件 php.ini 和扩展文件 .so 放在该目录下,目录结构如下:
说明
扩展文件夹 php_extension 和配置文件 php.ini 为固定命名,如使用其他命名可能导致扩展加载失败。
扩展文件夹 php_extension 和配置文件 php.ini 以及自定义扩展 .so 文件需要具备可执行权限。
|____php_extension
| |____php.ini
| |____swoole.so
|____index.php
3. 自定义扩展支持从代码中或层中加载,如果扩展以层的形式上传,请确保上传到层的 zip 解压后的目录格式如下:
|____php_extension
| |____swoole.so
4. php.ini 写法:
扩展在代码目录下:
extension=/var/user/php_extension/swoole.so
扩展在层目录下:
extension=/opt/php_extension/swoole.so
5. 在该目录下创建函数入口文件 index.php,可通过extension_loaded( )函数检查扩展是否加载成功,加载成功返回true,否则返回false
<?php
function main_handler($event, $context) {
var_dump(extension_loaded('swoole'));
return "hello world";
}
?>
6. 将函数代码及依赖库一同压缩为 zip 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下: 1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
6.1 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
6.2 在“新建函数”页面,填写函数基本信息。如下图所示:


创建方式:选择使用从头开始来新建函数。
运行环境:选择Php7.2
提交方法:选择本地上传zip包
6.3 单击完成即可创建函数。

Java 运行时

通过依赖管理工具,例如 maven,在本地安装依赖后同函数代码一同打包上传。
1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
2. 在该目录下创建 pom.xml,并在 pom.xml 中配置依赖信息。
3. 在项目文件夹根目录下执行 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] ------------------------------------------------------------------------
4. 将函数代码及依赖库一同压缩为 jar 包,在 Serverless 控制台 中上传打包的 jar 包并创建一个新函数。操作步骤如下:
4.1 登录 Serverless 控制台,单击左侧导航栏的函数服务
4.2 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
4.3 在“新建函数”页面,填写函数基本信息。如下图所示:


创建方式:选择使用从头开始来新建函数。
运行环境:选择Java8
提交方法:选择本地上传zip包
4.4 单击完成即可创建函数。

Go 运行时

使用方法:打包时上传最终的二进制文件。
Go 运行时的依赖库同代码一起编译后得到二进制文件,在 Serverless 控制台 中上传打包的二进制文件并创建一个新函数。操作步骤如下:
1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
3. 在“新建函数”页面,填写函数基本信息。如下图所示:


创建方式:选择使用从头开始来新建函数。
运行环境:选择Go1
提交方法:选择本地上传zip包
4. 单击完成即可创建函数。