创建部署程序包

最近更新时间:2018-08-28 15:44:48

部署程序包是 SCF 平台运行的所有代码和依赖项的 zip 集合文件,在创建函数时需要指定部署程序包。用户可以在本地环境创建部署程序包并上传至 SCF 平台,或直接在 SCF 控制台上编写代码由控制台为您创建并上传部署程序包。请根据以下条件确定您是否可使用该控制台创建部署程序包:

  • 简单场景:如果自定义代码只需要使用标准库及腾讯云提供的 COS、SCF 等 SDK 库,且只有一个代码文件时,则可以使用 SCF 控制台中的内联编辑器。控制台会将代码及相关的配置信息自动压缩至一个能够运行的部署程序包中。
  • 高级场景:如果编写的代码需要用到其他资源(如使用图形库进行图像处理,使用 Web 框架进行 Web 编程,使用数据库连接库用于执行数据库命令等),则需要先在本地环境创建函数部署程序包,然后再使用控制台上传部署程序包。

打包要求

ZIP 格式

直接上传至 SCF 平台,或通过上传 COS 再导入 SCF 方式提交的代码包,要求为 ZIP 格式 。用于压缩或解压的工具,在 Windows 平台下可使用例如 7-Zip 工具,在 Linux 平台下可使用 zip 命令行工具。

打包方式

打包时,需要针对文件进行打包,而不是针对代码整体目录进行打包;打包完成后,入口函数文件需要位于包内的根目录。

在 Windows 下打包时,可以进入函数代码目录,全选所有文件以后,单击鼠标右键,选择“压缩为 zip 包”,生成部署程序包。通过 7-Zip 等工具打开 zip 包浏览时,包内应该直接包含入口程序与其他库。

在 Linux 下打包时,可以进入函数代码目录,通过调用 zip 命令时,将源文件指定为代码目录下的所有文件,实现生成部署程序包,例如 zip /hoem/scf_code.zip * -r

部署程序包示例

下面展示在本地环境创建部署程序包的示例过程。

注意:

  1. 通常情况下在本地安装的依赖库在 SCF 平台上也能很好运行,但少部分情况下安装的 binary 文件可能产生兼容性问题,如果发生了此问题请您尝试联系我们
  2. 示例中针对 Python 开发语言,将在本地使用 pip 工具安装库及依赖项,请确保您本地已经安装了 Python 和 pip。

Python 部署程序包

Linux 下创建 Python 部署程序包

1) 创建一个目录:

mkdir /data/my-first-scf

2) 将创建的此函数所有 Python 源文件(.py 文件)保存在此目录,有关如何创建函数,请参考 新手入门 - 创建 DownloadImage 函数 部分。

3) 使用 pip 安装所有依赖项至此目录:

pip install <module-name> -t /data/my-first-scf

例如,以下命令会将 Pillow 库安装在 my-first-scf 目录下:

pip install Pillow -t /data/my-first-scf

4) 在 my-first-scf 目录下,压缩所有内容。特别注意,需要压缩目录内的内容而不是目录本身:

cd /data/my-first-scf && zip my_first_scf.zip * -r

注意:

  1. 针对有编译过程的库,为保持和 SCF 运行环境的统一,建议打包过程在 CentOS 7 下进行。
  2. 如果在安装过程中或编译过程中,有其他软件、编译环境、开发库的需求,请根据安装提示解决编译和安装问题。

Windows 下创建 Python 部署程序包

建议您将已经在 Linux 环境下运行成功的依赖包和代码打包成 zip 包作为函数的执行代码,具体操作请参考 代码实操 - 获取COS上的图像并创建缩略图

针对 Windows 系统,同样可以使用 pip install <module-name> -t <code-store-path> 命令安装 Python 库,但是针对需要编译或带有静态、动态库的包,由于 Windows 下编译生成的库无法在 SCF 的运行环境(CentOS 7)中被调用运行,因此 Windows 下的库安装仅适合纯 Python 实现的库。