我开发了一个 python (v3.6) 项目,该项目已在我的AWS 生产平台中的无服务器 lambda 中部署并实际运行。该项目使用以下依赖项:
- awscli==1.16.10
- boto3==1.9.0
- botocore==1.12.0
- psycopg2==2.7.5
- SQLAlchemy==1.2.11
- SQLAlchemy-Utils==0.33.3
- jsonschema==2.6.0
现在我想使用 localstack 在 lambda 中部署这个项目,我可以调用它来测试我的调用代码(不是我的项目的实际工作代码!)
要部署项目,首先我安装依赖项并创建一个 zip 文件:
pip install -r requirements.txt --upgrade -t ./
chmod -R 755 .
zip -r lambda.zip .
然后,我使用命令(使用正在运行的 localstack):
aws lambda --region eu-east-1 --endpoint localhost:4574 \
create-function --function-name mylambda \
--zip-file fileb://lambda.zip
但是,它从 localstack 返回错误:
....
localstack_1 | from functools32 import lru_cache
localstack_1 | ImportError: No module named functools32
....
localstack_1 | raise Exception('Unable to get handler function from lambda code.', e)
localstack_1 | Exception: ('Unable to get handler function from lambda code.', ImportError('No module named functools32',))
模块 functools32 由 jsonschema 使用,它仅适用于 python 2.7 或 <=3.2。我正在使用 python 3.6,所以我无法安装它。此外,当我在我的 AWS 生产平台中部署相同的 lambda.zip 时,我没有遇到此错误。
我真的不知道如何解决这个问题。如果有人有想法要检查,我将非常感激。
问候,