Membangun Aplikasi Menggunakan Framework Tanpa Server, AWS, dan BigQuery
Diterbitkan: 2021-01-28Tanpa server mengacu pada aplikasi di mana pengelolaan dan alokasi server dan sumber daya dikelola oleh penyedia cloud. Ini berarti bahwa penyedia cloud secara dinamis mengalokasikan sumber daya. Aplikasi berjalan dalam wadah tanpa status yang dapat dipicu oleh suatu peristiwa. Salah satu contoh di atas dan yang akan kita gunakan dalam artikel ini adalah tentang AWS Lambda .
Singkatnya, kita dapat menentukan “Aplikasi tanpa server” sebagai aplikasi yang merupakan sistem berbasis cloud yang digerakkan oleh peristiwa. Aplikasi bergantung pada layanan pihak ketiga, logika sisi klien, dan panggilan jarak jauh (secara langsung menyebutnya Function as a Service ).
Menginstal Kerangka Tanpa Server dan Mengonfigurasinya untuk Amazon AWS
1. Kerangka Tanpa Server
Kerangka Tanpa Server adalah kerangka kerja sumber terbuka. Ini terdiri dari antarmuka baris perintah atau CLI dan dasbor yang dihosting, yang memberi kami sistem manajemen aplikasi tanpa server sepenuhnya. Menggunakan Framework memastikan lebih sedikit overhead dan biaya, pengembangan dan penerapan yang cepat, dan mengamankan aplikasi tanpa server.
Sebelum Anda melanjutkan untuk menginstal kerangka Serverless, Anda harus mengatur NodeJS terlebih dahulu. Ini sangat mudah dilakukan di sebagian besar sistem operasi – Anda hanya perlu mengunjungi situs resmi NodeJS untuk mengunduh dan menginstalnya. Ingatlah untuk memilih versi yang lebih tinggi dari 6.0.0.
Setelah menginstalnya, Anda dapat mengonfirmasi bahwa NodeJS tersedia dengan menjalankan node -v
di konsol. Itu harus mengembalikan versi simpul yang telah Anda instal:
Sekarang Anda siap melakukannya, jadi lanjutkan dan instal kerangka kerja Tanpa Server.
Untuk melakukannya, ikuti dokumentasi untuk menyiapkan dan mengonfigurasi kerangka kerja. Jika Anda mau, Anda dapat menginstalnya hanya untuk satu proyek, tetapi di DevriX, kami biasanya menginstal kerangka kerja secara global: npm install -g serverless
Tunggu hingga proses selesai dan pastikan Serverless telah berhasil diinstal dengan menjalankan: serverless -v
2. Buat Akun Amazon AWS
Sebelum melanjutkan membuat aplikasi sampel, Anda harus membuat akun di Amazon AWS . Jika Anda belum memilikinya, sesederhana pergi ke Amazon AWS dan mengklik "Buat akun AWS" di sudut kanan atas dan ikuti langkah-langkah untuk membuat akun.
Amazon mengharuskan Anda memasukkan kartu kredit, jadi Anda tidak dapat melanjutkan tanpa memasukkan informasi tersebut. Pada pendaftaran dan login yang berhasil, Anda akan melihat AWS Management Console:
Besar! Mari kita lanjutkan sekarang dengan membuat aplikasi Anda.
3. Konfigurasikan Kerangka Tanpa Server dengan Penyedia AWS dan Buat Contoh Aplikasi
Pada langkah ini, kita harus mengonfigurasi kerangka kerja Tanpa Server dengan penyedia AWS. Beberapa layanan seperti AWS Lambda memerlukan kredensial saat Anda mengaksesnya untuk memastikan bahwa Anda memiliki izin ke sumber daya yang dimiliki oleh layanan tersebut. AWS merekomendasikan penggunaan AWS Identity and Access Manager (IAM) untuk mencapainya.
Jadi, hal pertama dan terpenting adalah membuat pengguna IAM di AWS untuk menggunakannya dalam aplikasi kita:
Di konsol AWS:
- Ketik IAM di bidang "Temukan Layanan" .
- Klik pada "IAM" .
- Buka "Pengguna" .
- Klik “Tambahkan pengguna” .
Untuk "Nama pengguna" gunakan apa pun yang Anda inginkan. Sebagai contoh, kami menggunakan serverless-admin. Untuk " Jenis akses" centang "Akses program" dan klik "Izin berikutnya ".
Setelah itu, kita harus melampirkan izin untuk pengguna, klik "Lampirkan kebijakan yang ada secara langsung", cari "Akses Administrator" dan klik. Lanjutkan dengan mengklik “Tag berikutnya”
Tag bersifat opsional, jadi Anda dapat melanjutkan dengan mengeklik “Ulasan berikutnya” dan “Buat pengguna”. Setelah selesai dan dimuat, pesan sukses muncul di halaman dengan kredensial yang kita butuhkan.
Sekarang kita harus menjalankan perintah berikut:
serverless config credentials --provider aws --key key --secret secret --profile serverless-admin
Ganti kunci dan rahasia dengan yang disediakan di atas. Kredensial AWS Anda dibuat sebagai profil. Anda dapat memeriksa ulang dengan membuka file ~/.aws/credentials . Itu harus terdiri dari profil AWS. Saat ini, dalam contoh di bawah ini, hanya satu – yang telah kami buat:
Kerja bagus sejauh ini! Anda dapat melanjutkan dengan membuat satu contoh aplikasi menggunakan NodeJS dan template awal bawaan.
Catatan: Selanjutnya, dalam artikel ini, kami menggunakan perintah sls
, yang merupakan kependekan dari serverless
.
Buat direktori kosong dan masukkan. Jalankan perintah
ls create --template aws-nodejs
Menggunakan perintah create –template tentukan salah satu template yang tersedia, dalam hal ini, aws-nodejs, yang merupakan aplikasi template NodeJS “Hello world”.
Setelah selesai, direktori Anda harus terdiri dari berikut ini, dan terlihat seperti ini:
Kami telah membuat file baru handler.js dan serverless.yml .
File handler.js menyimpan fungsi Anda, dan serverless.yml menyimpan properti konfigurasi yang akan Anda ubah nanti. Jika Anda bertanya-tanya apa itu file .yml , singkatnya, ini adalah bahasa serialisasi data yang dapat dibaca manusia . Adalah baik untuk mengenalnya, karena digunakan saat memasukkan parameter konfigurasi apa pun. Tapi mari kita lihat apa yang kita miliki di file serverless.yml sekarang:
layanan: aws-sampel-aplikasi pemberi: nama: aws waktu proses: nodejs12.x fungsi: Halo: handler: handler.halo
- layanan: – Nama layanan kami.
- penyedia: – Objek yang berisi properti penyedia, dan seperti yang kita lihat di sini, penyedia kami adalah AWS, dan kami menggunakan runtime NodeJS.
- fungsi: – Ini adalah objek yang berisi semua fungsi yang dapat diterapkan ke Lambda. Dalam contoh ini, kita hanya memiliki satu fungsi bernama hello yang menunjuk ke fungsi hello handler.js.
Anda harus melakukan satu hal penting di sini sebelum melanjutkan dengan menyebarkan aplikasi. Sebelumnya, kami menetapkan kredensial untuk AWS dengan profil (kami menamakannya serverless-admin ). Sekarang yang harus Anda lakukan adalah memberi tahu konfigurasi tanpa server untuk menggunakan profil itu dan wilayah Anda. Buka serverless.yml dan di bawah properti provider tepat di bawah runtime masukkan ini:
profil: admin tanpa server wilayah: us-timur-2
Pada akhirnya, kita harus memiliki ini:
pemberi: nama: aws waktu proses: nodejs12.x profil: admin tanpa server wilayah: us-timur-2
Catatan: Untuk mendapatkan wilayah, cara mudah adalah dengan melihat URL ketika Anda telah masuk ke konsol: Contoh:
Sekarang kita memiliki informasi yang diperlukan tentang template yang kita buat. Mari kita periksa bagaimana kita dapat menjalankan fungsi secara lokal dan menerapkannya ke AWS Lambda.
Kami dapat segera menguji aplikasi dengan menjalankan fungsi secara lokal:
sls invoke local -f hello
Itu memanggil fungsi (tetapi hanya secara lokal!), Dan mengembalikan output ke konsol:
Sekarang, jika semuanya berjalan dengan baik, Anda dapat mencoba menerapkan fungsi Anda ke AWS Lambda .
Jadi, apakah itu rumit? Tidak! Berkat Kerangka Tanpa Server , ini hanyalah kode satu baris:
sls deploy -v
Tunggu hingga semuanya selesai, mungkin perlu beberapa menit, jika semuanya baik-baik saja, Anda harus mengakhiri dengan sesuatu seperti ini:
Sekarang mari kita periksa apa yang terjadi di AWS. Buka Lambda (dalam " Temukan Layanan " ketik Lambda ), dan Anda akan melihat fungsi Lambda Anda dibuat.
Sekarang Anda dapat mencoba menjalankan fungsi Anda dari AWS Lambda. Dalam tipe terminal
sls invoke -f hello
Itu harus mengembalikan output yang sama seperti sebelumnya (ketika kami menguji secara lokal):
Anda dapat memeriksa apakah Anda telah memicu fungsi AWS dengan membuka fungsi di AWS Lambda dan membuka tab “ Pemantauan ” dan mengklik “ Lihat log di CloudWatch. “.
Anda harus memiliki satu log di sana.
Sekarang, satu hal masih hilang dalam aplikasi Anda, tapi apa itu…? Nah, Anda tidak memiliki titik akhir untuk mengakses aplikasi Anda, jadi mari kita buat itu menggunakan AWS API Gateway.
Anda harus membuka file serverless.yml dan membersihkan komentar terlebih dahulu. Anda perlu menambahkan properti acara ke fungsi kami dan di bawah properti http -nya. Itu memberi tahu kerangka kerja Tanpa Server untuk membuat API Gateway dan melampirkannya ke fungsi Lambda kami saat menerapkan aplikasi. File konfigurasi kami harus diakhiri dengan ini:
layanan: aws-sampel-aplikasi pemberi: nama: aws waktu proses: nodejs12.x profil: admin tanpa server wilayah: us-timur-2 fungsi: Halo: handler: handler.halo acara: - http: jalan: /halo cara: dapatkan
Di http kami menentukan jalur dan metode HTTP.
Itu saja, mari kita gunakan aplikasi kita lagi dengan menjalankan sls deploy -v
Setelah selesai, satu hal baru akan muncul di terminal output, dan itulah titik akhir yang telah dibuat:
Mari kita buka titik akhir:
Anda akan melihat bahwa fungsi Anda sedang dijalankan, mengembalikan output, dan beberapa informasi tentang permintaan tersebut. Mari kita periksa apa yang berubah dalam fungsi Lambda kita.
Buka AWS Lambda , dan klik fungsi Anda.
Kami melihat di bawah tab " Perancang " bahwa kami memiliki API Gateway yang dilampirkan ke Lambda kami dan Titik Akhir API.
Besar! Anda telah membuat aplikasi tanpa server yang sangat sederhana, menerapkannya ke AWS Lambda, dan menguji fungsinya. Selain itu, kami telah menambahkan titik akhir menggunakan AWS API Gateway .
4. Cara Menjalankan Aplikasi Secara Offline
Sejauh ini, kita tahu bahwa kita dapat menjalankan fungsi secara lokal, tetapi juga, kita dapat menjalankan seluruh aplikasi secara offline menggunakan plugin offline tanpa server.
Plugin mengemulasi AWS Lambda dan API Gateway di mesin lokal/pengembangan Anda. Ini memulai server HTTP yang menangani permintaan dan memanggil penangan Anda.
Untuk menginstal plugin, jalankan perintah di bawah ini di direktori aplikasi
npm install serverless-offline --save-dev
Kemudian di dalam serverless.yml proyek, buka file dan tambahkan properti plugins :
plugin: - tanpa server-offline
Konfigurasi akan terlihat seperti ini:
layanan: aws-sampel-aplikasi pemberi: nama: aws waktu proses: nodejs12.x profil: admin tanpa server wilayah: us-timur-2 fungsi: Halo: handler: handler.halo acara: - http: jalan: /halo cara: dapatkan plugin: - tanpa server-offline
Untuk memeriksa apakah kami telah berhasil menginstal dan mengonfigurasi plugin, jalankan
sls --verbose
Anda harus melihat ini:
Sekarang di root proyek Anda, jalankan perintah
sls offline
Seperti yang Anda lihat, server HTTP mendengarkan pada port 3000, dan Anda dapat mengakses fungsi Anda, misalnya, di sini kami memiliki http://localhost:3000/dev/hello untuk fungsi hello kami. Pembukaan itu kami memiliki respons yang sama seperti dari API Gateway , yang kami buat sebelumnya.
Tambahkan Integrasi Google BigQuery
Anda telah melakukan pekerjaan yang hebat sejauh ini! Anda memiliki aplikasi yang berfungsi penuh menggunakan Tanpa Server. Mari kita perluas aplikasi kita dan menambahkan integrasi BigQuery ke dalamnya untuk melihat cara kerjanya dan bagaimana integrasi dilakukan.
BigQuery adalah Software as a Service (SaaS) tanpa server, yaitu gudang data yang hemat biaya dan cepat yang mendukung kueri. Sebelum kita melanjutkan mengintegrasikannya dengan aplikasi NodeJS kita, kita harus membuat akun, jadi mari kita lanjutkan.
1. Siapkan Google Cloud Console
Buka https://cloud.google.com dan masuk dengan akun Anda, jika Anda belum melakukannya – buat akun dan lanjutkan.
Saat Anda masuk ke Google Cloud Console, Anda harus membuat proyek baru. Klik pada tiga titik di sebelah logo dan itu akan membuka jendela modal di mana Anda memilih “ Proyek baru. ”
Masukkan nama untuk proyek Anda. Kami akan menggunakan bigquery-example . Setelah Anda membuat proyek, buka BigQuery menggunakan panel samping:
Saat BigQuery dimuat, di sisi kiri, Anda akan melihat data proyek, yang dapat Anda akses, dan juga kumpulan data publik. Kami menggunakan kumpulan data publik untuk contoh ini. Ini bernama covid19_ecdc :
Mainkan set data dan tabel yang tersedia. Pratinjau data di dalamnya. Itu adalah kumpulan data publik yang diperbarui setiap jam dan berisi informasi tentang data COVID-19 di seluruh dunia.
Kita harus membuat pengguna IAM -> Akun layanan untuk dapat mengakses data. Jadi, di menu, klik "IAM & Admin", lalu "Akun Layanan".
Klik tombol "Buat akun layanan" , masukkan nama akun layanan dan klik "Buat." Selanjutnya, buka “ Izin akun layanan” , cari dan pilih, “Admin BigQuery” .
Klik " Lanjutkan ," ini adalah langkah terakhir, di sini Anda memerlukan kunci Anda, jadi klik tombol pembuatan di bawah " Kunci " dan ekspor sebagai JSON . Simpan ini di suatu tempat dengan aman, kita akan membutuhkannya nanti. Klik Selesai untuk menyelesaikan pembuatan akun layanan.
Sekarang, kita akan menggunakan kredensial yang dihasilkan di sini untuk menghubungkan library NodeJS BigQuery.
2. Instal Perpustakaan NodeJS BigQuery
Anda harus menginstal library BigQuery NodeJS untuk menggunakannya dalam project yang baru saja Anda buat. Jalankan perintah di bawah ini di direktori aplikasi:
Pertama, inisialisasi npm dengan menjalankan npm init
Isi semua pertanyaan dan lanjutkan dengan menginstal library BigQuery :
npm install @google-cloud/bigquery
Sebelum kita melanjutkan untuk mengubah pengendali fungsi kita, kita harus membawa kunci pribadi dari file JSON yang telah kita buat sebelumnya. Kami akan menggunakan variabel lingkungan tanpa server untuk melakukan ini. Anda dapat memperoleh informasi lebih lanjut di sini.
Buka serverless.yml , dan di properti penyedia tambahkan properti lingkungan seperti ini:
lingkungan: PROJECT_ID: ${file(./config/bigquery-config.json):project_id} CLIENT_EMAIL: ${file(./config/bigquery-config.json):client_email} PRIVATE_KEY: ${file(./config/bigquery-config.json):private_key}
Buat variabel lingkungan PROJECT_ID, PRIVATE_KEY , dan CLIENT_EMAIL , yang mengambil properti yang sama (huruf kecil) dari file JSON yang telah kita buat. Kami telah menempatkannya di folder config dan menamakannya bigquery-config.json .
Saat ini, Anda harus berakhir dengan file serverless.yml yang terlihat seperti ini:
layanan: aws-sampel-aplikasi pemberi: nama: aws waktu proses: nodejs12.x profil: admin tanpa server wilayah: us-timur-2 lingkungan: PROJECT_ID: ${file(./config/bigquery-config.json):project_id} CLIENT_EMAIL: ${file(./config/bigquery-config.json):client_email} PRIVATE_KEY: ${file(./config/bigquery-config.json):private_key} fungsi: Halo: handler: handler.halo acara: - http: jalan: /halo cara: dapatkan plugin: - tanpa server-offline
Sekarang buka handler.js dan izinkan impor pustaka BigQuery, di bagian atas file di bawah 'gunakan ketat' tambahkan baris berikut:
const {BigQuery} = require('@google-cloud/bigquery');
Sekarang kita harus memberi tahu perpustakaan BigQuery kredensial. Untuk tujuan ini, buat konstanta baru yang membuat instance BigQuery dengan kredensial:
const bigQueryClient = BigQuery baru({ projectId: process.env.PROJECT_ID, kredensial: { client_email: process.env.CLIENT_EMAIL, private_key: process.env.PRIVATE_KEY } });
Selanjutnya, mari buat kueri SQL BigQuery. Kami ingin mengambil informasi terbaru tentang kasus COVID-19 untuk Bulgaria. Kami menggunakan editor kueri BigQuery untuk mengujinya sebelum melanjutkan, jadi kami telah membuat kueri khusus:
PILIH * FROM `bigquery-public-data.covid19_ecdc.covid_19_geographic_distribution_worldwide` WHERE geo_ ORDER BY date DESC LIMIT 1
Bagus! Sekarang mari kita terapkan itu di aplikasi NodeJS kita.
Buka handler.js dan paste kode di bawah ini
const query = 'SELECT * FROM `bigquery-public-data.covid19_ecdc.covid_19_geographic_distribution_worldwide` WHERE geo_id = \'BG\' ORDER BY date DESC LIMIT 1'; opsi konstan = { kueri: kueri } const [pekerjaan] = menunggu bigQueryClient.createQueryJob(opsi); const [baris] = menunggu job.getQueryResults();
Kami telah membuat konstanta kueri dan opsi . Kemudian kami melanjutkan dengan menjalankan kueri sebagai pekerjaan dan mengambil hasil dari itu.
Mari kita juga mengubah pengendali pengembalian untuk mengembalikan baris yang dihasilkan dari kueri:
kembali { kode status: 200, badan: JSON.stringify( { baris }, batal, 2 ), };
Mari kita lihat handler.js lengkapnya :
'gunakan ketat'; const {BigQuery} = memerlukan('@google-cloud/bigquery'); const bigQueryClient = BigQuery baru({ projectId: process.env.PROJECT_ID, kredensial: { client_email: process.env.CLIENT_EMAIL, private_key: process.env.PRIVATE_KEY } }); module.exports.hello = acara asinkron => { const query = 'SELECT * FROM `bigquery-public-data.covid19_ecdc.covid_19_geographic_distribution_worldwide` WHERE geo_id = \'BG\' ORDER BY date DESC LIMIT 1'; opsi konstan = { kueri: kueri } const [pekerjaan] = menunggu bigQueryClient.createQueryJob(opsi); const [baris] = menunggu job.getQueryResults(); kembali { kode status: 200, badan: JSON.stringify( { baris }, batal, 2 ), }; };
Baik! Mari kita uji fungsi kita secara lokal:
sls invoke local -f hello
Kita harus melihat outputnya:
Lanjutkan dengan men-deploy aplikasi untuk mengujinya melalui HTTP Endpoints jadi jalankan sls deploy -v
Tunggu hingga selesai dan buka titik akhir. Berikut adalah hasilnya:
Sudah selesai dilakukan dengan baik! Kami sekarang memiliki aplikasi untuk mengambil data dari BigQuery dan mengembalikan respons! Akhirnya mari kita periksa apakah itu berfungsi offline. Jalankan sls offline
Dan muat titik akhir lokal:
pekerjaan yang dilakukan dengan baik. Kami hampir berada di akhir proses. Langkah terakhir adalah mengubah aplikasi dan perilakunya sedikit. Alih-alih AWS API Gateway , kami ingin menggunakan Application Load Balancer . Mari kita lihat bagaimana mencapainya di bab berikutnya.
ALB – Penyeimbang Beban Aplikasi di AWS
Kami telah membuat aplikasi kami menggunakan AWS API Gateway. Dalam bab ini, kita akan membahas cara mengganti API Gateway dengan Application Load Balancer (ALB).
Pertama, mari kita lihat cara kerja load balancer aplikasi dibandingkan dengan API Gateway:
Dalam penyeimbang beban aplikasi, kami memetakan jalur tertentu (misalnya, /hello/ ) ke grup target – sekelompok sumber daya, dalam kasus kami, fungsi Lambda .
Grup target hanya dapat memiliki satu fungsi Lambda yang terkait dengannya. Kapan pun grup target perlu merespons, aplikasi load balancer mengirim permintaan ke Lambda, dan fungsi harus merespons dengan objek respons. Seperti API Gateway, ALB menangani semua permintaan HTTP.
Ada beberapa perbedaan antara ALB dan API Gateway . Satu perbedaan utama adalah bahwa API Gateway hanya mendukung HTTPS (SSL), sedangkan ALB mendukung HTTP dan HTTPS.
Tapi, mari kita lihat beberapa pro dan kontra dari API Gateway:
Gerbang API:
Kelebihan:
- Keamanan yang sangat baik.
- Ini mudah untuk diterapkan.
- Ini cepat untuk penyebaran dan baik untuk pergi dalam satu menit.
- Skalabilitas dan ketersediaan.
Kontra:
- Ini bisa menjadi sangat mahal ketika dihadapkan dengan lalu lintas tinggi.
- Ini membutuhkan lebih banyak orkestrasi, yang menambah tingkat kesulitan bagi pengembang.
- Penurunan kinerja, karena skenario API, dapat memengaruhi kecepatan dan keandalan aplikasi.
Mari kita lanjutkan dengan membuat ALB dan beralih ke ALB daripada menggunakan API Gateway:
1. Apa itu ALB?
Penyeimbang beban aplikasi memungkinkan pengembang untuk mengonfigurasi dan mengarahkan lalu lintas masuk. Ini adalah fitur dari " Elastic Load Balancing." Ini berfungsi sebagai titik kontak tunggal untuk klien, mendistribusikan lalu lintas aplikasi yang masuk ke beberapa target, seperti instans EC2 di beberapa zona.
2. Buat Penyeimbang Beban Aplikasi menggunakan UI AWS
Mari buat Application Load Balancer (ALB) kita melalui UI di Amazon AWS. Masuk ke Konsol AWS di “ Temukan layanan. ” ketik “ EC2 ” dan temukan “ Load Balancers. ”
Klik " Buat Penyeimbang Beban ", di bawah " Penyeimbang Beban Aplikasi ", pilih " Buat ". Untuk nama, masukkan pilihan Anda, kami telah menggunakan " sampel-alb, " pilih Skema " menghadap internet ," jenis Alamat IP ipv4.
Pada “ Listeners ”, biarkan apa adanya – HTTP dan port 80. Ini dapat dikonfigurasi untuk HTTPS, meskipun Anda harus memiliki domain dan mengonfirmasinya sebelum dapat menggunakan HTTPS.
Availability Zones – Untuk VPC pilih yang Anda miliki dari dropdown dan tandai semua “ Availability zones” :
Klik “ Selanjutnya Konfigurasi Pengaturan Keamanan ” untuk meminta Anda meningkatkan keamanan penyeimbang beban Anda. Klik Berikutnya.
Pada " Langkah 3. Konfigurasikan Grup Keamanan ", di Tetapkan grup keamanan untuk memilih "Buat grup keamanan baru." Lanjutkan selanjutnya dengan mengklik “ Berikutnya: Konfigurasi Perutean. “. Pada langkah 4 konfigurasikan seperti yang ditunjukkan pada tangkapan layar di atas:
Klik Berikutnya , Berikutnya , dan Buat .
Kembali ke penyeimbang beban dan salin ARN seperti yang ditunjukkan pada tangkapan layar:
Sekarang kita harus mengubah serverless.yml kita dan menghapus properti http API Gateway. Di bawah properti acara, hapus properti http dan tambahkan properti alb. Objek fungsi harus berakhir seperti ini:
Halo: handler: handler.halo acara: - alb: listenerArn: arn:aws:elasticloadbalancing:us-east-2:115129174008:listener/app/sample-alb/ae6e398a898c48e6/67ce6bf319d0513d prioritas: 1 kondisi: jalan: /halo
Simpan file dan jalankan perintah untuk menyebarkan aplikasi
sls deploy -v
Setelah berhasil menerapkan kembali ke AWS Load Balancers dan temukan nama DNS Anda seperti yang ditunjukkan pada tangkapan layar:
Salin nama DNS dan masukkan path /hello .
Ini akan berfungsi dan pada akhirnya menawarkan Anda opsi untuk mengunduh konten :). Sejauh ini, penyeimbang beban aplikasi bekerja dengan sangat baik, tetapi aplikasi perlu mengembalikan respons yang tepat untuk pengguna akhir kami. Untuk melakukannya, buka handler.js dan ganti pernyataan return dengan yang di bawah ini:
kembali { kode status: 200, statusDeskripsi: "200 OK", header: { "Jenis Konten": "aplikasi/json" }, isBase64Encoded: salah, tubuh: JSON.stringify(baris) }
Perbedaan ALB adalah bahwa respons harus menyertakan container statusDescription, header, dan isBase64Encoded. Silakan simpan file, dan gunakan lagi, tetapi kali ini bukan seluruh aplikasi, tetapi hanya fungsi yang telah kami ubah. Jalankan perintah di bawah ini:
sls deploy -f hello
Dengan cara ini, kami hanya mendefinisikan fungsi hello untuk disebarkan. Setelah berhasil menyebarkan, kunjungi nama DNS dengan jalur lagi, dan Anda akan mendapatkan respons yang tepat!
Besar! Sekarang kita telah mengganti API Gateway dengan Application Load Balancer. Aplikasi Load balancer lebih murah daripada API Gateway, dan sekarang kami dapat memperluas aplikasi kami untuk memenuhi kebutuhan kami, terutama jika kami mengharapkan traffic yang lebih tinggi.
Kata-kata Terakhir
Kami telah membuat aplikasi sederhana menggunakan Serverless Framework, AWS, dan BigQuery , dan membahas penggunaan utamanya. Tanpa server adalah masa depan, dan mudah untuk menangani aplikasi dengannya. Teruslah belajar dan selami kerangka kerja Tanpa Server untuk menjelajahi semua fungsinya dan rahasia yang dimilikinya. Ini juga merupakan alat yang cukup mudah dan nyaman.