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”.

Membangun runtime kustom untuk AWS Lambda

Mode fokus
Membangun runtime kustom untuk AWS Lambda - 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.

Anda dapat menerapkan AWS Lambda runtime dalam bahasa pemrograman apa pun. Runtime adalah program yang menjalankan metode handler fungsi Lambda saat fungsi tersebut dipanggil. Anda dapat menyertakan runtime ke dalam paket deployment fungsi Anda atau mendistribusikannya dalam lapisan. Saat Anda membuat fungsi Lambda, pilih runtime khusus OS (keluarga runtime). provided

catatan

Membuat runtime kustom adalah kasus penggunaan lanjutan. Jika Anda mencari informasi tentang kompilasi ke biner asli atau menggunakan off-the-shelf runtime pihak ketiga, lihat. Kapan menggunakan runtime khusus OS Lambda

Untuk panduan tentang proses penerapan runtime kustom, lihat. Tutorial: Membangun runtime kustom Anda juga dapat menjelajahi runtime kustom yang diimplementasikan dalam C++ di aws-lambda-cppawslabs/ on. GitHub

Persyaratan

Runtime khusus harus menyelesaikan tugas inisialisasi dan pemrosesan tertentu. Runtime menjalankan kode pengaturan fungsi, membaca nama handler dari variabel lingkungan, dan membaca event invokasi dari runtime Lambda. API Runtime meneruskan data event ke handler fungsi, dan memposting respons dari handler kembali ke Lambda.

Tugas inisialisasi

Tugas inisialisasi dijalankan sekali per instans fungsi untuk menyiapkan lingkungan untuk menangani invokasi.

  • Ambil pengaturan – Baca variabel lingkungan untuk mendapatkan detail tentang fungsi dan lingkungan.

    • _HANDLER – Lokasi ke handler, dari konfigurasi fungsi. Format standar adalah file.method, dengan file adalah nama file tanpa ekstensi, dan method merupakan nama metode atau fungsi yang ditentukan dalam file.

    • LAMBDA_TASK_ROOT – Direktori yang berisi kode fungsi.

    • AWS_LAMBDA_RUNTIME_API— Host dan port runtimeAPI.

    Untuk daftar lengkap variabel yang tersedia, lihatVariabel lingkungan runtime yang ditetapkan.

  • Inisialisasi fungsi – Muat file handler dan jalankan kode global atau statis yang ada di dalamnya. Fungsi harus membuat sumber daya statis seperti SDK klien dan koneksi database satu kali, dan menggunakannya kembali untuk beberapa invokasi.

  • Mengatasi kesalahan — Jika terjadi kesalahan, hubungi kesalahan inisialisasi API dan segera keluar.

Inisialisasi diperhitungkan dalam waktu dan batas waktu eksekusi yang ditagih. Saat eksekusi memicu inisialisasi instans baru dari fungsi, Anda dapat melihat waktu inisialisasi dalam log dan jejak AWS X-Ray.

contoh log
REPORT RequestId: f8ac1208... Init Duration: 48.26 ms Duration: 237.17 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 26 MB

Memproses tugas

Saat belajar, runtime menggunakan antarmuka runtime Lambda untuk mengelola event masuk dan melaporkan kesalahan. Setelah menyelesaikan tugas inisialisasi, runtime memproses event masuk secara berulang. Dalam kode runtime Anda, lakukan langkah berikut secara berurutan.

  • Dapatkan event — Hubungi doa beikutnya API untuk mendapatkan event berikutnya. Badan respons berisi data event. Header respons berisi ID permintaan dan informasi lainnya.

  • Sebari header pelacakan — Dapatkan header pelacakan X-Ray dari Lambda-Runtime-Trace-Id header dalam respons. API Tetapkan variabel lingkungan _X_AMZN_TRACE_ID secara lokal dengan nilai yang sama. SDKX-Ray menggunakan nilai ini untuk menghubungkan data pelacakan antar layanan.

  • Buat objek konteks — Buat objek dengan informasi konteks dari variabel lingkungan dan header dalam API respons.

  • Memanggil handler fungsi – Berikan event dan objek konteks ke handler.

  • Menangani respons — Hubungi respons invokasi API untuk memposting respons dari penanggung jawab.

  • Mengatasi kesalahan — Jika terjadi kesalahan, hubungi kesalahan invokasi. API

  • Pembersihan – Lepaskan sumber daya yang tidak digunakan, kirim data ke layanan lain, atau lakukan tugas tambahan sebelum melanjutkan ke event berikutnya.

