函数依赖包概述
函数依赖包简介
函数依赖包包含支持函数业务代码运行的公共库,可以将代码所需的公共库封装成依赖包进行单独管理,便于多函数共享,同时也能有效缩减函数代码在部署与更新过程中的体积。
FunctionGraph支持对同一依赖包进行版本迭代,即同一依赖包可拥有多个版本,便于系统化管理。
函数依赖包分为公共依赖包与私有依赖包。具体配置指导请参考为函数配置依赖包章节。
公共依赖包是FunctionGraph内置提供的依赖包,可在函数代码中直接添加所需运行时的依赖包使用,以支持代码实现业务逻辑。
相较于私有依赖包,公共依赖包有以下优势:
- 开箱即用:免去依赖包构建和上传的步骤,直接在函数详情页添加即可使用。无需过多关注如何配置代码运行环境,使您能更专注于代码和业务逻辑的优化。
- 减少延迟:FunctionGraph将公共依赖缓存在平台内,相较于私有依赖包,代码冷启动时无需额外时间从存储服务获取依赖文件,减少了网络延迟。
- 简化操作:私有依赖的文件大小限制为300MB,处理大文件时需拆分并多次上传;而公共依赖包不受300MB的文件限制,简化了添加与删除的操作。
私有依赖包是指在本地将业务代码所需的公共库自行封装的包,即自行创建的依赖包。各运行时函数的私有依赖包制作示例请参见制作函数的私有依赖包。
支持引入的依赖库说明
FunctionGraph除了支持配置包外,还支持直接在代码中引入标准库和部分非标准库使用。
- 标准库
- FunctionGraph内置的非标准库
FunctionGraph内置了部分运行时的非标准库,如表1、表2所示。使用方法同标准库,在编写代码时直接引入即可。
表1 Node.js Runtime集成的三方件 名称
功能
版本号
q
异步方法封装。
1.5.1
co
异步流程控制。
4.6.0
lodash
常用工具方法库。
4.17.10
esdk-obs-nodejs
OBS sdk。
2.1.5
express
极简web开发框架。
4.16.4
fgs-express
在FunctionGraph和API Gateway之上使用现有的Node.js应用程序框架运行无服务器应用程序和REST API。提供的示例允许您使用Express框架轻松构建无服务器Web应用程序/服务和RESTful API。
1.0.1
request
简化HTTP调用,支持HTTPS并默认遵循重定向。
2.88.0
在函数代码中使用Node.js运行时引入依赖库示例如下:const ObsClient = require('esdk-obs-nodejs');
表2 Python Runtime支持的非标准库 模块
功能
版本号
dateutil
用于处理日期和时间的高级库,支持日期解析、格式化和时区操作。
2.6.0
requests
HTTP库,用于发送HTTP请求和处理响应。
2.7.0
httplib2
HTTP客户端库,支持HTTP/HTTPS请求、认证和代理。
0.10.3
numpy
用于科学计算的库,支持高效的数组操作和数学函数。
Python 2.7,numpy==1.16.6
Python 3.6,numpy==1.18.5
Python 3.9,numpy==1.18.5
Python 3.10,numpy==1.24.2
redis
用于连接和操作Redis数据库的库,支持多种数据结构。
2.10.5
ObsClient
对象存储服务(OBS)的Python客户端,用于管理对象存储资源。
3.0.3
smnsdk
消息通知服务(SMN)的Python SDK,用于访问公有云SMN服务。
1.0.1
- 其他第三方依赖库
需要在本地将依赖的第三方库打包为ZIP文件,上传至OBS桶或直接在函数控制台上传,在“代码”页签下添加相关的依赖包,即可在函数代码中使用。详细操作步骤请参见为函数配置依赖包。
相关文档
除使用控制台外,函数工作流支持通过API的方式管理函数依赖包,详情请参见函数依赖包API。