Tur singkat AWS Lambda
Apa ini
AWS Lambda: Ini adalah layanan komputasi yang memungkinkan Anda menjalankan kode untuk hampir semua jenis aplikasi atau layanan server - semuanya tanpa administrasi. AWS Lambda melakukan semua administrasi untuk Anda, termasuk pemeliharaan server dan sistem operasi, alokasi sumber daya dan penskalaan otomatis, pemantauan kode, dan pencatatan. Yang harus Anda lakukan adalah mengirimkan kode Anda dalam salah satu bahasa yang didukung AWS Lambda.
Kenapa menggunakannya?
- Uang Anda hanya membayar untuk saat layanan berjalan.
- Kecepatan. Lambda sendiri naik dan bekerja sangat cepat.
- Kenyamanan Lambda memiliki banyak fitur untuk diintegrasikan dengan layanan AWS.
- Performa. Secara paralel, ini dapat dilakukan, tergantung pada wilayah, dari maksimum 1000 hingga 3000 salinan. Dan jika Anda mau, batas ini dapat dinaikkan dengan menulis dukungan.
Pendekatan ini memiliki kelemahannya, Anda tidak dapat mengontrol sistem operasi tempat kode dijalankan, Anda tidak dapat mengontrol CPU, memori dan sumber daya. Semua ini dilakukan oleh AWS.
Yang dapat Anda lakukan adalah memilih bahasa dari AWS Lambda yang didukung.
Apa yang bisa?
Berikut ini adalah daftar singkat fitur utama AWS Lambda. Selanjutnya, kami akan mempertimbangkan semuanya dalam urutan.
1. Pemicu
Pemicu adalah "patogen" lambda. Di satu sisi, lambda dapat dibandingkan dengan PHP, dalam arti bahwa bagi kita itu
berjalan dan mati . Selanjutnya, kami akan mempertimbangkan secara rinci mekanisme kerja. Untuk saat ini, Anda perlu memahami bahwa lambda adalah salah satu fungsi yang dijalankan berdasarkan permintaan dari pemicu.
Di bawah ini adalah daftar semua pemicu yang mungkin:API Gateway
AWS IoT
Kit Keterampilan Alexa
Alexa Smart Home
Penyeimbang beban aplikasi
Cloudfront
Acara Cloudwatch
Log cloudwatch
KodeKomite
Pemicu sinkronisasi Cognito
Dynamodb
Kinesis
S3
SNS
SQS
Untuk masing-masing, Anda perlu mengkonfigurasi parameter unik yang tersedia untuk pemicu ini. Anda juga dapat mengonfigurasi beberapa pemicu pada satu lambda. Itu tergantung pada jenis pemicu apakah lambda akan menjalankan secara sinkron atau asinkron.
Perhatikan: Harap dicatat bahwa lambda dapat dibuat untuk mengeksekusi baik dengan menggunakan AWS CLI, AWS SDK dalam mode manual, melewati semua parameter yang diperlukan. Termasuk apakah itu akan berjalan secara sinkron atau tidak
Mari kita lihat sebuah contoh:
1. Gateway API - memungkinkan Anda untuk menarik lambda pada permintaan http dan mengharuskan hasilnya dikembalikan kepada pengguna. Operasi semacam itu tidak dapat dilakukan secara tidak sinkron, karena membutuhkan jawaban. Untuk operasi sinkron, beberapa fungsi tidak tersedia.
2. SQS - misalnya, jika lambda kami memproses pesan dari SQS, Anda tidak perlu mengembalikan hasilnya di mana pun dan itu dapat dilakukan secara tidak sinkron. Dengan eksekusi asinkron, beberapa fitur baru muncul, misalnya, kami dapat mengonfigurasi eksekusi berulang jika terjadi kesalahan, atau mengirim permintaan tersebut lebih jauh ke antrian
SQS "mati".
2. Izin untuk Layanan AWS
Ini adalah layanan AWS yang memiliki akses default ke lambda. Apa artinya ini? Anda selalu dapat menghubungkan AWS SDK ke fungsi yang akan Anda tulis, dan tanpa kunci atau parameter otorisasi apa pun, Anda dapat menggunakan layanan yang tersedia. Anda mendefinisikan semua layanan yang tersedia di
Peran IAM yang Anda gunakan untuk lambda ini.
Setiap bahasa yang digunakan memiliki SDK sendiri yang dapat berkomunikasi dengan layanan AWS utama.
Perhatikan: untuk setiap lambda Anda mengkonfigurasi Peran IAM dari orang yang akan menjalankan lambda
Anda dapat mengkonfigurasi jaringan virtual untuk lambda Anda, misalnya, untuk
terhubung dengan aman ke
RDS .
4. Editor Online
AWS Lambda juga menyediakan kemampuan untuk mengedit kode fungsi Anda langsung dari antarmuka di browser Anda.

