Hari ini kita akan membuat apa yang disebut. fungsi Yandex (nama resmi
Saya juga penentang (tetapi tanpa fanatisme) server tradisional, dan pendukung apa yang disebut. tanpa server solusi (tanpa server), karena saya tidak suka (dan saya tidak begitu tahu cara) mengelola server, dan terlebih lagi, membayar waktu ketika server tidak dimuat. Hal lainnya adalah fungsi. Seseorang melayaninya tanpa saya, dan saya hanya membayar untuk panggilan. Pada awal Oktober 2019, Yandex mempresentasikannya Fungsi Cloud Yandex - tampaknya menjadi yang pertama di Federasi Rusia tanpa server. Dan yang paling bagus adalah untuk keterampilan Alice, keterampilan tersebut umumnya gratis, jadi keterampilan tersebut selalu ada dalam pandangan periferal saya sejak saat itu. Tapi mari kita mulai.
Mari kita bayangkan skenario ini. Aplikasi Anda (misalnya, keahlian Alice
Tentang bagaimana dari Fungsi Yandex membuat entri dalam database Toko Api Awan kita sudah melihatnya di tutorial
1. Buat akun di SendGrid
CatatanSendGrid hanyalah pilihan saya, yang saya buat karena beberapa alasan, yang utama adalah mereka memiliki SDK siap pakai untuk Node.js. Anda dapat memilih layanan pengiriman surat lainnya.
berjalan
Pada langkah selanjutnya kita pilih Node.js:
Selanjutnya kita buat untuk kita API-nama kunci (hanya akan ditampilkan di konsol dalam daftar kunci, dan tidak ada hubungannya dengan kode masa depan kita; Saya baru saja membuat yang tidak dapat rusak demo-api-key) dan tekan tombol Buat Kunci:
Kuncinya akan dibuat, kami akan menyalinnya dan menyimpannya dengan sangat rahasia. Dan kita akan memiliki layar dengan sebuah tombol Verifikasi Integrasi, seperti pada gambar di bawah ini, namun kita belum mengkliknya, tapi kita lanjutkan ke penulisan kodenya:
2. Menulis kode
Namun kodenya sendiri, seperti yang Anda lihat, sangat kecil - 22 baris!
Di barisan #8 Email saya dikodekan secara keras (dan karena itu disembunyikan dengan malu-malu) - harap sebutkan email Anda. Dalam kehidupan nyata, kami akan menerima semua data (termasuk e-mail) dari objek peristiwa. Misalnya jika metodenya POST sebuah objek dikirim ke fungsi kita pemakai dengan bidang (properti) e-mail, nilai bidang ini dapat diperoleh seperti ini:
const { user } = event;
const email = user.email;
Dan jika alamat email diteruskan ke fungsi menggunakan metode ini DAPATKAN, misalnya: https://functions.yandexcloud.net/123abc?[email protected]
nilai parameter e-mail Anda bisa mendapatkannya seperti ini:
const email = event.queryStringParameters.email;
Untuk melihat apa sebenarnya yang terkandung dalam suatu benda peristiwa, Anda dapat membuat yang paling sederhana fungsi Yandex dan memutarnya dengan pertanyaan:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Hal ini dibahas secara lebih rinci (tetapi kurang jelas) dalam dokumentasi resmi
Jadi, buat direktori proyek (misalnya, pengirim), buka, inisialisasi proyek, instal dependensi:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Di sini hanya paket yang diperlukan @sendgrid/mail. Kantong plastik validator email cek keabsahan alamat emailnya (kok saya gak langsung tebak?), tapi kalau sudah yakin (sudah lama dicek tanpa kita), kita tidak perlu install (dan tentu saja tentu saja, kita tidak perlu memeriksanya di kode). Kantong plastik dotenv dirancang untuk membaca catatan dari file .env sebagai variabel runtime. Tapi di Fungsi Yandex Dimungkinkan untuk menempatkan variabel-variabel ini langsung ke lingkungan runtime. Bagaimana? - Aku akan menunjukkannya di bawah. Oleh karena itu paketnya dotenv Anda juga tidak dapat menginstalnya, dan file tersebut .env - jangan membuat, dan pada saat yang sama kodenya ada di file index.js Jangan berubah. Tapi di sini kami telah menginstal paket ini, jadi kami membuat file index.js ΠΈ .env:
touch index.js
touch .env
Dalam file index.js tulis 22 baris kode seperti pada gambar di atas (hanya pada baris #8 ubah email Anda), dan di file .env - (tanpa tanda kutip atau tanda baca) tentukan pasangan - nama/nilai kunci APIyang baru-baru ini kami terima di konsol SendGrid:
SENDGRID_API_KEY=kunci-sendgrid-api-Anda-sangat-rahasia
Dan jika Anda ingin lebih sedikit pekerjaan, kloning repositori dan instal paketnya:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Dalam file index.js, Di barisan #8 ganti e-mail; buat file di direktori root .env, dan di dalamnya menunjukkan nama/nilai kunci API, seperti yang ditunjukkan di atas.
3. Menyebarkan
Kurang lebih jelas dan detail tentangnya Yandex.Cloud dan bagaimana menempatkannya di sana Fungsi Yandex dijelaskan dalam artikel saya
Membuat zip-archive (sebut saja, misalnya, mailer.zip), di mana kami menyertakan direktori node_modules dan file .env, indeks.js - semuanya dari katalog proyek kami:
Kami membuat fungsi dengan nama... dengan benar - pengirim, di menu navigasi kiri kita masuk Editor, isi kolom yang wajib diisi, dan beralih ke tab arsip ZIP unduh arsip kami mailer.zip:
Dan inilah opsi pengunduhan yang disebutkan sebelumnya Kunci API langsung di sini, daripada membuat file di proyek .env, dan jangan instal paketnya dotenv. Tapi ini semua sudah kita lakukan, jadi saya tampilkan hanya untuk sekedar informasi saja. Artinya, tidak perlu menduplikasi!
Sekarang di pojok kanan atas klik tombol Buat Versi, dan tunggu beberapa detik. Jika semuanya sudah siap, otomatis kita akan masuk ke bagian tersebut Tinjau. Di sana kami akan mengaktifkan opsi tersebut fungsi publiksehingga Anda dapat berinteraksi dengannya dari dunia luar.
Anda melihat tautan biru di seberang tulisan Tautkan ke panggilan? Klik itu. Jendela browser kosong akan terbuka... Tapi tunggu - saya menerima email:
Sekarang Anda dapat kembali ke konsol SendGrid, dan tekan tombol Verifikasi Integrasi. Sistem akan memeriksa semuanya melalui salurannya, dan sebagai hasilnya, sistem akan mengembalikan layar seperti ini:
Itu saja, kawan (dan perempuan, tentu saja) - semuanya sangat sederhana dan elegan! Akan ada lebih banyak artikel. Jika ada yang tertarik membaca hal seperti ini, berlanggananlah agar tidak ketinggalan.
4. Sumbangan
Sumber: www.habr.com