Skip to main content

Setup Lambda Layers untuk Dependencies

· 4 min read
Zia Kasyfi

lambda

Pada kesempatan kali ini saya akan berbagi bagaimana menambahkan depedencies dan library yang digunakan pada lambda function. Lambda layers memungkinkan kita untuk mempermudah me-manage libraries dan depedencies yang digunakan. Lambda layers juga dapat digunakan untuk custom runtime dan dapat digunakan oleh lebih dari satu lambda functions

Penjelasan lebih detil:

Problems

Jika kita menggunakan library luar maka lambda tidak dapat memanggil library tersebut. Sebagai contoh kita mencoba memanggil requests

req

Jika di run maka akan muncul error seperti gambar di bawah err

Dalam panduan ini, kita akan membuat lambda layers untuk Python 3.9

Supported runtime untuk language lain dapat dilihat di Lambda Runtimes

Prerequisites

  • Lambda functions (cara membuat lambda function: Deploy Telegram Bot ke AWS)

  • Docker / Virtual Machine Linux Architecture x86_64

    Note: Dalam panduan ini saya menggunakan Docker Ubuntu

  • Python3, pip, dan zip dalam environment Linux

info

Bagi kalian yang menggunakan virtual environment python dapat langsung melihat bagian ini

Mempersiapkan Package

info

Tidak disarankan, tapi kalian dapat mencoba membuat layers dari Windows machine terlebih dahulu dengan mengikuti panduan nomor 2 & 3 dengan PowerShell

Note: Pada panduan ini, layer untuk library requests dapat dibuat dari Windows machine.

Sebelum membuat lambda layers, kita perlu mempersiapkan package yang akan ditambahkan dalam format ZIP. Untuk membuat file tersebut, AWS menyarankan penggunaan AWS Cloud9 untuk memastikan package compatible dengan Lambda.

Namun, untuk memangkas biaya kita dapat membuat package tersebut dengan virtual machine ataupun docker berbasis Linux Ubuntu (untuk beberapa libraries, machine Windows dapat digunakan untuk membuat package).

Setup di Docker

1. Jalankan docker dengan command

docker run -it ubuntu

Jika docker sudah berjalan sebelumnya dapat menggunakan command

docker exec -it [id container/nama container] /bin/bash

2. Buat sebuah folder site-packages dengan command

Pembuatan folder mengacu pada Dokumen AWS Lambda Layers

table

mkdir -p python/lib/python3.9/site-packages

3. Install library yang dibutuhkan ke dalam folder yang telah dibuat

pip

pip3 install requests -t python/lib/python3.9/site-packages/
# Atau jika menggunakan requirements.txt
pip3 install -r requirements.txt -t python/lib/python3.9/site-packages/

4. Jalankan zip -r package.zip python/ untuk membuat file Zip.

zip1 zip2

5. Setelah file Zip terbuat copy file dari dalam docker ke host machine dengan command

docker cp 306de63b5010:/create-layer/package.zip C:\Users\ziaka\Documents

Sesuaikan container ID dan destination path.


ZIP Package pada Windows (Skip jika menggunakan Docker)

Klik kanan pada folder dan pilih Compress to ZIP file sswin

caution

Jika terjadi error saat menggunakan package dari Windows machine, ulangi step dengan environment Linux

Untuk Pengguna Python Virtual Environment di Linux

Bagi kalian yang menggunakan venv Python di enviroment linux, kalian dapat langsung membuat package dari folder venv yang sudah kalian buat. Seperti pada gambar di bawah merupakan struktur foler virtual enviroment test-req dengan Python 3.10. sslinuxenv

  1. Dari dalam directory venv rename/copy file lib/python3.10 menjadi lib/python3.9 dengan command mv lib/python3.10 lib/python3.9 karena AWS hanya support hingga Python 3.9 hingga saat artikel ini dibuat.

    sslinuxenv

  2. Jalankan command di bawah ini dari directory venv

zip -r layer.zip python/lib

File ZIP kalian telah siap untuk di-upload!

Upload Package ke Lambda Layers

Pada tahap ini kita akan masuk ke console AWS dan membuka service Lambda

1. Buka Layers pada service Lambda dan klik Create layer

layer

2. Isi konfigurasi layer sesuai dengan package yang telah kita buat dan klik Create

layerconf

3. Buka function yang ingin ditambahkan layer dan pada bagian Layers klik Add a layer

layerconf

4. Gunakan layer yang telah kita buat sebelumnya

layerconf

5. Jika sudah maka sekarang kita dapat memanggil library tersebut.

layerconf

Tidak terdapat error seperti gambar di awal saat menjalankan function

Sekian panduan mengenai Lambda layers. Jika terdapat kendala atau pertanyaan dapat menghubungi kami melalui Instagram atau email globalpolaris@protonmail.com

Terima Kasih!