AWS Lambda Error: Unable to import module 'function_name': No module named 'module._module'

1.4k Views Asked by At

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:

function

The handler in lambda specified:

handler

The handler in code itself:

handler

and my zip file has everything in the root (and not nested within a directory):

file

The package bitarray is installed automatically by impyla:

bitarray

Every single time, I am met with this response:

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 a packages/ 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

There are 1 best solutions below

2
jellycsc On

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.