tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

依赖安装

PDF
聚焦模式
字号
最后更新时间: 2024-04-22 17:45:15

内置依赖

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

安装依赖库

您可以将 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 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
由于运行环境差异,请确认安装的依赖版本适配函数的运行环境。
函数运行系统为 CentOS 7,您需要在相同环境下进行安装。若环境不一致,则可能导致上传后运行时出现无法找到依赖的错误。
若部分依赖涉及动态链接库,例如 Python 3.6 安装 pandas,需手动复制相关依赖包到依赖安装目录后再打包上传。详情请参见 使用 Docker 安装依赖 或使用在线 IDE 进行安装。
本文以安装 numpy 库为例:
1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
2. 执行以下命令,在该目录下安装 numpy 依赖库。
cd test-package
pip install numpy -t . # 请关注所用 pip 版本是否适配函数运行环境
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 包并创建一个新函数。操作步骤如下:
6.1 登录 Serverless 控制台,单击左侧导航栏的函数服务
6.2 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
6.3 在“新建函数”页面,填写函数基本信息。如下图所示:


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

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. 单击完成即可创建函数。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