Anda dapat menjalankan kode JavaScript dengan Node. js di AWS Lambda. Lambda menyediakan runtime untuk Node. js yang menjalankan kode Anda untuk memproses acara. Kode Anda berjalan di lingkungan yang mencakup AWS SDK for JavaScript, dengan kredensial dari peran AWS Identity and Access Management (IAM) yang Anda kelola
Lambda mendukung Node berikut. runtime js
NameIdentifierSDKSistem operasiArsitekturPenghentian (Fase 1)
Node. js 18
nodejs18.x
3. 188. 0
AmazonLinux 2
x86_64, lengan64
Node. js 16
nodejs16.x_
2. 1083. 0
AmazonLinux 2
x86_64, lengan64
Node. js 14
nodejs14.x
2. 1055. 0
AmazonLinux 2
x86_64, lengan64
Node. js 12
nodejs12.x
2. 1055. 0
AmazonLinux 2
x86_64, lengan64
31 Maret 2023
Runtime Node 18 menggunakan AWS SDK untuk JavaScript v3. Untuk memigrasikan fungsi ke Node 18 dari waktu proses sebelumnya, ikuti lokakarya migrasi di GitHub. Untuk informasi selengkapnya tentang AWS SDK untuk JavaScript versi 3, lihat postingan blog AWS SDK for JavaScript Modular kini tersedia secara umum
Fungsi Lambda menggunakan peran eksekusi untuk mendapatkan izin menulis log ke Amazon CloudWatch Logs, dan untuk mengakses layanan dan sumber daya lainnya. Jika Anda belum memiliki peran eksekusi untuk pengembangan fungsi, buatlah
Untuk membuat peran eksekusi
Buka di konsol IAM
Pilih Buat peran
Buat peran dengan properti berikut
Entitas tepercaya – Lambda
Izin – AWSLambdaBasicExecutionRole
Nama peran – lambda-role
Kebijakan AWSLambdaBasicExecutionRole memiliki izin yang dibutuhkan fungsi untuk menulis log ke CloudWatch Logs
Anda dapat menambahkan izin ke peran tersebut nanti, atau menukarnya dengan peran lain yang khusus untuk satu fungsi
Untuk membuat Node. fungsi js
Buka konsol Lambda
Pilih Buat fungsi
Konfigurasikan pengaturan berikut
Nama – my-function
Waktu proses – Node. js 18. x
Peran – Pilih peran yang ada
Peran yang ada – lambda-role
Pilih Buat fungsi
Untuk mengonfigurasi peristiwa pengujian, pilih Tes
Untuk nama Acara, masukkan test
Pilih Simpan perubahan
Untuk menjalankan fungsi, pilih Test
Konsol membuat fungsi Lambda dengan satu file sumber bernama index.js atau index.mjs. Anda dapat mengedit file ini dan menambahkan lebih banyak file di dalamnya. Untuk menyimpan perubahan Anda, pilih Simpan. Kemudian, untuk menjalankan kode Anda, pilih Test
Konsol Lambda menggunakan AWS Cloud9 untuk menyediakan lingkungan pengembangan terintegrasi di browser. Anda juga dapat menggunakan AWS Cloud9 untuk mengembangkan fungsi Lambda di lingkungan Anda sendiri. Untuk informasi selengkapnya, lihat Bekerja dengan Fungsi Lambda di panduan pengguna AWS Cloud9
File index.js atau index.mjs mengekspor fungsi bernama nodejs16.x2 yang mengambil objek peristiwa dan objek konteks. Ini adalah fungsi handler yang dipanggil Lambda saat fungsi tersebut dipanggil. Node. runtime fungsi js mendapatkan acara pemanggilan dari Lambda dan meneruskannya ke handler. Dalam konfigurasi fungsi, nilai handler adalah nodejs16.x3
Saat Anda menyimpan kode fungsi, konsol Lambda akan membuat a. paket penerapan arsip file zip. Saat Anda mengembangkan kode fungsi di luar konsol (menggunakan IDE), Anda perlu membuat paket penerapan untuk mengunggah kode Anda ke fungsi Lambda
Untuk memulai pengembangan aplikasi di lingkungan lokal Anda, terapkan salah satu contoh aplikasi yang tersedia di repositori GitHub panduan ini
Contoh aplikasi Lambda di Node. js
blank-nodejs– Sebuah Node. js yang menunjukkan penggunaan logging, variabel lingkungan, pelacakan AWS X-Ray, lapisan, pengujian unit, dan AWS SDK
nodejs-apig– Fungsi dengan titik akhir API publik yang memproses peristiwa dari API Gateway dan mengembalikan respons HTTP
rds-mysql– Fungsi yang menyampaikan kueri ke MySQL untuk Database RDS. Sampel ini menyertakan VPC pribadi dan instans database yang dikonfigurasi dengan kata sandi di AWS Secrets Manager
efs-nodejs– Fungsi yang menggunakan sistem file Amazon EFS di Amazon VPC. Contoh ini mencakup VPC, sistem file, target pemasangan, dan titik akses yang dikonfigurasi untuk digunakan dengan Lambda
list-manager– Fungsi memproses peristiwa dari aliran data Amazon Kinesis dan memperbarui daftar agregat di Amazon DynamoDB. Fungsi ini menyimpan rekaman setiap peristiwa di Database MySQL untuk RDS di VPC pribadi. Sampel ini menyertakan VPC pribadi dengan titik akhir VPC untuk DynamoDB dan instans database
kesalahan-prosesor– Sebuah Node. Fungsi js menghasilkan kesalahan untuk persentase permintaan tertentu. Langganan CloudWatch Logs menjalankan fungsi kedua saat kesalahan direkam. Fungsi prosesor menggunakan AWS SDK untuk mengumpulkan detail tentang permintaan dan menyimpannya di bucket Amazon S3
Runtime fungsi meneruskan objek konteks ke handler, selain event pemanggilan. Objek konteks berisi informasi tambahan tentang pemanggilan, fungsi, dan lingkungan eksekusi. Informasi lebih lanjut tersedia dari variabel lingkungan
Fungsi Lambda Anda dilengkapi dengan grup log CloudWatch Logs. Runtime fungsi mengirimkan detail tentang setiap pemanggilan ke CloudWatch Logs. Ini menyampaikan semua log yang dihasilkan fungsi Anda selama pemanggilan. Jika fungsi Anda mengembalikan kesalahan, Lambda memformat kesalahan dan mengembalikannya ke invoker
Node. inisialisasi js
Node. js memiliki model loop peristiwa unik yang menyebabkan perilaku inisialisasi berbeda dari runtime lainnya. Secara khusus, Node. js menggunakan model I/O non-pemblokiran yang mendukung operasi asinkron. Model ini memungkinkan Node. js agar bekerja secara efisien untuk sebagian besar beban kerja. Misalnya, jika sebuah Node. js membuat panggilan jaringan, permintaan itu dapat ditetapkan sebagai operasi asinkron dan ditempatkan ke dalam antrean panggilan balik. Fungsi dapat terus memproses operasi lain dalam tumpukan panggilan utama tanpa diblokir dengan menunggu panggilan jaringan kembali. Setelah panggilan jaringan selesai, panggilan baliknya dijalankan dan kemudian dihapus dari antrean panggilan balik
Beberapa tugas inisialisasi dapat berjalan secara asinkron. Tugas asinkron ini tidak dijamin untuk menyelesaikan eksekusi sebelum pemanggilan. Misalnya, kode yang membuat panggilan jaringan untuk mengambil parameter dari AWS Parameter Store mungkin belum selesai saat Lambda menjalankan fungsi penangan. Akibatnya, variabel mungkin nol selama pemanggilan. Untuk menghindari hal ini, pastikan bahwa variabel dan kode asinkron lainnya telah diinisialisasi sepenuhnya sebelum melanjutkan dengan logika bisnis inti fungsi lainnya.
Atau, Anda dapat menetapkan kode fungsi Anda sebagai modul ES, memungkinkan Anda untuk menggunakan nodejs16.x4 di tingkat atas file, di luar cakupan penangan fungsi Anda. Saat Anda nodejs16.x_4 setiap nodejs16.x6, kode inisialisasi asinkron selesai sebelum pemanggilan handler, memaksimalkan keefektifan konkurensi yang disediakan dalam mengurangi latensi cold start. Untuk informasi lebih lanjut dan contoh, lihat Menggunakan Node. modul js ES dan tingkat atas menunggu di AWS Lambda
Menunjuk penangan fungsi sebagai modul ES
Secara default, Lambda memperlakukan file dengan akhiran nodejs16.x7 sebagai modul CommonJS. Secara opsional, Anda dapat menetapkan kode Anda sebagai modul ES. Anda dapat melakukannya dengan dua cara. menentukan nodejs16.x_8 sebagai nodejs16.x9 dalam file nodejs14.x0 fungsi, atau dengan menggunakan ekstensi nama file nodejs14.x1. Pada pendekatan pertama, kode fungsi Anda memperlakukan semua file nodejs16.x7 sebagai modul ES, sedangkan pada skenario kedua, hanya file yang Anda tentukan dengan nodejs14.x1 yang merupakan modul ES. Anda dapat menggabungkan modul ES dan modul CommonJS dengan menamainya masing-masing nodejs14.x1 dan nodejs14.x5, karena file nodejs14.x1 selalu merupakan modul ES dan nodejs14.x5 file selalu merupakan modul CommonJS
Di Node. js 14 dan Node. js 16, runtime Lambda memuat modul ES dari folder yang sama dengan penangan fungsi Anda, atau subfolder. Dimulai dengan Node. js 18, Lambda mencari folder di variabel lingkungan nodejs14.x8 saat memuat modul ES. Dengan Node. js 18, Anda dapat memuat AWS SDK yang disertakan dalam runtime menggunakan modul ES nodejs14.x9 pernyataan. Anda juga dapat memuat modul ES dari