I recently stumbled across an import error when deploying an AWS lambda function via SAM.
I used the following folder structure:
def lambda_handler(event, context): print('hello world')
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.