问题
Please see the screenshots in particular after reading.
I am deploying a python script on AWS Lambda which uses the package impyla
which has a dependency on the package bitarray
.
from impala.dbapi import connect
My python file is called authorize_ingress.py
which has a function called handle_authorize_ingress(event, context)
which are properly configured. See the screenshots below:
My function's file:
The handler in lambda specified:
The handler in code itself:
and my zip file has everything in the root (and not nested within a directory):
The package bitarray
is installed automatically by impyla
:
Every single time, I am met with this response:
As of now, I have tried to:
- The package was generated with
zip -r
option. - The files are in the root of the zip and not nested within a directory.
- The function works perfectly fine locally.
- I have tried both
virtualenv
and simply installing the dependencies in apackages/
path but no luck
Any ideas what I might be doing wrong? I generated my deployment package following AWS' Lambda Deployment Guide. Any help would be appreciated, thank you!
回答1:
Here you go. You can download this lambda layer through this gdrive link. This layer is compatible with Python 3.8, so make sure you select the correct lambda runtime.
If you are curious to know how I generated this lambda layer, here is a list of basically what I did:
- Serverless Framework
- serverless-python-requirements plugin
- docker
- serverless.yml
service: serverless-example
provider:
name: aws
runtime: python3.8
region: us-east-1
profile: dummy
functions:
dummy:
handler: dummy.handler
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
layer: true
- requirements.txt
impyla==0.16.2
Then simply do sls package -p pkg
. The layer named pythonRequirements.zip
will be ready in a minute under .serverless
directory.
来源:https://stackoverflow.com/questions/62945454/aws-lambda-error-unable-to-import-module-function-name-no-module-named-modu