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:
-
Package konten layer Anda. Ini berarti membuat arsip file.zip yang berisi dependensi yang ingin Anda gunakan dalam fungsi Anda.
-
Buat layer di Lambda.
-
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
-
Pilih salah satu metode berikut untuk menginstal
pip
paket ke direktori tingkat atas yang diperlukan (python/
): -
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.
Selama file.zip Anda menyertakanx
/site-packagespython
direktori di tingkat root, Lambda dapat menemukan dan mengimpor paket Anda.
Untuk membuat layer menggunakan kode Anda sendiri
-
Buat direktori tingkat atas yang diperlukan untuk lapisan Anda:
mkdir python
-
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) }
-
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 -
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.
Tambahkan layer ke fungsi Anda
Contoh aplikasi
Untuk contoh lebih lanjut tentang cara menggunakan layer Lambda, lihat contoh aplikasi layer-python