Бүгін біз деп аталатын нәрсені жасаймыз. Яндекс функциясы (ресми атауы
Мен сондай-ақ дәстүрлі серверлердің қарсыласымын (бірақ фанатизмсіз) және деп аталатындарды жақтаймын. серверсіз (серверсіз) шешімдер, өйткені мен серверлерді басқаруды ұнатпаймын (және мен шынымен де білмеймін) және одан да көп жүктелмеген уақыт үшін төлеймін. Тағы бір нәрсе - функциялар. Біреу оларға менсіз қызмет көрсетеді, мен тек қоңыраулар үшін төлеймін. 2019 жылдың қазан айының басында Яндекс өзінің таныстырылымын көрсетті Яндекс бұлтты функциялары – Ресей Федерациясында бірінші болып отырған сияқты серверсіз. Ең жақсысы, Алисаның дағдылары үшін олар әдетте тегін, сондықтан олар менің перифериялық көзқарасымда болды. Бірақ қазірдің өзінде бастайық.
Осы сценарийді елестетіп көрейік. Сіздің өтінішіңіз (мысалы, Алиса шеберлігі
Қалайдан бастап туралы Яндекс функциялары мәліметтер базасына жазбалар енгізу Cloud Firestore біз оны оқулықта қарастырдық
1. SendGrid ішінде тіркелгі жасаңыз
ескертуSendGrid - бұл менің таңдауым, оны мен бірнеше себептерге байланысты жасадым, ең бастысы, оларда Node.js үшін дайын SDK бар. Сіз кез келген басқа пошта қызметін таңдай аласыз.
жалғастыру
Келесі қадамда біз таңдаймыз Node.js:
Әрі қарай біз өзімізді ойлап табамыз API-кілт атауы (кілттер тізімінде тек консольде көрсетіледі және біздің болашақ кодымызға ешқандай қатысы жоқ; мен жаңа ғана бұзылмайтын нәрсені ойлап таптым. demo-api кілті) және түймесін басыңыз Кілт жасау:
Кілт жасалады, біз оны көшіреміз және оны ең терең құпияда сақтаймыз. Ал бізде түймесі бар экран болады Интеграцияны тексеру, төмендегі суреттегідей, бірақ біз оны әлі баспаймыз, бірақ кодты жазуға көшейік:
2. Кодты жазу
Бірақ кодтың өзі, көріп отырғаныңыздай, күлкілі кішкентай - 22 жол!
Кезекте #8 Менің электрондық поштам қатты кодталған (және сондықтан ұялшақ жасырын) - өзіңізді көрсетіңіз. Нақты өмірде біз барлық деректерді аламыз (соның ішінде электрондық пошта) нысаннан оқиға. Мысалы, егер әдіс POST нысан біздің функциямызға жіберіледі пайдаланушы өріспен (меншік) электрондық пошта, бұл өрістің мәнін келесідей алуға болады:
const { user } = event;
const email = user.email;
Ал егер электрондық пошта мекенжайы әдіс арқылы функцияға берілсе GET, мысалы: https://functions.yandexcloud.net/123abc?[email protected]
параметр мәні электрондық пошта сіз оны келесідей ала аласыз:
const email = event.queryStringParameters.email;
Нысанда нақты не бар екенін көру үшін оқиға, сіз ең қарапайымын жасай аласыз Яндекс функциясы және оны сұраулармен бұраңыз:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Бұл ресми құжаттамада толығырақ (бірақ анық емес) талқыланады
Сонымен, жоба каталогын жасаңыз (мысалы, пошташы), оған өтіңіз, жобаны инициализациялаңыз, тәуелділіктерді орнатыңыз:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Мұнда тек пакет қажет @sendgrid/mail. Пластикалық пакет электрондық пошта тексерушісі электрондық пошта мекенжайының жарамдылығын тексереді (мен қалай бірден болмадым?), бірақ біз оған сенімді болсақ (ол бізсіз ұзақ уақыт бойы тексерілген), оны орнатудың қажеті жоқ (және Әрине, оны кодта тексерудің қажеті жоқ). Пластикалық пакет дотенв файлдан жазбаларды оқуға арналған .env орындау уақытының айнымалылары ретінде. Бірақ ішінде Яндекс функциялары Бұл айнымалы мәндерді тікелей орындалу ортасына орналастыруға болады. Қалай? - Төменде көрсетемін. Сондықтан пакет дотенв оны және файлды орнатуға болмайды .env - жасамаңыз, сонымен бірге код файлда болады index.js өзгермеңіз. Бірақ мұнда біз бұл пакетті орнаттық, сондықтан файлдарды жасаймыз index.js и .env:
touch index.js
touch .env
Файлда index.js Жоғарыдағы скриншотта көрсетілген кодтың 22 жолын жазыңыз (тек жолда #8 электрондық поштаңызды өзгертіңіз) және файлда .env - (тырнақшасыз немесе тыныс белгілерінсіз) жұпты көрсетіңіз - кілт атауы/мәні APIОны біз жақында консольде алдық SendGrid:
SENDGRID_API_KEY=сіздің-өте-құпия-sendgrid-api-кілтіңіз
Егер сіз аз жұмыс жасағыңыз келсе, репозиторийді клондаңыз және бумаларды орнатыңыз:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Файлда index.js, кезекте #8 электрондық поштаны өзгерту; түбірлік каталогта файл жасаңыз .env, және онда кілттің атын/мәнін көрсетіңіз API, жоғарыда көрсетілгендей.
3. Орналастыру
туралы көп немесе аз анық және егжей-тегжейлі Yandex.Cloud және оны қалай орналастыру керек Яндекс функциялары менің мақаламда сипатталған
Жасау ZIP-мұрағат (оны атаймыз, мысалы, mailler.zip), оған біз каталогты қосамыз түйін_модульдері және файлдар .env, index.js - барлығы біздің жоба каталогынан:
Біз... атымен функцияны дұрыс жасаймыз - пошташы, сол жақ шарлау мәзірінде біз енгіземіз Редактор, қажетті өрістерді толтырып, қойындыға ауысыңыз ZIP мұрағаты біздің мұрағатты жүктеп алыңыз mailler.zip:
Міне, жүктеп алудың бұрын айтылған нұсқасы API кілті жобада файл жасаудың орнына тікелей осында .env, және буманы орнатпаңыз дотенв. Бірақ біз мұның бәрін жасадық, сондықтан мен оны тек ақпарат үшін көрсетіп отырмын. Яғни, қайталаудың қажеті жоқ!
Енді жоғарғы оң жақ бұрыштағы түймені басыңыз Нұсқа жасау, және бірнеше секунд күтіңіз. Барлығы дайын болғанда, біз автоматты түрде бөлімге өтеміз қайта қарау. Онда біз опцияны қосамыз Қоғамдық функциясыртқы әлемнен онымен әрекеттесе алатындай етіп.
Жазудың қарама-қарсы жағындағы көк сілтемені көресіз Қоңырау сілтемесі? Оны басыңыз. Бос шолғыш терезесі ашылады... Бірақ күте тұрыңыз - электрондық поштаны алдым:
Енді консольге оралуға болады SendGrid, және түймесін басыңыз Интеграцияны тексеру. Жүйе барлығын өз арналары арқылы тексереді, нәтижесінде ол келесідей экранды қайтаруы керек:
Міне, жігіттер (және қыздар, әрине) - бәрі шынымен де өте қарапайым және талғампаз! Тағы да мақалалар болады. Егер біреу осындай нәрсені оқығысы келсе, жіберіп алмау үшін жазылыңыз.
4. Қайырымдылық
Ақпарат көзі: www.habr.com