Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Bekerja dengan lapisan untuk fungsi Lambda Python

Mode fokus
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.

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

Lapisan Lambda adalah arsip file.zip yang berisi kode atau data tambahan. 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 berisi langkah-langkah dan panduan tentang cara mengemas dan membuat lapisan Lambda Python dengan dependensi pustaka eksternal dengan benar.

Prasyarat

Untuk mengikuti langkah-langkah di bagian ini, Anda harus memiliki yang berikut:

Sepanjang topik ini, kami mereferensikan layer-pythoncontoh aplikasi pada repositori awsdocs GitHub . Aplikasi ini berisi skrip yang mengunduh dependensi dan menghasilkan lapisan. Aplikasi ini juga berisi fungsi terkait yang menggunakan dependensi dari lapisan. Setelah membuat layer, Anda dapat menerapkan dan memanggil fungsi yang sesuai untuk memverifikasi bahwa semuanya berfungsi dengan baik. Runtime layer harus kompatibel dengan runtime fungsi. Misalnya, jika Anda menggunakan runtime Python 3.13 untuk fungsi Anda, layer Anda juga harus kompatibel dengan Python 3.13.

Dalam aplikasi layer-python sampel, ada dua contoh:

  • Contoh pertama melibatkan pengemasan requestsperpustakaan menjadi lapisan Lambda. layer/Direktori berisi skrip untuk menghasilkan lapisan. function/Direktori berisi fungsi sampel untuk membantu menguji bahwa lapisan berfungsi. Sebagian besar tutorial ini berjalan melalui cara membuat dan mengemas lapisan ini.

  • Contoh kedua melibatkan pengemasan numpyperpustakaan menjadi lapisan Lambda. layer-numpy/Direktori berisi skrip untuk menghasilkan lapisan. function-numpy/Direktori berisi fungsi sampel untuk membantu menguji bahwa lapisan berfungsi. Untuk contoh cara membuat dan mengemas lapisan ini, lihatBekerja dengan distribusi manylinux roda.

Kompatibilitas lapisan Python dengan Amazon Linux

Langkah pertama untuk membuat layer adalah untuk menggabungkan semua konten layer Anda ke dalam arsip file.zip. Karena fungsi Lambda berjalan di Amazon Linux, konten layer Anda harus dapat dikompilasi dan dibangun di lingkungan Linux.

Dalam Python, sebagian besar paket tersedia sebagai roda (.whlfile) selain distribusi sumber. Setiap roda adalah jenis distribusi yang dibangun yang mendukung kombinasi spesifik dari versi Python, sistem operasi, dan set instruksi mesin.

Roda berguna untuk memastikan bahwa lapisan Anda kompatibel dengan Amazon Linux. Saat Anda mengunduh dependensi Anda, unduh roda universal jika memungkinkan. (Secara default, pip pasang roda universal jika tersedia.) Roda universal berisi any sebagai tag platform, yang menunjukkan bahwa itu kompatibel dengan semua platform, termasuk Amazon Linux.

Dalam contoh berikut, Anda mengemas requests pustaka ke dalam lapisan Lambda. requestsPerpustakaan adalah contoh paket yang tersedia sebagai roda universal.

Tidak semua paket Python didistribusikan sebagai roda universal. Misalnya, numpymemiliki beberapa distribusi roda, masing-masing mendukung serangkaian platform yang berbeda. Untuk paket seperti itu, unduh manylinux distribusi untuk memastikan kompatibilitas dengan Amazon Linux. Untuk petunjuk terperinci tentang cara mengemas lapisan tersebut, lihatBekerja dengan distribusi manylinux roda.

Dalam kasus yang jarang terjadi, paket Python mungkin tidak tersedia sebagai roda. Jika hanya distribusi sumber (sdist) yang ada, maka kami sarankan untuk menginstal dan mengemas dependensi Anda di lingkungan Docker berdasarkan image wadah dasar Amazon Linux 2023. Kami juga merekomendasikan pendekatan ini jika Anda ingin menyertakan pustaka kustom Anda sendiri yang ditulis dalam bahasa lain seperti C/C++. Pendekatan ini meniru lingkungan eksekusi Lambda di Docker, dan memastikan bahwa dependensi paket non-Python Anda kompatibel dengan Amazon Linux.

Jalur lapisan untuk runtime Python

