Bugun biz deb atalmish yaratamiz. Yandex funktsiyasi (rasmiy nomi
Men ham an'anaviy serverlarning raqibiman (lekin fanatizmsiz) va shunday deb atalmishlar tarafdoriman. serversiz (serversiz) echimlar, chunki men serverlarni boshqarishni yoqtirmayman (va men qanday qilishni bilmayman) va undan ham ko'proq, ular yuklanmagan vaqt uchun pul to'layman. Yana bir narsa - bu funktsiyalar. Kimdir ularga mensiz xizmat qiladi va men faqat qo'ng'iroqlar uchun to'layman. 2019 yil oktyabr oyi boshida Yandex o'zining taqdimotini o'tkazdi Yandex bulut funktsiyalari - Rossiya Federatsiyasida birinchi bo'lib tuyuladi serversiz. Va ayniqsa yoqimli tomoni shundaki, Elisning mahorati uchun ular umuman bepul, shuning uchun ular o'sha paytdan beri mening periferik ko'rishimda. Ammo keling, allaqachon boshlaylik.
Keling, ushbu stsenariyni tasavvur qilaylik. Sizning arizangiz (masalan, Elisning mahorati
Qanday qilib kelganligi haqida Yandex funktsiyalari ma'lumotlar bazasiga yozuvlar kiriting Bulutli Firestore Biz buni allaqachon o'quv qo'llanmasida ko'rib chiqdik
1. SendGrid-da hisob yarating
notaSendGrid - bu mening tanlovim, men buni bir necha sabablarga ko'ra qildim, asosiysi, ularda Node.js uchun tayyor SDK mavjud. Siz istalgan boshqa pochta xizmatini tanlashingiz mumkin.
Keling, davom etaylik
Keyingi bosqichda biz tanlaymiz Node.js:
Keyinchalik biz o'zimiz uchun o'ylab topamiz API-kalit nomi (faqat kalitlar ro'yxatidagi konsolda ko'rsatiladi va bizning kelajakdagi kodimizga hech qanday aloqasi yo'q; men hozirgina chirimaydigan narsani o'ylab topdim. demo-api-kalit) va tugmani bosing Kalit yaratish:
Kalit yaratiladi, biz uni nusxalaymiz va uni chuqur ishonch bilan saqlaymiz. Va bizda tugmachali ekran bo'ladi Integratsiyani tekshiring, quyidagi rasmda bo'lgani kabi, lekin biz uni hali bosmaymiz, lekin kodni yozishga o'tamiz:
2. Kodni yozish
Ammo kodning o'zi, ko'rib turganingizdek, kulgili darajada kichik - 22 qator!
Mos ravishda #8 Mening elektron pochtam qattiq kodlangan (va shuning uchun uyatchan tarzda yashirilgan) - iltimos siznikini ko'rsating. Haqiqiy hayotda biz barcha ma'lumotlarni olamiz (shu jumladan elektron pochta) ob'ektdan hodisa. Misol uchun, agar usul POST ob'ekt bizning funktsiyamizga yuboriladi foydalanuvchi maydon (mulk) bilan elektron pochta, bu maydonning qiymatini quyidagicha olish mumkin:
const { user } = event;
const email = user.email;
Va agar elektron pochta manzili usul yordamida funksiyaga uzatilsa OLING, masalan: https://functions.yandexcloud.net/123abc?[email protected]
parametr qiymati elektron pochta siz buni shunday olishingiz mumkin:
const email = event.queryStringParameters.email;
Ob'ektda aniq nima borligini ko'rib chiqish hodisa, eng oddiyini yaratishingiz mumkin Yandex funktsiyasi va uni so'rovlar bilan aylantiring:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Bu rasmiy hujjatlarda batafsilroq (lekin kamroq aniq) muhokama qilinadi
Shunday qilib, loyiha katalogini yarating (masalan, pochtachi), unga o'ting, loyihani ishga tushiring, bog'liqliklarni o'rnating:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Bu erda faqat paket kerak bo'ladi @sendgrid/mail. Plastik sumka elektron pochta tekshiruvi elektron pochta manzilining haqiqiyligini tekshiradi (qanday qilib men darhol taxmin qilmadim?), lekin agar bunga ishonchimiz komil bo'lsa (u bizsiz uzoq vaqtdan beri tekshirilgan), biz uni o'rnatishimiz shart emas (va, Albatta, biz buni kodda tekshirishimiz shart emas). Plastik sumka dotenv fayldan yozuvlarni o'qish uchun mo'ljallangan .NS ish vaqti o'zgaruvchilari sifatida. Lekin ichida Yandex funktsiyalari Bu o'zgaruvchilarni bevosita ish vaqti muhitiga joylashtirish mumkin. Qanaqasiga? - Quyida ko'rsataman. Shuning uchun paket dotenv siz ham uni o'rnatolmaysiz va fayl .NS - yaratmang va shu bilan birga kod faylda indeks.js o'zgartirmang. Lekin bu erda biz ushbu paketni o'rnatdik, shuning uchun biz fayllarni yaratamiz indeks.js ΠΈ .NS:
touch index.js
touch .env
Fayl ichida indeks.js Yuqoridagi skrinshotda ko'rsatilgan 22 qator kodni yozing (faqat qatorda #8 elektron pochtangizni o'zgartiring) va faylda .NS - (qo'shtirnoq yoki tinish belgilarisiz) juftlikni belgilang - kalit nomi/qiymati APIBiz yaqinda konsolda oldik SendGrid:
SENDGRID_API_KEY=juda-sirli-sendgrid-api-kalitingiz
Va agar siz kamroq ishlashni istasangiz, omborni klonlang va paketlarni o'rnating:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Fayl ichida indeks.js, mos ravishda #8 elektron pochtani o'zgartirish; ildiz katalogida fayl yarating .NS, va unda kalitning nomi/qiymatini ko'rsating API, yuqorida ko'rsatilganidek.
3. Joylashtirish
Haqida ko'proq yoki kamroq aniq va batafsil Yandex.Cloud va uni qanday joylashtirish kerak Yandex funktsiyalari mening maqolamda tasvirlangan
Yaratmoq zip-arxiv (masalan, uni chaqiraylik, mailler.zip), biz katalogni o'z ichiga olamiz tugun_modullari va fayllar .env, index.js - hamma narsa bizning loyiha katalogimizdan:
Biz nom bilan funksiya yaratamiz... to'g'ri - pochtachi, chap navigatsiya menyusida biz kiritamiz Tahrirlovchisi, kerakli maydonlarni to'ldiring va yorliqga o'ting ZIP arxiv arxivimizni yuklab oling mailler.zip:
Va bu erda yuklab olish uchun avval aytib o'tilgan variant API kaliti loyihada fayl yaratish o'rniga, to'g'ridan-to'g'ri bu erda .NS, va paketni o'rnatmang dotenv. Ammo biz bularning barchasini allaqachon qildik, shuning uchun men buni faqat ma'lumot uchun ko'rsataman. Ya'ni, dublikat qilishning hojati yo'q!
Endi yuqori o'ng burchakdagi tugmani bosing Versiya yaratish, va bir necha soniya kuting. Har bir narsa tayyor bo'lgach, biz avtomatik ravishda bo'limga o'tamiz haqida umumiy ma'lumot. U erda biz variantni yoqamiz Jamoat funktsiyasitashqi dunyodan u bilan o'zaro aloqada bo'lishingiz uchun.
Siz yozuvning qarshisida ko'k havolani ko'rasiz Qo'ng'iroq havolasi? Uni bosing. Bo'sh brauzer oynasi ochiladi ... Lekin kuting - men elektron pochta xabarini oldim:
Endi siz konsolga qaytishingiz mumkin SendGrid, va tugmasini bosing Integratsiyani tekshiring. Tizim o'z kanallari orqali hamma narsani tekshiradi va natijada u quyidagi kabi ekranni qaytarishi kerak:
Mana, yigitlar (va qizlar, albatta) - hamma narsa juda oddiy va oqlangan! Ko'proq maqolalar bo'ladi. Agar kimdir shunga o'xshash narsalarni o'qishga qiziqsa, o'tkazib yubormaslik uchun obuna bo'ling.
4. Xayriyalar
Manba: www.habr.com