Dinten ieu kami baris nyieun nu disebut. Fungsi Yandex (ngaran resmi
Kami ogé lawan (tapi tanpa fanatisme) tina server tradisional, sarta supporter nu disebut. serverless (serverless) solusi, sabab kuring teu resep (jeung kuring teu bener nyaho kumaha carana) administer server, komo leuwih ti kitu, mayar waktu nalika maranéhna teu dimuat. Hal séjén nyaéta fungsi. Aya anu ngalayanan aranjeunna tanpa kuring, sareng kuring ngan ukur mayar telepon. Dina awal Oktober 2019, Yandex nampilkeun na Fungsi Awan Yandex - sigana anu munggaran di Féderasi Rusia serverless. Sareng anu paling saé nyaéta pikeun kaahlian Alice aranjeunna umumna gratis, janten aranjeunna parantos aya dina visi periferal kuring ti saprak éta. Tapi hayu urang ngamimitian geus.
Hayu urang ngabayangkeun skenario ieu. Aplikasi anjeun (contona, kaahlian Alice
Ngeunaan kumaha ti Fungsi Yandex nyieun éntri dina database Awan Firestore kami geus kasampak di eta dina tutorial
1. Jieun rekening di SendGrid
nyariosSendGrid mangrupikeun pilihan kuring, anu ku kuring dilakukeun ku sababaraha alesan, anu utama nyaéta aranjeunna gaduh SDK anu siap-siap pikeun Node.js. Anjeun tiasa milih jasa surat anu sanés.
Hayu urang ngaléngkah
Dina lengkah saterusna urang milih Node.js:
Satuluyna urang datang jeung pikeun urang API-ngaran konci (bakal ditampilkeun ngan dina konsol dina daptar konci, sarta teu boga nanaon ka teu jeung kode hareup urang; Kuring ngan datang nepi ka hiji imperishable demo-api-konci) sareng pencét tombol Jieun Key:
konci bakal dihasilkeun, urang bakal nyalin eta sarta tetep dina kapercayaan deepest. Sarta kami bakal boga layar kalawan tombol Pariksa Integrasi, Saperti dina gambar di handap ieu, tapi urang moal klik deui, tapi hayu urang neruskeun nulis kode:
2. Kodeu tulisan
Tapi kode sorangan, anjeun tiasa ningali, ridiculously leutik - 22 garis!
Baris #8 Surélék abdi hardcoded (ku kituna isin disumputkeun) - punten nunjukkeun milik anjeun. Dina kahirupan nyata, urang bakal nampi sadaya data (kaasup email) tina objék kajadian. Contona, upami metoda POST hiji obyék dikirim ka fungsi urang nu make kalawan sawah (properti) email, nilai widang ieu tiasa didapet kawas kieu:
const { user } = event;
const email = user.email;
Tur upami alamat surélék disalurkeun kana fungsi ngagunakeun métode meunangkeunContona: https://functions.yandexcloud.net/123abc?[email protected]
nilai parameter email anjeun tiasa kéngingkeun sapertos kieu:
const email = event.queryStringParameters.email;
Pikeun nempo naon kahayang anu dikandung dina hiji obyék kajadian, Anjeun bisa nyieun pangbasajanna Fungsi Yandex sareng pulas ku patarosan:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Ieu dibahas dina leuwih jéntré (tapi kirang jelas) dina dokuméntasi resmi
Janten, jieun diréktori proyék (contona, mailer), lebet ka dinya, initialize proyék, pasang dependensi:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Di dieu ngan ukur pakét anu diperyogikeun @sendgrid/mail. Kantong plastik email-validator pariksa alamat surélék pikeun validitas (kumaha kuring teu nebak langsung?), Tapi lamun urang yakin eta (eta geus dipariksa pikeun lila tanpa kami), urang teu kudu install deui (jeung, tina tangtu, urang teu kudu pariksa deui dina kode). Kantong plastik dotenv dirancang pikeun maca rékaman tina file .env salaku variabel runtime. Tapi dina Fungsi Yandex Kasebut nyaéta dimungkinkeun pikeun nempatkeun variabel ieu langsung kana lingkungan runtime. Kumaha? - Kuring gé nunjukkeun eta di handap. Kituna paket dotenv anjeun ogé tiasa teu install deui, jeung file .env - ulah nyieun, sarta dina waktos anu sareng kode dina file indéks.js ulah robah. Tapi di dieu kami geus dipasang pakét ieu, jadi urang nyieun file indéks.js и .env:
touch index.js
touch .env
Dina file indéks.js nulis 22 garis kode ditémbongkeun dina screenshot di luhur (ngan dina garis #8 ngarobah email anjeun), sareng dina file .env - (tanpa tanda petik atawa tanda baca) tangtukeun pasangan - ngaran konci / nilai APInu nembe kami nampi dina konsol nu SendGrid:
SENDGRID_API_KEY=anjeun-pisan-rahasia-sendgrid-api-key
Sareng upami anjeun hoyong kirang damel, clone gudang sareng pasang bungkusan:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Dina file indéks.js, baris #8 ngarobah email; nyieun file dina diréktori root .env, sareng di jerona nunjukkeun nami / nilai konci API, sakumaha ditémbongkeun ngan di luhur.
3. Nyebarkeun
Leuwih atawa kurang jelas tur jéntré ngeunaan Yandex.Cloud sareng kumaha nempatkeunana di dinya Fungsi Yandex dijelaskeun dina artikel abdi
Urang nyieun pos-arsip (hayu urang sebut wae, contona, mailer.zip), dimana urang kalebet diréktori simpul_modul jeung file .env, index.js - sadayana tina katalog proyék kami:
Urang nyieun hiji fungsi jeung ngaran ... bener - mailer, dina menu navigasi kénca kami asupkeun jelema nu nyunting, eusian widang nu diperlukeun, tur pindah ka tab arsip ZIP unduh arsip kami mailer.zip:
Sareng ieu mangrupikeun pilihan anu disebatkeun sateuacana pikeun diunduh konci API langsung di dieu, tinimbang nyieun file dina proyék .env, sarta ulah install pakét dotenv. Tapi kami parantos ngalaksanakeun sadayana ieu, janten kuring nunjukkeun éta ngan pikeun inpormasi. Hartina, teu perlu duplikat!
Ayeuna di pojok katuhu luhur klik tombol Jieun versi, sareng antosan sababaraha detik. Nalika sagalana geus siap, urang bakal otomatis buka bagian gambaran. Di dinya urang bakal ngaktipkeun pilihan Fungsi umumku kituna anjeun bisa berinteraksi sareng eta ti dunya luar.
Anjeun ningali link biru sabalikna prasasti Tumbu nelepon? Pencét éta. Jandéla pangotektak kosong bakal dibuka... Tapi antosan - Abdi nampi email:
Ayeuna anjeun tiasa uih deui ka konsol SendGrid, teras pencét tombol Pariksa Integrasi. Sistim bakal pariksa sagalana ngaliwatan saluran na, sarta salaku hasilna kudu balik layar kawas kieu:
Éta waé, lalaki (sareng awéwé, tangtosna) - sadayana saderhana pisan sareng elegan! Bakal aya deui artikel. Upami aya anu resep maca sapertos kieu, ngalanggan supados anjeun henteu sono.
4. Sumbangan
sumber: www.habr.com