Entrypoint

Titik entri runtime kustom adalah file eksekusi bernama bootstrap. File bootstrap dapat menjadi runtime, atau dapat memanggil file lain yang membuat runtime. Jika root paket penyebaran Anda tidak berisi file bernamabootstrap, Lambda mencari file di lapisan fungsi. Jika bootstrap file tidak ada atau tidak dapat dijalankan, fungsi Anda akan mengembalikan Runtime.InvalidEntrypoint kesalahan saat dipanggil.

Berikut adalah bootstrap file contoh yang menggunakan versi bundel Node.js untuk menjalankan JavaScript runtime dalam file terpisah bernama. runtime.js

contoh bootstrap
#!/bin/sh cd $LAMBDA_TASK_ROOT ./node-v11.1.0-linux-x64/bin/node runtime.js

Menerapkan streaming respons dalam runtime khusus

Untuk fungsi streaming respons, titik akhir response dan error titik akhir memiliki perilaku yang sedikit dimodifikasi yang memungkinkan runtime mengalirkan sebagian respons ke klien dan mengembalikan muatan dalam potongan. Untuk informasi selengkapnya tentang perilaku tertentu, lihat berikut ini:

  • /runtime/invocation/AwsRequestId/response— Menyebarkan Content-Type header dari runtime untuk dikirim ke klien. Lambda mengembalikan payload respons dalam potongan melalui HTTP /1.1 chunked transfer encoding. Stream respons dapat berukuran hingga 20 MiB. Untuk melakukan streaming respons ke Lambda, runtime harus:

    • Atur Lambda-Runtime-Function-Response-Mode HTTP header kestreaming.

    • Atur header Transfer-Encoding ke chunked.

    • Tulis respons yang sesuai dengan spesifikasi encoding transfer chunked HTTP /1.1.

    • Tutup koneksi yang mendasarinya setelah berhasil menulis respons.

  • /runtime/invocation/AwsRequestId/error— Runtime dapat menggunakan titik akhir ini untuk melaporkan kesalahan fungsi atau runtime ke Lambda, yang juga menerima header. Transfer-Encoding Titik akhir ini hanya dapat dipanggil sebelum runtime mulai mengirimkan respons pemanggilan.

  • Laporkan kesalahan midstream menggunakan trailer kesalahan di /runtime/invocation/AwsRequestId/response — Untuk melaporkan kesalahan yang terjadi setelah runtime mulai menulis respons pemanggilan, runtime dapat secara opsional melampirkan header tambahan bernama dan. HTTP Lambda-Runtime-Function-Error-Type Lambda-Runtime-Function-Error-Body Lambda memperlakukan ini sebagai respons yang berhasil dan meneruskan metadata kesalahan yang disediakan runtime kepada klien.

    catatan

    Untuk melampirkan header tambahan, runtime harus menetapkan nilai Trailer header di awal permintaan. HTTP Ini adalah persyaratan dari spesifikasi encoding transfer chunked HTTP /1.1.

    • Lambda-Runtime-Function-Error-Type— Jenis kesalahan yang ditemui runtime. Header ini terdiri dari nilai string. Lambda menerima string apa pun, tetapi kami merekomendasikan format <category.reason>. Misalnya,Runtime.APIKeyNotFound.

    • Lambda-Runtime-Function-Error-Body— Informasi yang dikodekan Base64 tentang kesalahan.

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