我想将我的 wagtail(这是一个基于 django 的 CMS)项目部署到 AWS lambda 函数上。最好的选择似乎是使用
zappa
。
Wagtail 需要安装 opencv 才能支持所有功能。
您可能知道,仅运行
pip install opencv-python
是不够的,因为 opencv 需要安装一些操作系统级别的软件包。因此,在运行 pip install opencv-python
之前,必须在运行 lambda 环境的 Amazon Linux 上安装一些软件包。 (yum install ...
)
我想到的唯一解决方案是使用 lambda 层 正确安装 opencv。
但我不确定是否可以在 zappa 部署的项目中使用 lambda 层。
任何形式的帮助和分享经验将不胜感激!
创建layer.sh文件并复制粘贴以下内容运行该文件 sh层.sh,
- 此命令将创建图层
- 将层部署到 lambda 函数
- 将层 ARN 映射到 lambda 函数
- 它还会将 Layer ARN 添加到您的 zappa_setting.json 文件中
-----------------------------------------Shell脚本------------------ -------------------
mkdir layer
apt install jq
pip install -r requirements.txt -t layer/python/
cd layer
zip -r9 ../layer.zip .
cd ..
# Deploy the Layer
LAYER_ARN=$(aws lambda publish-layer-version --layer-name s3eventtrigger-layer --zip-file fileb://layer.zip --compatible-runtimes python3.9 --query LayerVersionArn --output text)
echo $LAYER_ARN
# Update Zappa settings with the new Layer ARN
jq --arg LAYER_ARN "$LAYER_ARN" '.dev.layers[0] = $LAYER_ARN' zappa_settings.json > tmp.json && mv tmp.json zappa_settings.json
rm -rf layer.zip layer