Saat Anda menambahkan lapisan ke fungsi, Lambda memuat konten lapisan ke dalam /opt direktori lingkungan eksekusi itu. Untuk setiap runtime Lambda, PATH variabel sudah menyertakan jalur folder tertentu dalam direktori. /opt Untuk memastikan bahwa Lambda mengambil konten layer Anda, file layer.zip Anda harus memiliki dependensinya di jalur folder berikut:

  • python

  • python/lib/python3.x/site-packages

Misalnya, file layer .zip yang dihasilkan yang Anda buat dalam tutorial ini memiliki struktur direktori berikut:

layer_content.zip └ python └ lib └ python3.13 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...

requestsPerpustakaan terletak dengan benar di python/lib/python3.13/site-packages direktori. Ini memastikan bahwa Lambda dapat menemukan pustaka selama pemanggilan fungsi.

Mengemas konten lapisan

Dalam contoh ini, Anda mengemas requests pustaka Python dalam file layer .zip. Selesaikan langkah-langkah berikut untuk menginstal dan mengemas konten lapisan.

Untuk menginstal dan mengemas konten lapisan Anda
  1. Kloning aws-lambda-developer-guide GitHub repo, yang berisi kode sampel yang Anda butuhkan di direktori. sample-apps/layer-python

    git clone https://github.com/awsdocs/aws-lambda-developer-guide.git
  2. Arahkan ke layer direktori aplikasi layer-python sampel. Direktori ini berisi skrip yang Anda gunakan untuk membuat dan mengemas lapisan dengan benar.

    cd aws-lambda-developer-guide/sample-apps/layer-python/layer
  3. Periksa requirements.txtfile. File ini mendefinisikan dependensi yang ingin Anda sertakan dalam lapisan, yaitu perpustakaan. requests Anda dapat memperbarui file ini untuk menyertakan dependensi apa pun yang ingin Anda sertakan dalam lapisan Anda sendiri.

    contoh requirements.txt
    requests==2.31.0
  4. Pastikan Anda memiliki izin untuk menjalankan kedua skrip.

    chmod 744 1-install.sh && chmod 744 2-package.sh
  5. Jalankan 1-install.shskrip menggunakan perintah berikut:

    ./1-install.sh

    Script ini digunakan venv untuk membuat lingkungan virtual Python bernama. create_layer Kemudian menginstal semua dependensi yang diperlukan dalam direktori. create_layer/lib/python3.11/site-packages

    contoh 1-install.sh
    python3.13 -m venv create_layer source create_layer/bin/activate pip install -r requirements.txt
  6. Jalankan 2-package.shskrip menggunakan perintah berikut:

    ./2-package.sh

    Script ini menyalin isi dari create_layer/lib direktori ke direktori baru bernamapython. Kemudian zip isi python direktori ke dalam file bernamalayer_content.zip. Ini adalah file.zip untuk layer Anda. Anda dapat membuka zip file dan memverifikasi bahwa itu berisi struktur file yang benar, seperti yang ditunjukkan pada Jalur lapisan untuk runtime Python bagian.

    contoh 2-package.sh
    mkdir python cp -r create_layer/lib python/ zip -r layer_content.zip python

Membuat layer

Di bagian ini, Anda mengambil layer_content.zip file yang Anda buat di bagian sebelumnya dan mengunggahnya sebagai lapisan Lambda. Anda dapat mengunggah layer menggunakan AWS Management Console atau Lambda API melalui AWS Command Line Interface ()AWS CLI. Saat Anda mengunggah file layer .zip Anda, dalam PublishLayerVersion AWS CLI perintah berikut, tentukan python3.13 sebagai runtime yang kompatibel dan arm64 sebagai arsitektur yang kompatibel.

aws lambda publish-layer-version --layer-name python-requests-layer \ --zip-file fileb://layer_content.zip \ --compatible-runtimes python3.13 \ --compatible-architectures "arm64"

Dari tanggapan, perhatikanLayerVersionArn, yang terlihat sepertiarn:aws:lambda:us-east-1:123456789012:layer:python-requests-layer:1. Anda akan memerlukan Amazon Resource Name (ARN) ini di langkah berikutnya dari tutorial ini, ketika Anda menambahkan layer ke fungsi Anda.

Menambahkan layer ke fungsi Anda

