我试图在Python函数上使用Sklearn。因为Sklearn不是本地的,所以我需要在一个层中上传库及其依赖项。其中一个依赖项Numpy比我上传的要大,但幸运的是,AWS已经提供了一个Scipy,Numpy层(AWSLambdaPython38-SciPy1x),所以耶!因此,我认为我需要用剩下的库创建一个层,并在lambda函数中使用这两个层。因此,我在我的窗口上创建了一个包含库(joblib、线程池with、scikit-learn和sklearn)的图层,并将其上传并调用该函数,但该函数没有工作。谷歌母亲告诉我,这是由于兼容性问题(Windows)。
{
"errorMessage": "Unable to import module 'lambda_function': cannot import name 'WinDLL' from 'ctypes' (/var/lang/lib/python3.8/ctypes/__init__.py)",
"errorType": "Runtime.ImportModuleError"
}
最后,我决定使用一个Linux实例,安装Python,其余的库,然后上传Lambda层。我得到了一个"Amazon 2018.03.0 (HVM),SSD卷类型“,并完成了下面描述的步骤(请对Linux newbs友好一点):
在我的windows cmd上
cd C:/path_to_aws.pem
ssh -i "file.pem" ec2-user@ec2-x.region.compute.amazonaws.com
sudo yum update
sudo su
yum install openssl-devel
yum install libffi-devel
yum groupinstall "Development Tools"
wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
tar -xf Python-3.8.3.tgz
cd Python-3.8.3
sudo su
./configure --enable-optimizations
nproc
make -j 1
sudo make altinstall
exit
curl -O https://bootstrap.pypa.io/get-pip.py
python3.8 get-pip.py
sudo su
python3.8 -m venv biblio/env
source ~/biblio/env/bin/activate
pip install pip --upgrade
pip install joblib
pip install threadpoolctl
pip install scikit-learn
pip install sklearn
zip -r python38_lib.zip /biblio
问题:现在我已经在Linux机器上安装了库,但是如何从本地环境将它送到我的计算机上呢?如果它在实例(外部env)上,我知道如何获得它:
scp -i " file.pem " ec2-user@ec2-x.region.compute.amazonaws.com:/path/file.zip C:/
如果你能帮我解决最初的问题,那就是,在Lambda上运行Sklearn,有一个更短、更无痛的解决方案:<3!否则,你能帮我把library.zip文件送到我的窗口吗?
谢谢你的好意
1-1- .py
2平方https://aws.amazon.com/pt/premiumsupport/knowledge-center/ec2-linux-python3-boto3/
3 https://medium.com/@dearsikandarkhan/files-copying-between-aws-ec2-and-local-d07ed205eefa
发布于 2020-07-13 21:52:08
TL博士,我已经为你们建立了这一层。您可以通过gdrive 链接下载它。注:包括NumPy .
使用无服务器框架构建lambda层更容易。
# serverless.yml
service: serverless-example
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
layer: true
provider:
name: aws
runtime: python3.8
stage: dev
region: us-east-1
profile: dummy
functions:
dummy:
handler: dummy.handler
# requirements.txt
joblib==0.16.0
threadpoolctl==2.1.0
scikit-learn==0.23.1
只需执行sls package -p pkg
,那么名为pythonRequirements.zip
的层zip将位于pkg
目录中。
https://stackoverflow.com/questions/62723297
复制相似问题