loading...
Cover image for ImportError in AWS Lambda function

ImportError in AWS Lambda function

tobhai profile image Tobias Haindl ・1 min read

I recently stumbled across an import error when deploying an AWS lambda function via SAM.

I used the following folder structure:

src/lambda.py
template.yml

Lambda.py:

def lambda_handler(event, context):
    print('hello world')

Template.yml:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  Lambda:
    Type: AWS::Serverless::Function
    Properties:
      Handler: src.lambda.lambda_handler
      Runtime: python3.8
      Events:
        SchedulingEvent:
          Type: Schedule
          Properties:
            Schedule: rate(5 minutes)

Once deployed, the following error was raised:

Runtime.ImportModuleError: Unable to import module 'src.lambda': No module named 'src'

Since I copied the template and the lambda code from another project I was really baffled why I didn't work out of the box. Then I realized the little __init__.py was missing in the source folder...

Don't forget to add an empty __init__.py file to the src folder if you use the same project structure!
If you set Handler to src.lambda in your template.yml the lambda environment is looking for a python module called src therefore a __init__.py is required.

Discussion

pic
Editor guide