Cara membuat backend tanpa server untuk menerima data formulir yang masuk (atau data lain dari permintaan API) dan mengirim email yang berisi data tersebut

S3+CloudFront merupakan solusi sederhana dan berbiaya rendah untuk menghosting situs web statis. Namun, apa yang terjadi jika Anda memerlukan formulir HTML? Kami akan membahas penerapan back end tanpa server sederhana untuk tujuan ini!

Perkenalan

AWS S3 + Cloudfront merupakan opsi berbiaya rendah dan terukur untuk menghosting situs web statis seperti halaman arahan untuk startup, atau halaman pendaftaran untuk buletin. Namun, bagaimana Anda bisa mengimplementasikan formulir tanpa server?

Dalam artikel ini, kita akan membahas backend tanpa server untuk formulir menggunakan “Lambda” dan “API Gateway” AWS untuk memicu pengiriman email dengan informasi yang diisi dari formulir ke email yang telah ditentukan menggunakan “AWS SES”.

Prasyarat

Sebelum kita mendalami kode Lambda, kita perlu menyiapkan lingkungan pengembangan dan akun AWS kita termasuk poin-poin di bawah ini:

  1. Alat pengembangan lokal AWS Serverless Application Model (SAM) diinstal sesuai instruksi di sini.
  2. AWS SES dikonfigurasi dalam mode produksi (bukan sandbox), dan domain telah diverifikasi sesuai instruksi di sini.
  3. Miliki situs web dengan formulir HTML yang dapat dikonfigurasi untuk mengirimkan data ke titik akhir gateway API yang akan dibuat nanti di artikel ini.

Penerapan

Kami akan menggunakan SAM untuk menerapkan Lambda dan sumber daya yang bergantung padanya. Untuk pengenalan lebih dalam tentang SAM lihat artikel di bawah.



Mari kita mulai dengan struktur folder. Kita akan memiliki direktori untuk file sumber aplikasi, satu untuk skrip yang dapat digunakan untuk menyebarkan aplikasi, dan file tingkat atas seperti template.yaml yang digunakan oleh SAM.

my-serverless-form/
├── cmd/
│   └── deploy.sh
├── src/
|   ├── package.json
│   └── index.js
├── .gitignore 
└── template.yaml

template.yaml akan terlihat seperti di bawah ini:

Templat di atas mendefinisikan dua sumber daya:

  1. FormSubmissionFunction: Lambda yang ketika dipicu akan mengirim email.
  2. FormSubmissionApi: API Gateway yang akan menerima permintaan publik dari internet dan memicu Lambda.

Kode lambda akan ditentukan dalam file index.js seperti yang ditunjukkan di bawah ini:

Di dalamnya, kami mengirim email menggunakan SES yang berisi data dari eventObject yang akan berisi isi dan header permintaan yang digunakan untuk memicu Lambda. Anda dapat memformat badan email sesuai keinginan.

Untuk mengurai data formulir di Lambda, saya sarankan menggunakan perpustakaan di bawah ini:



Untuk menyebarkan Lambda, Anda dapat menjalankan file script.sh (ditampilkan di bawah) dan ikuti petunjuk di layar:

Kesimpulan

Kami telah membahas cara membuat backend tanpa server yang dapat digunakan untuk menerima data formulir yang masuk (atau data lain dari permintaan API) dan mengirim email yang berisi data tersebut.

Namun, sebelum menerapkan sesuatu seperti ini ke produksi, sebaiknya terapkan reCaptcha (atau serupa) untuk menghindari bot menemukan titik akhir Anda dan mengirimkan data palsu (Anda tidak ingin dikenakan biaya untuk waktu eksekusi Lambda untuk mengirim email dari bot).

Semoga ini bermanfaat bagi Anda!

Jika Anda memiliki pertanyaan atau hanya ingin mengobrol tentang startup, kewirausahaan, kontrak, atau teknik, kirimkan saja saya email di paulo@avantsoft.com.br.