Di bagian ini, Anda menerapkan contoh fungsi Lambda yang menggunakan requests pustaka dalam kode fungsinya, lalu Anda melampirkan layer. Untuk menerapkan fungsi, Anda memerlukan peran eksekusi. Jika Anda tidak memiliki peran eksekusi yang ada, ikuti langkah-langkah di bagian yang dapat dilipat.

Untuk membuat peran eksekusi
  1. Buka halaman peran di konsol IAM.

  2. Pilih Buat peran.

  3. Buat peran dengan properti berikut.

    • Entitas tepercayaLambda.

    • IzinAWSLambdaBasicExecutionRole.

    • Nama peranlambda-role.

    AWSLambdaBasicExecutionRoleKebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

Untuk membuat peran eksekusi
  1. Buka halaman peran di konsol IAM.

  2. Pilih Buat peran.

  3. Buat peran dengan properti berikut.

    • Entitas tepercayaLambda.

    • IzinAWSLambdaBasicExecutionRole.

    • Nama peranlambda-role.

    AWSLambdaBasicExecutionRoleKebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

Kode fungsi Lambda mengimpor requests pustaka, membuat permintaan HTTP sederhana, dan kemudian mengembalikan kode status dan badan.

import requests def lambda_handler(event, context): print(f"Version of requests library: {requests.__version__}") request = requests.get('https://api.github.com/') return { 'statusCode': request.status_code, 'body': request.text }
Untuk menyebarkan fungsi Lambda
  1. Buka direktori function/ tersebut. Jika saat ini Anda berada di layer/ direktori, maka jalankan perintah berikut:

    cd ../function
  2. Buat paket penyebaran file.zip menggunakan perintah berikut:

    zip my_deployment_package.zip lambda_function.py
  3. Menyebarkan fungsi. Dalam AWS CLI perintah berikut, ganti --role parameter dengan peran eksekusi ARN Anda:

    aws lambda create-function --function-name python_function_with_layer \ --runtime python3.13 \ --architectures "arm64" \ --handler lambda_function.lambda_handler \ --role arn:aws:iam::123456789012:role/lambda-role \ --zip-file fileb://my_deployment_package.zip
  4. Selanjutnya, pasang layer ke fungsi Anda. Dalam AWS CLI perintah berikut, ganti --layers parameter dengan versi lapisan ARN yang Anda catat sebelumnya:

    aws lambda update-function-configuration --function-name python_function_with_layer \ --cli-binary-format raw-in-base64-out \ --layers "arn:aws:lambda:us-east-1:123456789012:layer:python-requests-layer:1"
  5. Terakhir, coba panggil fungsi Anda menggunakan AWS CLI perintah berikut:

    aws lambda invoke --function-name python_function_with_layer \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

    Anda akan melihat output seperti ini:

    { "StatusCode": 200, "ExecutedVersion": "$LATEST" }

    response.jsonFile output berisi rincian tentang respon.

Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.

Untuk menghapus layer Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih layer yang Anda buat.

  3. Pilih Hapus, lalu pilih Hapus lagi.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm kolom input teks dan pilih Hapus.

Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.

Untuk menghapus layer Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih layer yang Anda buat.

  3. Pilih Hapus, lalu pilih Hapus lagi.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm kolom input teks dan pilih Hapus.

Bekerja dengan distribusi manylinux roda

Terkadang, paket yang ingin Anda sertakan sebagai dependensi tidak akan memiliki roda universal (khususnya, tidak memiliki any tag platform). Dalam hal ini, unduh roda yang mendukung manylinux sebagai gantinya. Ini memastikan bahwa pustaka lapisan Anda kompatibel dengan Amazon Linux.

numpyadalah salah satu paket yang tidak memiliki roda universal. Jika Anda ingin menyertakan numpy paket di layer Anda, maka Anda dapat menyelesaikan langkah-langkah contoh berikut untuk menginstal dan mengemas layer Anda dengan benar.

