Bekerja dengan lapisan untuk fungsi Lambda Python - 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 Lambda Python

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

  1. Package 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.

Topik ini menjelaskan cara membuat layer Python dan melampirkannya ke fungsi Lambda.

Package 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 Anda menggunakan Python 3.13, gunakan runtime Python 3.13 untuk fungsi Anda.

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

  • Paket-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, termasuk komponen C yang dikompilasi. Jika Anda membangun lapisan dengan paket-paket ini di macOS atau Windows, Anda mungkin perlu menggunakan perintah ini untuk menginstal roda yang kompatibel dengan Linux:

    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, lihat. Membuat paket penerapan.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, termasuk komponen C yang dikompilasi. Jika Anda membangun lapisan dengan paket-paket ini di macOS atau Windows, Anda mungkin perlu menggunakan perintah ini untuk menginstal roda yang kompatibel dengan Linux:

    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, lihat. Membuat paket penerapan.zip dengan pustaka asli

  2. Zip isi python direktori.

    zip -r layer.zip python/

    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 akan 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 lapisan Anda:

    mkdir python
  2. Buat modul Python Anda di direktori. python 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. Zip isi python direktori.

    zip -r layer.zip python/

    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 peristiwa pengujian berikut untuk menjalankan fungsi:

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

    Tanggapan 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 Lambda AWS CLI atau Lambda.

AWS CLI

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

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

Parameter runtime yang kompatibel adalah opsional. Saat ditentukan, Lambda menggunakan parameter ini untuk memfilter 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 update-function-configuration AWS CLI perintah. Untuk --layers parameter, gunakan lapisan ARN. ARN harus menentukan versi (misalnya,arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1). Untuk informasi selengkapnya, lihat Versi lapisan dan 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"
Console
Untuk menambahkan lapisan 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 layer, pilih Custom layers, dan kemudian pilih layer Anda.

    catatan

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

  5. Pilih Tambahkan.

Contoh aplikasi

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