There are two reasons you might encounter this issue on AWS Lambda.
You’re attempting to import a library that isn’t available by default in the Lambda Runtime environment.
In which case you need to include the dependencies in the /python directory of your function package or included Lambda layer.
You’ve already done that but it’s still not working? Does it seem like the function is just denying reality?! Read on…
You’ve included libraries for the wrong version of Python
Depending on the module, python might insist that you provide the exact version that matches the Lambda runtime that you’re using in AWS. This means if you’re using Python 3.7 in AWS, but did a pip install in your build environment on Python 3.6, it might not work.
Easiest solution would be to ensure you have a build environment that can use pip3.7 install -target /targetdir -r requirements.txt
to ensure you’ve got matching versions.
I’ve also observed what can only be described as OS-specific weirdness when trying to do this in MacOS with ostensibly the correct Python version. For safety I ended up performing my packaging builds using the Official Python 3.7 docker image, which worked perfectly.
Comments