Untuk menginstal dan mengemas konten lapisan Anda
  1. Kloning aws-lambda-developer-guide GitHub repo, yang berisi kode sampel yang Anda butuhkan di direktori. sample-apps/layer-python

    git clone https://github.com/awsdocs/aws-lambda-developer-guide.git
  2. Arahkan ke layer-numpy direktori aplikasi layer-python sampel. Direktori ini berisi skrip yang Anda gunakan untuk membuat dan mengemas lapisan dengan benar.

    cd aws-lambda-developer-guide/sample-apps/layer-python/layer-numpy
  3. Periksa requirements.txtfile. File ini mendefinisikan dependensi yang ingin Anda sertakan dalam lapisan Anda, yaitu perpustakaan. numpy Di sini, Anda menentukan URL distribusi manylinux roda yang kompatibel dengan Python 3.11, Amazon Linux, dan set instruksix86_64:

    contoh requirements.txt
    https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  4. Pastikan Anda memiliki izin untuk menjalankan kedua skrip.

    chmod 744 1-install.sh && chmod 744 2-package.sh
  5. Jalankan 1-install.shskrip menggunakan perintah berikut:

    ./1-install.sh

    Script ini digunakan venv untuk membuat lingkungan virtual Python bernama. create_layer Kemudian menginstal semua dependensi yang diperlukan dalam direktori. create_layer/lib/python3.11/site-packages pipPerintah berbeda dalam hal ini, karena Anda harus menentukan --platform tag sebagaimanylinux2014_x86_64. Ini memberitahu pip untuk menginstal manylinux roda yang benar, bahkan jika mesin lokal Anda menggunakan macOS atau Windows.

    contoh 1-install.sh
    python3.11 -m venv create_layer source create_layer/bin/activate pip install -r requirements.txt --platform=manylinux2014_x86_64 --only-binary=:all: --target ./create_layer/lib/python3.11/site-packages
  6. Jalankan 2-package.shskrip menggunakan perintah berikut:

    ./2-package.sh

    Script ini menyalin isi dari create_layer/lib direktori ke direktori baru bernamapython. Kemudian zip isi python direktori ke dalam file bernamalayer_content.zip. Ini adalah file.zip untuk layer Anda. Anda dapat membuka zip file dan memverifikasi bahwa itu berisi struktur file yang benar seperti yang ditunjukkan pada Jalur lapisan untuk runtime Python bagian.

    contoh 2-package.sh
    mkdir python cp -r create_layer/lib python/ zip -r layer_content.zip python

Untuk mengunggah layer ini ke Lambda, gunakan perintah berikut: PublishLayerVersion AWS CLI

aws lambda publish-layer-version --layer-name python-numpy-layer \ --zip-file fileb://layer_content.zip \ --compatible-runtimes python3.11 \ --compatible-architectures "x86_64"

Dari tanggapan, perhatikanLayerVersionArn, yang terlihat sepertiarn:aws:lambda:us-east-1:123456789012:layer:python-numpy-layer:1. Untuk memverifikasi bahwa lapisan Anda berfungsi seperti yang diharapkan, gunakan fungsi Lambda di function-numpy direktori.

Untuk menyebarkan fungsi Lambda
  1. Buka direktori function-numpy/ tersebut. Jika saat ini Anda berada di layer-numpy/ direktori, maka jalankan perintah berikut:

    cd ../function-numpy
  2. Tinjau kode fungsi. Fungsi mengimpor numpy perpustakaan, membuat numpy array sederhana, dan kemudian mengembalikan kode status dummy dan body.

    import json import numpy as np def lambda_handler(event, context): x = np.arange(15, dtype=np.int64).reshape(3, 5) print(x) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
  3. Buat paket penyebaran file.zip menggunakan perintah berikut:

    zip my_deployment_package.zip lambda_function.py
  4. Menyebarkan fungsi. Dalam AWS CLI perintah berikut, ganti --role parameter dengan peran eksekusi ARN Anda:

    aws lambda create-function --function-name python_function_with_numpy \ --runtime python3.11 \ --handler lambda_function.lambda_handler \ --role arn:aws:iam::123456789012:role/lambda-role \ --zip-file fileb://my_deployment_package.zip
  5. Selanjutnya, pasang layer ke fungsi Anda. Dalam AWS CLI perintah berikut, ganti --layers parameter dengan ARN versi layer Anda:

    aws lambda update-function-configuration --function-name python_function_with_numpy \ --cli-binary-format raw-in-base64-out \ --layers "arn:aws:lambda:us-east-1:123456789012:layer:python-requests-layer:1"
  6. Terakhir, coba panggil fungsi Anda menggunakan AWS CLI perintah berikut:

    aws lambda invoke --function-name python_function_with_numpy \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

    Anda akan melihat output seperti ini:

    { "StatusCode": 200, "ExecutedVersion": "$LATEST" }

    Anda dapat memeriksa log fungsi untuk memverifikasi bahwa kode mencetak numpy array ke standar keluar.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.