AWS Lambda 准备有平台相关性的 Python 依赖项程序包
准备
如果使用了 AWS Chalice 部署项目,且依赖包的体积不大,可以直接使用 Chalice 部署。会自动准备适配 Lambda 环境的依赖包,作为项目代码的一部分,整体压缩打包更新到 Lambda。
假设 Lambda 的运行环境是 Amazon Linux 2,为了提取适配该系统的软件包文件,需要准备一个 Amazon Linux 2 操作系统环境。
本地需要用到 AWS SAM CLI 和 Docker,来安装和提取依赖软件包文件。
创建一个临时 Python 项目
- 执行命令
sam init,
根据提示选择:
AWS Quick Start Templates
Hello World Example
Use the runtime and package type? (Python and zip)
Project name,使用默认的“sam-app”
- 编辑
requirements.txt,添加实际项目所需的第三方库
安装依赖的软件包
-
启动 docker
-
进入项目目录,执行安装依赖
cd sam-app
sam build -u
-u, --use-container 选项说明:
If your functions depend on packages that have natively compiled dependencies, use this option to build your function inside a Lambda-like Docker container.
提取依赖文件
文件位置:sam-app/.aws-sam/build/HelloWorldFunction
只需要依赖项软件包文件,其它文件可以忽略或删除。
cd sam-app
cp -r .aws-sam/build/HelloWorldFunction/ python/
cd python
rm app.py __init__.py .DS_Store
rm -r *.dist-info
rm -r */_MACOSX
rm -r tests/
或通过文件管理器手动整理后,将所需文件放到名称为 python 的文件夹中。
压缩打包:
cd ..
zip -r9 layer.zip python -x "*/__pycache__/*"
部署依赖项
部署准备好的依赖包,推荐 通过 Lambda Layer 的方式部署依赖项。
注意:必需将软件包文件放在名称 python 的文件夹中(不是压缩包文件的名称)
相关文章:
参考文章: