Бүгүн биз аталган нерсени түзөбүз. Яндекс функциясы (расмий аты
Мен ошондой эле салттуу серверлердин оппонентимин (бирок фанатизмсиз) жана аталган серверлердин жактоочусумун. serverless (серверсиз) чечимдер, анткени мен серверлерди башкарууну жактырбайм (жана мен чындыгында билбейм) жана андан да көп, алар жүктөлбөй турган убакыт үчүн төлөйм. Дагы бир нерсе - функциялар. Кимдир бирөө аларды менсиз тейлейт, мен чалуулар үчүн гана төлөйм. 2019-жылдын октябрынын башында Яндекс өзүнүн сунуштаган Yandex Cloud функциялары - Россия Федерациясында биринчи болуп жаткандай serverless. Ал эми өзгөчө жакшы нерсе, Алисанын жөндөмү үчүн алар жалпысынан эркин, ошондуктан алар менин перифериялык көз карашымда. Бирок азыртан эле баштайлы.
Келгиле, бул сценарийди элестетип көрөлү. Сиздин арызыңыз (мисалы, Алисанын чеберчилиги
Кантип жөнүндө Яндекс функциялары маалымат базасына жазууларды киргизүү Cloud Firestore биз буга чейин окуу куралында карадык
1. SendGrid ичинде эсеп жазууну түзүңүз
пикирSendGrid бул менин тандоом, аны мен бир нече себептерден улам жасадым, эң негизгиси, аларда Node.js үчүн даяр SDK бар. Сиз каалаган башка почта кызматын тандай аласыз.
Келгиле, уланталы
Кийинки кадамда биз тандайбыз Node.js:
Кийинки биз өзүбүздүн оюбузду ойлоп табабыз API-ачкычтын аты (ачкычтардын тизмесинде консолдо гана көрсөтүлөт жана биздин келечектеги кодубузга эч кандай тиешеси жок; мен жаңы эле бузулбас нерсени ойлоп таптым. demo-api-ачкычы) жана баскычты басыңыз ачкыч түзүү:
Ачкыч түзүлөт, биз аны көчүрөбүз жана аны терең ишенимде сактайбыз. Ал эми бизде баскычы бар экран болот Интеграцияны текшерүү, төмөнкү сүрөттөгүдөй, бирок биз аны азырынча басбайбыз, бирок кодду жазууга өтөлү:
2. Кодду жазуу
Бирок коддун өзү, сиз көрүп тургандай, күлкүлүү кичинекей - 22 сап!
Кезекте #8 Менин электрондук почтам катуу коддолгон (ошондуктан уялчаак жашырылган) - сиздикин көрсөтүңүз. Чыныгы жашоодо биз бардык маалыматтарды алабыз (анын ичинде электрондук почта) объекттен окуя. Мисалы, эгерде метод POST объект биздин функцияга жөнөтүлөт колдонуучу талаа (мүлк) менен электрондук почта, бул талаанын маанисин төмөнкүдөй алууга болот:
const { user } = event;
const email = user.email;
Ал эми электрондук почта дареги ыкманы колдонуу менен функцияга өтүп кетсе ТААНЫШМисалы: 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=your-ver-secret-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 жана аны кантип жайгаштыруу керек Яндекс функциялары менин макаламда сүрөттөлгөн
Түзүү индекс-архив (мисалы, аны атайлы, mailler.zip), ага биз каталогду киргизебиз node_modules жана файлдар .env, index.js - биздин долбоордун каталогунан баары:
Функцияны аты менен түзөбүз... туура - почтачы, сол багыттоо менюсуна биз киребиз редактор, талап кылынган талааларды толтуруп, өтмөккө өтүңүз ZIP архив биздин архивди жүктөп алыңыз mailler.zip:
Жана бул жерде жүктөө үчүн мурда айтылган вариант API ачкычы долбоордо файлды түзүүнүн ордуна, түздөн-түз бул жерде .env, жана пакетти орнотпоңуз дотенв. Бирок биз мунун баарын жасаганбыз, ошондуктан мен аны маалымат үчүн гана көрсөтүп жатам. Башкача айтканда, кайталоонун кереги жок!
Эми жогорку оң бурчтагы баскычты чыкылдатыңыз Версияны түзүү, жана бир-эки секунд күтө туруңуз. Баары даяр болгондо, биз автоматтык түрдө бөлүмгө өтөбүз жалпы көрүнүш. Ал жерден биз опцияны иштетебиз Коомдук функциятышкы дүйнөдөн аны менен өз ара аракеттенүү үчүн.
Сиз жазуунун карама-каршы көк шилтемени көрөсүз Чалуу шилтемеси? Аны басыңыз. Бош браузер терезеси ачылат... Бирок күтө туруңуз - мен электрондук кат алдым:
Эми сиз консолго кайтып келе аласыз SendGrid, жана баскычты басыңыз Интеграцияны текшерүү. Система баарын өз каналдары аркылуу текшерет, натыйжада ал төмөнкүдөй экранды кайтарышы керек:
Болду, балдар (жана кыздар, албетте) - баары чындыгында абдан жөнөкөй жана жарашыктуу! Дагы макалалар болот. Эгер кимдир бирөө ушул сыяктуу нерсени окууга кызыкдар болсо, өткөрүп жибербөө үчүн жазылыңыз.
4. Кайрымдуулук
Source: www.habr.com