私は、 AWS 本番環境のプレートフォームのサーバーレス ラムダ内でデプロイされ、実際に動作する python (v3.6) プロジェクトを開発しました。このプロジェクトでは、次の依存関係を使用します。
- 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 を使用して、呼び出しコードをテストするために呼び出すことができるラムダ内にこのプロジェクトをデプロイします (実際に機能するプロジェクトのコードではありません!)。
プロジェクトをデプロイするには、まず依存関係をインストールして 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 をデプロイしたときに、このエラーは発生しませんでした。
これを解決する方法が本当にわかりません。誰かがチェックするアイデアを持っているなら、私はとても感謝しています.
よろしく、