我有一个使用sqlalchemy,pandas和numpy的python3.6脚本。为了在AWS Lambda上运行,我采取了以下步骤。
mkdir dist
)pip install sqlalchemy numpy pandas
cd env/lib/python3.6/site-packages
zip -r path/dist/Transfer.zip .
zip -g dist/Transfer.zip my_python.py
我总是收到错误
{ " errorMessage":"无法导入模块' my_python'" }
将日志作为
无法导入模块' heap_consolidation_lambda':缺少必需的依赖项[' numpy']
为什么不能看到numpy? Fwiw,numpy是第三个进口,显然它与sqlalchemy和pandas没有任何问题。
答案 0 :(得分:-1)
经过大量研究,我能够使其与Lambda图层一起使用。
创建或打开干净目录,然后执行以下步骤:
先决条件:确保已启动并运行Docker
pandas==0.23.4 pytz==2018.7
#!/bin/bash export PKG_DIR="python" rm -rf ${PKG_DIR} && mkdir -p ${PKG_DIR} docker run --rm -v $(pwd):/foo -w /foo lambci/lambda:build-python3.6 \ pip install -r requirements.txt --no-deps -t ${PKG_DIR}
chmod +x get_layer_packages.sh ./get_layer_packages.sh zip -r pandas.zip .
将图层上传到S3存储桶。
通过运行以下命令将层上传到AWS:
aws lambda publish-layer-version --layer-name pandas-layer --description "Description of your layer" --content S3Bucket*=<bucket name>*,S3Key=*<layer-name>*.zip --compatible-runtimes python3.6 python3.7
转到Lambda控制台并以zip文件形式上传代码或使用内联编辑器。
单击“图层”>“添加图层”>从“兼容”图层中搜索该图层(pandas图层),然后选择版本。
还添加了AWSLambda-Python36-SciPy1x层,默认情况下该层可用于导入numpy。
Selecting the layer from the console
感谢这篇中篇文章https://medium.com/@qtangs/creating-new-aws-lambda-layer-for-python-pandas-library-348b126e9f3e