更新时间:2025-08-18 GMT+08:00

函数依赖包概述

函数依赖包简介

函数依赖包包含支持函数业务代码运行的公共库,可以将代码所需的公共库封装成依赖包进行单独管理,便于多函数共享,同时也能有效缩减函数代码在部署与更新过程中的体积。

FunctionGraph支持对同一依赖包进行版本迭代,即同一依赖包可拥有多个版本,便于系统化管理。

函数依赖包分为公共依赖包与私有依赖包。具体配置指导请参考为函数配置依赖包章节。

公共依赖包是FunctionGraph内置提供的依赖包,可在函数代码中直接添加所需运行时的依赖包使用,以支持代码实现业务逻辑。

相较于私有依赖包,公共依赖包有以下优势:

  • 开箱即用:免去依赖包构建和上传的步骤,直接在函数详情页添加即可使用。无需过多关注如何配置代码运行环境,使您能更专注于代码和业务逻辑的优化。
  • 减少延迟:FunctionGraph将公共依赖缓存在平台内,相较于私有依赖包,代码冷启动时无需额外时间从存储服务获取依赖文件,减少了网络延迟。
  • 简化操作:私有依赖的文件大小限制为300MB,处理大文件时需拆分并多次上传;而公共依赖包不受300MB的文件限制,简化了添加与删除的操作。

私有依赖包是指在本地将业务代码所需的公共库自行封装的包,即自行创建的依赖包。各运行时函数的私有依赖包制作示例请参见制作函数的私有依赖包

支持引入的依赖库说明

FunctionGraph除了支持配置包外,还支持直接在代码中引入标准库和部分非标准库使用。

  • 标准库

    对于标准库,无论是在线编辑或是本地开发代码打包上传至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