如何提高构建/部署效率
第三方依赖包
小明开发业务函数的时候,函数需要第三方依赖包 beautifulsoup4
, 由于函数计算的运行环境(Linux debian9 或 debian10)与小明本地的开发环境可能存在比较大的不同,这就导致一部分本地安装/构建的依赖第三方库作为函数代码包一部分部署成函数以后, 函数无法正常运行。
但是有了 Serverless Devs 的 build 指令
⚠️ 注意:该命令对 Docker 有所依赖,所以在使用该命令时,需要先进行 Docker 安装,版本 >= 19.03。
⚠️ 注意:第一次调试,可能会涉及 runtime 镜像的拉取,请耐心等待。
他只需要在 s.yaml 中 code 指定的目录中加入了 requirements.txt
文件
requirements.txt 内容为:
或者固定版本:
然后运行 s build
即可
此时s.yaml 中 code 指定的目录生成了一个 python 文件夹, beautifulsoup4 下载到 python 文件夹中
同时上面 build 命令输出提示我们在 yaml 中给这个函数增加环境变量
此时执行 s deploy
完成部署, 再执行 s invoke
, 函数代码也能正常使用 beautifulsoup4 这个 lib 了
底层 C/C++ so lib 或者二进制工具
绝大部分场景不需要这种构建
小明发现有个函数,希望能直接使用上 jq 命令行工具,他只需要在 s.yaml 中 code 指定的目录中加入了 apt-get.list
文件
apt-get.list
内容为:
然后运行 s build
即可
此时s.yaml 中 code 指定的目录除了生成了一个 python 文件夹( beautifulsoup4 下载到该文件夹), 还会生成文件夹 apt-archives
同时上面 build 命令输出提示我们在 yaml 中给这个函数增加环境变量:
然后重新部署即可。
自动将第三方依赖打包成一个层
在开发函数的过程中, 小明发现给函数的依赖层越加越多, 导致代码包比较大, 每次部署比较慢, 这个时候, 可以使用如下命令自动将第三方依赖打包成一个层
此时s.yaml 中 code 指定的目录生成了一个 .fcignore 文件, 表示 python 和 apt-archives 文件夹 deploy 的时候不会打包到代码包中, 从而大大减少代码包的大小
同时上面 build 命令输出提示我们在 yaml 中给这个函数增加环境变量和层
更多
有关其他编程语言或者更多的本地构建技巧请参考 build指令