5. Penebangan
Semua permintaan untuk lambda masuk ke
CloudWatch , data saat runtime dan memori juga dicatat di sana, data ini bisa sangat berguna untuk menetapkan batas. Juga, kode ini memiliki kemampuan untuk mencatat data Anda sendiri (misalnya, di Node.js via console.log).
Selain itu, Anda selalu dapat melihat statistik tentang penggunaan lambda pada tab
Monitoring .
6. Variabel Lingkungan
Anda memiliki kesempatan untuk mentransfer variabel lingkungan dengan aman ke dalam kode, yang memungkinkan Anda untuk mengonfigurasi bagian-bagian penting dari sistem tanpa mengirimkan kode. Dimungkinkan untuk
mengenkripsi variabel lingkungan melalui kunci.Perhatikan: Perhatikan bahwa ada daftar variabel lingkungan yang telah ditentukan sebelumnya
7. Kode
Sekarang bagian yang paling menarik, lambda itu sendiri terdiri dari beberapa bagian.1. Layers - lapisan bawah. Ini opsional, tetapi jika Anda perlu menambahkan beberapa perpustakaan untuk menggunakan lambda, Anda harus meletakkannya secara terpisah dari kode utama, sehingga Anda sangat menghemat jumlah kode utama dan kecepatan fungsi itu sendiri.
Lapisan dalam AWS Lambda agak mirip dengan
lapisan di buruh pelabuhan , dalam arti mereka permanen sehubungan dengan fungsi, dan mereka perlu diubah secara terpisah. Mereka juga dapat digunakan kembali di lambda lainnya.
2. Function Environment - kode harus berisi fungsi yang akan langsung dieksekusi setiap kali lambda
(Handler) diluncurkan. Tentang dia di bawah ini. Dan di depannya adalah lingkungannya, yang kami minta. Faktanya adalah bahwa manajemen sumber daya terjadi sedemikian rupa sehingga lingkungan ini disimpan secara terpisah dari fungsi untuk beberapa waktu setelah selesai. Dan pada awal berikutnya, ia melanjutkan tanpa menghabiskan waktu dan sumber daya untuk inisialisasi. Jadi, segala sesuatu yang mungkin perlu diinisialisasi ke fungsi itu sendiri, misalnya, konfigurasi, menghubungkan perpustakaan, dll.
3. Handler - kode yang dieksekusi langsung itu sendiri, tergantung pada bahasanya, didefinisikan secara berbeda. Misalnya, ambil Node.Js. Agar kode Anda dapat dieksekusi, Anda perlu:
- file js - 1 pc
- exports.yourFunction = () => {// Kode Anda} - 1pc
Secara default, index.js diluncurkan dan mencari fungsi yang disebut "handler" di dalamnya. Kemudian lakukan itu. Fungsi Anda mungkin tidak sinkron dalam kode. Ini tidak mempengaruhi eksekusi lambda yang sinkron.
Di bawah ini adalah contoh kode, saya akan mencoba menggambarkan apa yang terjadi di sana:
8. Versi
Layanan ini mendukung pembuatan versi yang nyaman. Singkatnya, kita dapat mengeluarkan versi untuk setiap salinan yang diunduh. Dan tambahkan alias yang mengarah ke beberapa versi. Bagaimana cara kerjanya? Lihat grafik di bawah ini.

Jadi, sekarang mari kita mencari tahu apa yang perlu dilakukan untuk mendapatkan apa yang kita lihat dalam diagram
Nyatakan satu
- Buat versi pertama lambda kami. Bersama dengan versi pertama, kami membuat pointer ke versi "$ TERBARU" . Itu selalu menunjukkan versi terbaru ditambahkan.
- Tambahkan alias "Dev" . Di sini kita memilih tempat untuk mengikat, kami memiliki beberapa opsi - buat pointer ke nomor versi tertentu, dalam kasus kami "1" , ikat pointer ke "$ TERBARU" , atau ikat ke alias lain. Dalam hal ini, kami lampirkan ke pointer "$ TERBARU" , dan sekarang alias "Dev" kami akan selalu mengarah ke cabang terakhir, jadi kami selalu dapat menguji aplikasi kami dengan versi lambda terbaru di lingkungan dev. Dan jika tiba-tiba kita perlu memeriksa cara kerjanya pada versi lama, kita hanya perlu mengganti alias di pelatuk atau mengubah tautan ke versi di alias tanpa menyentuh aplikasi kita
- Tambahkan alias Panggung dan ikat ke versi pertama lambda kami
- Tambahkan alias "Prod" dan ulangi apa yang kami lakukan untuk "Stage"
Perhatikan: di sini dijelaskan cara bekerja dengan alias dalam praktik. Bagian praktis pada lambda akan di artikel berikutnya bersama dengan SQS
Jadi, sekarang kita punya sesuatu yang tidak bisa dimengerti, sebenarnya 3 alias merujuk ke satu versi, tidak jelas. Tapi tidak ada, semuanya beresNegara kedua
- Buat versi kedua lambda kami (Mungkin untuk menambahkan output kedua "Hello world"). Di sini saya ingin mencatat bahwa pada saat ini "$ TERBARU" akan segera melihat versi kedua. Dan karena "Dev" terikat dengan "$ TERBARU" , ia juga akan melihat versi kedua.
- Selanjutnya, kami ingin Panggung kami melihat versi kedua. Sekarang ini terkait dengan versi "1" . Di sini kita perlu mengubah versi yang ditunjukkan oleh "Tahap " secara manual.
- Bersukacitalah. Kami mendapat apa yang kami lihat sebagai keadaan kedua di grafik. Yaitu, "Prod" kami melihat versi pertama, dan "Dev" dan "Tahap" di versi kedua.
Negara ketiga
Sekarang, untuk mendapatkan status ketiga, kita hanya perlu menambahkan beberapa baris lagi ke kode kita dan akan ada versi ketiga dari lambda kita. Dan
"Dev" sekarang akan melihatnya.
Ringkaslah
Jadi apa yang kita miliki?
Sedikit. Cepat Relatif murah. Autoscale. Berversi. Fungsi
Pada artikel ini, kami hanya mempertimbangkan bagian teoretis, keakraban dengan layanan ini. Sama seperti dengan
SQS di artikel terakhir. Pada artikel selanjutnya, kita akan mempertimbangkan bagaimana kedua layanan ini saling berinteraksi dan dalam bentuk praktis kita akan belajar cara mengkonfigurasi dan menggunakannya.