Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagaimana Lambda bekerja
Fungsi Lambda adalah blok bangunan dasar yang Anda gunakan untuk membangun aplikasi Lambda. Untuk menulis fungsi, penting untuk memahami konsep inti dan komponen yang membentuk model pemrograman Lambda. Bagian ini akan memandu Anda melalui elemen dasar yang perlu Anda ketahui untuk mulai membangun aplikasi tanpa server dengan Lambda.
-
Fungsi Lambda dan penangan fungsi- Fungsi Lambda adalah blok kecil kode yang berjalan sebagai respons terhadap peristiwa. fungsi adalah blok bangunan dasar yang Anda gunakan untuk membangun aplikasi. Penangan fungsi adalah titik masuk untuk objek peristiwa yang diproses kode fungsi Lambda Anda.
-
Lingkungan eksekusi Lambda dan runtime- Lingkungan eksekusi Lambda mengelola sumber daya yang diperlukan untuk menjalankan fungsi Anda. Waktu berjalan adalah lingkungan khusus bahasa yang menjalankan fungsi Anda.
-
Peristiwa dan pemicu- bagaimana orang lain Layanan AWS memanggil fungsi Anda dalam menanggapi peristiwa tertentu.
-
Izin dan peran Lambda- bagaimana Anda mengontrol siapa yang dapat mengakses fungsi Anda dan fungsi lain apa yang dapat berinteraksi dengan Layanan AWS 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 dan penangan fungsi
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. Penangan fungsi Lambda adalah metode dalam kode fungsi Anda yang memproses peristiwa. Ketika fungsi berjalan sebagai respons terhadap suatu peristiwa, Lambda menjalankan fungsi handler. 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.
-
Fungsi memiliki satu pekerjaan atau tujuan tertentu
-
Mereka berjalan hanya ketika diperlukan dalam menanggapi peristiwa tertentu
-
Mereka secara otomatis berhenti berjalan ketika selesai
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.
Peristiwa dan pemicu
Anda juga dapat menjalankan fungsi Lambda secara langsung dengan menggunakan konsol Lambda AWS CLI
Untuk membuat fungsi Anda merespons peristiwa, Anda menyiapkan pemicu. Pemicu menghubungkan fungsi Anda ke sumber peristiwa, dan fungsi Anda dapat memiliki beberapa pemicu. Ketika suatu peristiwa terjadi, Lambda menerima data peristiwa sebagai dokumen JSON dan mengubahnya menjadi objek yang dapat diproses oleh kode Anda. Anda dapat menentukan format JSON berikut untuk acara Anda dan runtime Lambda mengonversi JSON ini menjadi objek sebelum meneruskannya ke handler fungsi Anda.
contoh acara Lambda kustom
{ "Location": "SEA", "WeatherData":{ "TemperaturesF":{ "MinTempF": 22, "MaxTempF": 78 }, "PressuresHPa":{ "MinPressureHPa": 1015, "MaxPressureHPa": 1027 } } }
Layanan streaming dan antrian seperti Amazon Kinesis atau Amazon SQS, Lambda menggunakan pemetaan sumber peristiwa alih-alih pemicu standar. Pemetaan sumber peristiwa polling sumber untuk data baru, catatan batch bersama-sama, dan kemudian memanggil fungsi Anda dengan peristiwa batch.
Untuk memahami cara kerja pemicu, mulailah dengan menyelesaikan tutorial Gunakan pemicu Amazon S3, atau untuk gambaran umum tentang penggunaan pemicu dan petunjuk cara membuat pemicu menggunakan konsol Lambda, lihat. Mengintegrasikan layanan lain
Izin dan peran 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.