View a markdown version of this page

Bekerja dengan lapisan untuk fungsi Python Lambda - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan lapisan untuk fungsi Python Lambda

Gunakan lapisan Lambda untuk mengemas kode dan dependensi yang ingin Anda gunakan kembali di beberapa fungsi. Lapisan biasanya berisi dependensi pustaka, runtime khusus, atau file konfigurasi. Membuat layer melibatkan tiga langkah umum:

  1. Kemas konten layer Anda. Ini berarti membuat arsip file.zip yang berisi dependensi yang ingin Anda gunakan dalam fungsi Anda.

  2. Buat layer di Lambda.

  3. Tambahkan layer ke fungsi Anda.

Kemas konten layer Anda

Untuk membuat layer, bundel paket Anda ke dalam arsip file.zip yang memenuhi persyaratan berikut:

  • Bangun layer menggunakan versi Python yang sama yang Anda rencanakan untuk digunakan untuk fungsi Lambda. Misalnya, jika Anda membangun layer menggunakan Python 3.14, gunakan runtime Python 3.14 untuk fungsi Anda.

  • File.zip Anda harus menyertakan python direktori di tingkat root.

  • Paket di layer Anda harus kompatibel dengan Linux. Fungsi Lambda berjalan di Amazon Linux.

Anda dapat membuat lapisan yang berisi pustaka Python pihak ketiga yang diinstal dengan pip (seperti requests ataupandas) atau modul dan paket Python Anda sendiri.

Untuk membuat layer menggunakan paket pip
  1. Pilih salah satu metode berikut untuk menginstal pip paket ke direktori tingkat atas yang diperlukan (python/):

    pip install

    Untuk paket Python murni (seperti permintaan atau boto3):

    pip install requests -t python/

    Beberapa paket Python, seperti NumPy dan Pandas, menyertakan komponen C yang dikompilasi. Jika Anda membuat layer dengan paket-paket ini di macOS atau Windows, Anda mungkin perlu menggunakan perintah ini untuk menginstal Linux-compatible roda:

    pip install numpy --platform manylinux2014_x86_64 --only-binary=:all: -t python/

    Untuk informasi selengkapnya tentang bekerja dengan paket Python yang berisi komponen yang dikompilasi, lihatMembuat paket penyebaran.zip dengan pustaka asli.

    requirements.txt

    Menggunakan requirements.txt file membantu Anda mengelola versi paket dan memastikan instalasi yang konsisten.

    contoh requirements.txt
    requests==2.31.0 boto3==1.37.34 numpy==1.26.4

    Jika requirements.txt file Anda hanya menyertakan paket Python murni (seperti permintaan atau boto3):

    pip install -r requirements.txt -t python/

    Beberapa paket Python, seperti NumPy dan Pandas, menyertakan komponen C yang dikompilasi. Jika Anda membuat layer dengan paket-paket ini di macOS atau Windows, Anda mungkin perlu menggunakan perintah ini untuk menginstal Linux-compatible roda:

    pip install -r requirements.txt --platform manylinux2014_x86_64 --only-binary=:all: -t python/

    Untuk informasi selengkapnya tentang bekerja dengan paket Python yang berisi komponen yang dikompilasi, lihatMembuat paket penyebaran.zip dengan pustaka asli.

  2. Isi python direktori zip.

    Linux/macOS
    zip -r layer.zip python/
    PowerShell
    Compress-Archive -Path .\python -DestinationPath .\layer.zip

    Struktur direktori file.zip Anda akan terlihat seperti ini:

    python/              # Required top-level directory
    └── requests/
    └── boto3/
    └── numpy/
    └── (dependencies of the other packages)
    catatan

    Jika Anda menggunakan lingkungan virtual Python (venv) untuk menginstal paket, struktur direktori Anda berbeda (misalnya,python/lib/python3.x/site-packages). Selama file.zip Anda menyertakan python direktori di tingkat root, Lambda dapat menemukan dan mengimpor paket Anda.

