

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
<a name="python-layers"></a>

Gunakan [lapisan Lambda](chapter-layers.md) untuk mengemas kode dan dependensi yang ingin Anda gunakan kembali di beberapa fungsi. Lapisan biasanya berisi dependensi pustaka, [runtime kustom](runtimes-custom.md), 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.

1. Buat layer di Lambda.

1. Tambahkan layer ke fungsi Anda.

**Topics**
+ [

## Package konten layer Anda
](#python-layers-package)
+ [

## Buat layer di Lambda
](#publishing-layer)
+ [

## Tambahkan layer ke fungsi Anda
](#python-layer-adding)
+ [

## Contoh aplikasi
](#python-layer-sample-app)

## Package konten layer Anda
<a name="python-layers-package"></a>

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.14, gunakan runtime Python 3.14 untuk fungsi Anda.
+ File.zip Anda harus menyertakan `python` direktori di tingkat root.
+ Paket di lapisan 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` atau`pandas`) atau modul dan paket Python Anda sendiri.

### Ketergantungan pihak ketiga
<a name="python-layers-third-party-dependencies"></a>

**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](python-package.md#python-package-native-libraries)

------
#### [ requirements.txt ]

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

**Example 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](python-package.md#python-package-native-libraries)

------

1. Zip isi `python` direktori.

------
#### [ 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 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.

### Kustom modul Python
<a name="custom-python-modules"></a>

**Untuk membuat layer menggunakan kode Anda sendiri**

1. Buat direktori tingkat atas yang diperlukan untuk lapisan Anda:

   ```
   mkdir python
   ```

1. Buat modul Python Anda di direktori. `python` Modul contoh berikut memvalidasi pesanan dengan mengonfirmasi bahwa mereka berisi informasi yang diperlukan.  
**Example 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)
       }
   ```

1. Zip isi `python` direktori.

------
#### [ 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
   ```

1. 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](testing-functions.md#invoke-with-event) 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
<a name="publishing-layer"></a>

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

------
#### [ AWS CLI ]

Jalankan [publish-layer-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/publish-layer-version.html) AWS CLI perintah 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](https://docs.aws.amazon.com/lambda/latest/api/API_PublishLayerVersion.html#lambda-PublishLayerVersion-request-CompatibleRuntimes) adalah opsional. Saat ditentukan, Lambda menggunakan parameter ini untuk memfilter lapisan di konsol Lambda.

------
#### [ Console ]

**Untuk membuat lapisan (konsol)**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/layers) di konsol Lambda.

1. Pilih **Buat lapisan**.

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

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

1. Pilih **Buat**.

------

## Tambahkan layer ke fungsi Anda
<a name="python-layer-adding"></a>

------
#### [ AWS CLI ]

Untuk melampirkan layer ke fungsi Anda, jalankan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html) 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](chapter-layers.md#lambda-layer-versions).

```
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-format**Opsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan`aws configure set cli-binary-format raw-in-base64-out`. Untuk informasi selengkapnya, lihat [opsi baris perintah global yang AWS CLI didukung](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) di *Panduan AWS Command Line Interface Pengguna untuk Versi 2*.

------
#### [ Console ]

**Untuk menambahkan lapisan ke fungsi**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsinya.

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

1. Di bawah **Pilih layer**, pilih **Custom layers**, dan kemudian pilih layer Anda.
**catatan**  
Jika Anda tidak menambahkan [runtime yang kompatibel](https://docs.aws.amazon.com/lambda/latest/api/API_PublishLayerVersion.html#lambda-PublishLayerVersion-request-CompatibleRuntimes) saat membuat layer, layer Anda tidak akan tercantum di sini. Anda dapat menentukan lapisan ARN sebagai gantinya.

1. Pilih **Tambahkan**.

------

## Contoh aplikasi
<a name="python-layer-sample-app"></a>

Untuk contoh lebih lanjut tentang cara menggunakan layer Lambda, lihat contoh aplikasi [layer-python](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/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.