Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Karena Lambda adalah layanan komputasi tanpa server, berbasis peristiwa, ia menggunakan paradigma pemrograman yang berbeda untuk aplikasi web tradisional. Jika Anda baru mengenal Lambda atau pengembangan tanpa server, bagian berikut menjelaskan beberapa konsep dasar utama yang akan membantu Anda memulai jalur pembelajaran Anda. Selain penjelasan dari setiap konsep, bagian ini juga berisi tautan ke tutorial, dokumentasi terperinci, dan sumber daya lain yang dapat Anda gunakan untuk memperluas pemahaman Anda tentang setiap topik.
Di halaman ini, Anda akan mempelajari hal-hal berikut:
-
Fungsi Lambda - blok bangunan dasar Lambda yang Anda gunakan untuk membangun aplikasi
-
Runtime Lambda - lingkungan khusus bahasa tempat fungsi Anda berjalan
-
Pemicu dan pemetaan sumber peristiwa - cara bagi orang lain Layanan AWS untuk menjalankan fungsi Anda sebagai respons terhadap peristiwa tertentu
-
Objek acara - objek JSON yang berisi data peristiwa untuk fungsi Anda untuk memproses
-
Izin Lambda - cara Anda mengontrol fungsi lain yang dapat berinteraksi dengan Layanan AWS Anda dan siapa yang dapat mengakses fungsi Anda
Tip
Jika Anda ingin memulai dengan memahami pengembangan tanpa server secara lebih umum, lihat Memahami perbedaan antara pengembangan tradisional dan tanpa server di Panduan Pengembang AWS Tanpa Server.
Fungsi Lambda
Di Lambda, fungsi adalah blok bangunan dasar yang Anda gunakan untuk membuat aplikasi. Fungsi Lambda adalah bagian dari kode yang berjalan sebagai respons terhadap peristiwa, seperti pengguna mengklik tombol di situs web atau file yang diunggah ke bucket Amazon Simple Storage Service (Amazon S3). Anda dapat menganggap fungsi sebagai semacam program mandiri dengan properti berikut.
-
Fungsi memiliki satu pekerjaan atau tujuan tertentu
-
Mereka berjalan hanya ketika diperlukan dalam menanggapi peristiwa tertentu
-
Mereka secara otomatis berhenti berjalan ketika selesai
Ketika fungsi berjalan sebagai respons terhadap suatu peristiwa, Lambda menjalankan fungsi handler fungsi tersebut. Data tentang peristiwa yang menyebabkan fungsi berjalan diteruskan langsung ke handler. Sementara kode dalam fungsi Lambda dapat berisi lebih dari satu metode atau fungsi, fungsi Lambda hanya dapat memiliki satu handler.
Untuk membuat fungsi Lambda, Anda menggabungkan kode fungsi dan dependensinya dalam paket penerapan. Lambda mendukung dua jenis paket penyebaran, arsip file.zip dan gambar kontainer.
Untuk mendapatkan pemahaman yang lebih baik tentang fungsi Lambda, kami sarankan Anda memulai dengan menyelesaikan Buat fungsi Lambda pertama Anda tutorial, jika Anda belum melakukannya. Tutorial ini memberikan detail lebih lanjut tentang fungsi handler dan cara meneruskan data masuk dan keluar dari fungsi Anda. Ini juga memberikan pengantar untuk membuat log fungsi.
Lingkungan eksekusi Lambda dan runtime
Fungsi Lambda berjalan di dalam lingkungan eksekusi yang aman dan terisolasi yang dikelola Lambda untuk Anda. Lingkungan eksekusi ini mengelola proses dan sumber daya yang diperlukan untuk menjalankan fungsi Anda. Saat fungsi pertama kali dipanggil, Lambda menciptakan lingkungan eksekusi baru untuk fungsi yang akan dijalankan. Setelah fungsi selesai berjalan, Lambda tidak langsung menghentikan lingkungan eksekusi; jika fungsi dipanggil lagi, Lambda dapat menggunakan kembali lingkungan eksekusi yang ada.
Lingkungan eksekusi Lambda juga berisi runtime, lingkungan khusus bahasa yang menyampaikan informasi peristiwa dan respons antara Lambda dan fungsi Anda. Lambda menyediakan sejumlah runtime terkelola untuk bahasa pemrograman paling populer, atau Anda dapat membuatnya sendiri.
Untuk runtime terkelola, Lambda secara otomatis menerapkan pembaruan keamanan dan tambalan ke fungsi menggunakan runtime.
Pemicu dan pemetaan sumber peristiwa
Meskipun Anda dapat menjalankan fungsi Lambda secara manual menggunakan AWS Command Line Interface AWS CLI() atau dengan menggunakan API Lambda, fungsi Lambda lebih umum dalam aplikasi produksi agar fungsi Anda dipanggil oleh yang Layanan AWS lain sebagai respons terhadap peristiwa tertentu. Misalnya, Anda mungkin ingin fungsi berjalan setiap kali item ditambahkan ke tabel Amazon DynamoDB.
Untuk mengonfigurasi fungsi agar berjalan sebagai respons terhadap peristiwa tertentu, Anda menambahkan pemicu. Saat Anda membuat pemicu, other Layanan AWS dapat memanggil fungsi Anda secara langsung dengan mendorong objek acara ke Lambda setiap kali peristiwa tertentu terjadi. Sebuah fungsi dapat memiliki beberapa pemicu, yang masing-masing memanggil fungsi Anda secara independen.
Beberapa jenis layanan streaming dan antrian, seperti Amazon Kinesis atau Amazon Simple Queue Service (Amazon SQS), tidak dapat langsung memanggil Lambda menggunakan pemicu. Untuk layanan ini, Anda perlu membuat pemetaan sumber peristiwa sebagai gantinya. Pemetaan sumber peristiwa adalah jenis khusus sumber daya Lambda yang terus-menerus melakukan polling aliran atau antrian untuk memeriksa peristiwa baru. Misalnya, pemetaan sumber peristiwa mungkin melakukan polling antrean Amazon SQS untuk memeriksa apakah pesan baru telah ditambahkan. Lambda mengumpulkan pesan baru ke dalam satu muatan hingga batas yang Anda konfigurasikan tercapai, lalu memanggil fungsi Anda dengan satu objek peristiwa yang berisi semua catatan dalam batch.
Cara termudah untuk membuat pemicu atau pemetaan sumber peristiwa adalah dengan menggunakan konsol Lambda. Meskipun sumber daya dasar yang dibuat Lambda dan cara fungsi Anda dipanggil berbeda, proses untuk membuat pemicu atau pemetaan sumber peristiwa di konsol menggunakan metode yang sama.
Untuk melihat contoh pemicu yang sedang beraksi, mulailah dengan menjalankan pemicu Menggunakan pemicu Amazon S3 untuk menjalankan tutorial fungsi Lambda, atau untuk ikhtisar umum penggunaan pemicu dan instruksi tentang cara membuat pemicu menggunakan konsol Lambda, lihat. Memanggil Lambda dengan acara dari layanan lain AWS
Objek acara
Lambda adalah layanan komputasi berbasis peristiwa. Ini berarti kode Anda berjalan sebagai respons terhadap peristiwa yang dihasilkan oleh produsen eksternal. Data peristiwa diteruskan ke fungsi Anda sebagai dokumen berformat JSON, yang dikonversi runtime menjadi objek untuk diproses kode Anda. Misalnya, dalam Python, runtime mengkonversi objek JSON ke kamus Python dan meneruskan ini ke fungsi sebagai argumen input. event
Ketika acara dihasilkan oleh yang lain Layanan AWS, format acara tergantung pada layanan yang menghasilkannya. Misalnya, peristiwa Amazon S3 menyertakan nama bucket yang memicu fungsi dan informasi Anda tentang objek di bucket tersebut. Untuk mempelajari lebih lanjut tentang format peristiwa yang dihasilkan oleh berbeda Layanan AWS, lihat bab-babnya yang relevan diMemanggil Lambda dengan acara dari layanan lain AWS.
Anda juga dapat menjalankan fungsi Lambda secara langsung dengan menggunakan konsol Lambda AWS CLI
contoh acara Lambda kustom
{ "Location": "SEA", "WeatherData":{ "TemperaturesF":{ "MinTempF": 22, "MaxTempF": 78 }, "PressuresHPa":{ "MinPressureHPa": 1015, "MaxPressureHPa": 1027 } } }
Karena runtime Lambda mengubah acara menjadi objek, Anda dapat dengan mudah menetapkan nilai dalam acara ke variabel tanpa harus deserialisasi JSON. Contoh cuplikan kode berikut menunjukkan cara menetapkan nilai suhu minimum dari contoh peristiwa sebelumnya ke variabel MinTemp
menggunakan runtime Python dan Node.js. Dalam kedua kasus, objek event diteruskan ke fungsi handler fungsi Anda sebagai argumen bernamaevent
.
contoh Cuplikan kode Python
MinTemp = event['WeatherData']['TemperaturesF']['MinTempF']
contoh Cuplikan kode Node.js
let MinTemp = event.WeatherData.TemperaturesF.MinTempF;
Untuk contoh menjalankan fungsi Lambda dengan acara khusus, lihat. Buat fungsi Lambda pertama Anda
Izin Lambda
Untuk Lambda, ada dua jenis izin utama yang perlu Anda konfigurasikan:
-
Izin yang dibutuhkan fungsi Anda untuk mengakses lainnya Layanan AWS
-
Izin yang pengguna lain dan Layanan AWS butuhkan untuk mengakses fungsi Anda
Bagian berikut menjelaskan kedua jenis izin ini dan mendiskusikan praktik terbaik untuk menerapkan izin hak istimewa paling sedikit.
Izin untuk fungsi untuk mengakses sumber daya lain AWS
Fungsi Lambda sering perlu mengakses AWS sumber daya lain dan melakukan tindakan pada mereka. Misalnya, fungsi mungkin membaca item dari tabel DynamoDB, menyimpan objek dalam bucket S3, atau menulis ke antrean Amazon SQS. Untuk memberikan fungsi izin yang mereka butuhkan untuk melakukan tindakan ini, Anda menggunakan peran eksekusi.
Setiap fungsi Lambda harus memiliki peran eksekusi, dan satu peran dapat digunakan oleh lebih dari satu fungsi. Ketika fungsi dipanggil, Lambda mengasumsikan peran eksekusi fungsi dan diberikan izin untuk mengambil tindakan yang ditentukan dalam kebijakan peran.
Saat Anda membuat fungsi di konsol Lambda, Lambda secara otomatis membuat peran eksekusi untuk fungsi Anda. Kebijakan peran memberikan izin dasar fungsi Anda untuk menulis output log ke Amazon CloudWatch Logs. Untuk memberikan izin fungsi Anda untuk melakukan tindakan pada AWS sumber daya lain, Anda perlu mengedit peran untuk menambahkan izin tambahan. Cara termudah untuk menambahkan izin adalah dengan menggunakan kebijakan AWS terkelola. Kebijakan terkelola dibuat dan dikelola oleh AWS dan memberikan izin untuk banyak kasus penggunaan umum. Misalnya, jika fungsi Anda menjalankan operasi CRUD pada tabel DynamoDB, Anda dapat menambahkan AmazonDynamo DBFull kebijakan Access ke peran Anda.
Izin untuk pengguna dan sumber daya lain untuk mengakses fungsi Anda
Untuk memberikan Layanan AWS izin lain untuk mengakses fungsi Lambda Anda, Anda menggunakan kebijakan berbasis sumber daya. Di IAM, kebijakan berbasis sumber daya dilampirkan ke sumber daya (dalam hal ini, fungsi Lambda Anda) dan menentukan siapa yang dapat mengakses sumber daya dan tindakan apa yang diizinkan untuk dilakukan.
Agar fungsi lain Layanan AWS dapat menjalankan fungsi Anda melalui pemicu, kebijakan berbasis sumber daya fungsi Anda harus memberikan izin layanan tersebut untuk menggunakan tindakan tersebut. lambda:InvokeFunction
Jika Anda membuat pemicu menggunakan konsol, Lambda secara otomatis menambahkan izin ini untuk Anda.
Untuk memberikan izin kepada AWS pengguna lain untuk mengakses fungsi Anda, Anda dapat menentukan ini dalam kebijakan berbasis sumber daya fungsi Anda dengan cara yang persis sama seperti untuk yang lain atau sumber daya. Layanan AWS Anda juga dapat menggunakan kebijakan berbasis identitas yang terkait dengan pengguna.
Praktik terbaik untuk izin Lambda
Saat Anda menetapkan izin menggunakan kebijakan IAM, praktik terbaik keamanan adalah hanya memberikan izin yang diperlukan untuk melakukan tugas. Ini dikenal sebagai prinsip hak istimewa paling sedikit. Untuk mulai memberikan izin untuk fungsi Anda, Anda dapat memilih untuk menggunakan kebijakan AWS terkelola. Kebijakan terkelola dapat menjadi cara tercepat dan termudah untuk memberikan izin untuk melakukan tugas, tetapi mereka mungkin juga menyertakan izin lain yang tidak Anda perlukan. Saat Anda beralih dari pengembangan awal melalui pengujian dan produksi, kami sarankan Anda mengurangi izin menjadi hanya yang diperlukan dengan menentukan kebijakan yang dikelola pelanggan Anda sendiri.
Prinsip yang sama berlaku saat memberikan izin untuk mengakses fungsi Anda menggunakan kebijakan berbasis sumber daya. Misalnya, jika Anda ingin memberikan izin kepada Amazon S3 untuk menjalankan fungsi Anda, praktik terbaik adalah membatasi akses ke bucket individual, atau bucket pada khususnya Akun AWS, daripada memberikan izin menyeluruh ke layanan S3.