Untuk membuat layer menggunakan kode Anda sendiri
  1. Buat direktori tingkat atas yang diperlukan untuk layer Anda:

    mkdir python
  2. Buat modul Python Anda di python direktori. Modul contoh berikut memvalidasi pesanan dengan mengonfirmasi bahwa mereka berisi informasi yang diperlukan.

    contoh modul kustom: validator.py
    import json def validate_order(order_data): """Validates an order and returns formatted data.""" required_fields = ['product_id', 'quantity'] # Check required fields missing_fields = [field for field in required_fields if field not in order_data] if missing_fields: raise ValueError(f"Missing required fields: {', '.join(missing_fields)}") # Validate quantity quantity = order_data['quantity'] if not isinstance(quantity, int) or quantity < 1: raise ValueError("Quantity must be a positive integer") # Format and return the validated data return { 'product_id': str(order_data['product_id']), 'quantity': quantity, 'shipping_priority': order_data.get('priority', 'standard') } def format_response(status_code, body): """Formats the API response.""" return { 'statusCode': status_code, 'body': json.dumps(body) }
  3. Isi python direktori zip.

    Linux/macOS
    zip -r layer.zip python/
    PowerShell
    Compress-Archive -Path .\python -DestinationPath .\layer.zip

    Struktur direktori file.zip Anda akan terlihat seperti ini:

    python/     # Required top-level directory
    └── validator.py
  4. Dalam fungsi Anda, impor dan gunakan modul seperti yang Anda lakukan dengan paket Python apa pun. Contoh:

    from validator import validate_order, format_response import json def lambda_handler(event, context): try: # Parse the order data from the event body order_data = json.loads(event.get('body', '{}')) # Validate and format the order validated_order = validate_order(order_data) return format_response(200, { 'message': 'Order validated successfully', 'order': validated_order }) except ValueError as e: return format_response(400, { 'error': str(e) }) except Exception as e: return format_response(500, { 'error': 'Internal server error' })

    Anda dapat menggunakan acara pengujian berikut untuk memanggil fungsi:

    { "body": "{\"product_id\": \"ABC123\", \"quantity\": 2, \"priority\": \"express\"}" }

    Respon yang diharapkan:

    { "statusCode": 200, "body": "{\"message\": \"Order validated successfully\", \"order\": {\"product_id\": \"ABC123\", \"quantity\": 2, \"shipping_priority\": \"express\"}}" }

Buat layer di Lambda

Anda dapat mempublikasikan layer Anda menggunakan konsol AWS CLI atau Lambda.

AWS CLI

Jalankan AWS CLI perintah publish-layer-version untuk membuat layer Lambda:

aws lambda publish-layer-version --layer-name my-layer --zip-file fileb://layer.zip --compatible-runtimes python3.14

Parameter runtime yang kompatibel adalah opsional. Ketika ditentukan, Lambda menggunakan parameter ini untuk menyaring lapisan di konsol Lambda.

Console
Untuk membuat lapisan (konsol)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih Buat lapisan.

  3. Pilih Unggah file.zip, lalu unggah arsip.zip yang Anda buat sebelumnya.

  4. (Opsional) Untuk runtime yang kompatibel, pilih runtime Python yang sesuai dengan versi Python yang Anda gunakan untuk membangun layer Anda.

  5. Pilih Buat.

Tambahkan layer ke fungsi Anda

AWS CLI

Untuk melampirkan layer ke fungsi Anda, jalankan perintah update-function-configuration AWS CLI . Untuk --layers parameter, gunakan layer ARN. ARN harus menentukan versi (misalnya,arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1). Untuk informasi selengkapnya, lihat Lapisan dan versi lapisan.

aws lambda update-function-configuration --function-name my-function --cli-binary-format raw-in-base64-out --layers "arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1"

cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankanaws configure set cli-binary-format raw-in-base64-out. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.

Console
Untuk menambahkan layer ke fungsi
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsinya.

  3. Gulir ke bawah ke bagian Layers, lalu pilih Add a layer.

  4. Di bawah Pilih lapisan, pilih Lapisan kustom, lalu pilih layer Anda.

    catatan

    Jika Anda tidak menambahkan runtime yang kompatibel saat membuat layer, layer Anda tidak akan terdaftar di sini. Anda dapat menentukan layer ARN sebagai gantinya.

  5. Pilih Tambahkan.

Contoh aplikasi

Untuk contoh lebih lanjut tentang cara menggunakan lapisan Lambda, lihat aplikasi sampel layer-python di repositori Panduan Peng AWS Lambda embang. GitHub Aplikasi ini mencakup dua lapisan yang berisi pustaka Python. Setelah membuat lapisan, Anda dapat menerapkan dan memanggil fungsi yang sesuai untuk mengonfirmasi bahwa lapisan berfungsi seperti yang diharapkan.