Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I import a Python lambda layer?

I have a file with this as the contents.

def print_hello_world():
    print ('Hello World')

It's zipped up in a folder with a __init__.py file.

I add this as the layer and set the correct runtime of python3.6.

How do import it into my lambda function via lambda code?

Edit: After researching I found that lambda mounts the layers at /opt and if you add /opt to your syspath via sys.path.insert(0, '/opt') then you can import your layers.

You can see your layers at: print(os.listdir("/opt"))

There's gotta be a more elegant way to do this!

like image 416
Dr. Chocolate Avatar asked Jan 22 '19 22:01

Dr. Chocolate


2 Answers

So I've recently ran into this issue, and I believe I found a cleaner way to import your layers.

First for the structure of the zip file which you upload:

  • You do not need an __init__.py file
  • Put all the scripts which you want to import into a folder name python
  • Zip up that python folder (choose any name you want) and upload it to your layer
  • Once uploaded, and the layer has been configured in your lambda function, you can simply use it with import {filename}

So if your script in the python folder was called something like custom_helper.py, import it in your lambda with import custom_helper.

I am not sure if this is the clean way to do it, but it seems simple enough to start.

like image 159
Cecaro Avatar answered Sep 16 '22 21:09

Cecaro


Your zip file should have the following structure:

python/lib/python3.7/site-packages

That is, it needs a folder named Python, and within that a folder named lib, and within that a folder named python3.7, and within that a folder named site-packages. Anything inside that folder will be available for import.

(If you're using another version of Python, that version should be in the path instead of 3.7)

like image 32
Adam Easterling Avatar answered Sep 17 '22 21:09

Adam Easterling