在编写Lambda中我们经常使用不是AWS官方提供的包,比如redis或者是其他模块,AWS 并没有提供相关的连接,这样子我们就只能通过本地下载模块,打包到我们的AWS账户添加到lambda中了
以下是操作演练(环境是python)
在Linux服务器中,下载好python3 和pip,用于下载我们的模块
yum -y install python3 pip
下载完成以后查看python3版本
可以看到这里显示是3.9的版本
使用python3创建一个虚拟环境这样子更方便我们打包
python3 -m venv mylayerenv
现在加载虚拟环境
source mylayerenv/bin/activate
然后创建我们的层文件夹(有格式要求,以下就是格式要求)
mkdir -p layer/python/lib/python3.9你的版本/site-packages/
安装模块
pip install redis
将虚拟环境里面的全部文件cp到我们的层文件夹中
cp -r /root/mylayerenv/lib/python3.9/site-packages/* layer/python/lib/python3.9/site-packages/
进入层文件夹中查看文件是否拷贝成功
成功拷入
现在我们打包python文件夹为zip
zip -r redis_layer.zip python/
成功打包已经
通过工具拉取下来,然后转到aws lambda中
点击层
点击创建层
上传我们打包好的层
点击创建即可
创建完成以后复制我们的arn
返回到我们的lambda函数中
选择需要这个模块的lambda
点击代码下拉最后
点击添加层
选择指定arn粘贴我们的arn
点击添加即可
然后测试运行
如果还是报错找不到模块,可以试试看吧lambda的运行时的版本设置为和我们打包环境的python版本一致(我报错的时候就是这样子换了就好了)