Այսօր մենք կստեղծենք այսպես կոչված. Yandex գործառույթը (պաշտոնական անուն
Ես նույնպես ավանդական սերվերների հակառակորդն եմ (բայց առանց ֆանատիզմի), և այսպես կոչվածի կողմնակից. Serverless (առանց սերվերի) լուծումներ, քանի որ ես չեմ սիրում (և ես իսկապես չգիտեմ, թե ինչպես) կառավարել սերվերները, և նույնիսկ ավելին, վճարել այն ժամանակի համար, երբ դրանք բեռնված չեն: Մեկ այլ բան գործառույթներն են: Ինչ-որ մեկը նրանց սպասարկում է առանց ինձ, իսկ ես վճարում եմ միայն զանգերի համար։ 2019 թվականի հոկտեմբերի սկզբին Yandex-ը ներկայացրել է իր Yandex Cloud գործառույթները - կարծես առաջինն է Ռուսաստանի Դաշնությունում Serverless. Եվ հատկապես հաճելին այն է, որ Ալիսի հմտությունների համար նրանք հիմնականում ազատ են, ուստի այդ ժամանակվանից նրանք իմ ծայրամասային տեսլականում են: Բայց եկեք արդեն սկսենք:
Եկեք պատկերացնենք այս սցենարը. Ձեր դիմումը (օրինակ, Ալիսի հմտությունը
Այն մասին, թե ինչպես է Յանդեքսի գործառույթները գրառումներ կատարել տվյալների բազայում Cloud Firestore մենք արդեն դիտել ենք այն ձեռնարկում
1. Ստեղծեք հաշիվ SendGrid-ում
ՆշումSendGrid-ը պարզապես իմ ընտրությունն է, որը ես արել եմ մի քանի պատճառով, որոնցից գլխավորն այն է, որ նրանք ունեն պատրաստի SDK Node.js-ի համար։ Դուք կարող եք ընտրել ցանկացած այլ փոստային ծառայություն:
Անցնենք առաջ
Հաջորդ քայլում մենք ընտրում ենք Node.js:
Հաջորդը մենք գալիս ենք մեր համար API-բանալու անունը (կցուցադրվի միայն վահանակում ստեղների ցանկում, և կապ չունի մեր ապագա կոդի հետ. ես պարզապես հայտնեցի անանցանելի demo-api-key) և սեղմեք կոճակը Ստեղծել բանալի:
Բանալին կստեղծվի, մենք կկրկնօրինակենք այն և կպահենք ամենախորը վստահության մեջ: Իսկ մենք կունենանք կոճակով էկրան Ստուգեք ինտեգրումը, ինչպես ստորև նկարում, բայց մենք դեռ չենք սեղմի այն, բայց եկեք անցնենք կոդը գրելուն.
2. Կոդ գրելը
Բայց կոդը ինքնին, ինչպես տեսնում եք, ծիծաղելիորեն փոքր է՝ 22 տող:
Հերթի մեջ #8 Իմ էլփոստը կոշտ կոդավորված է (և հետևաբար՝ ամաչկոտորեն թաքնված) – խնդրում եմ նշել ձերը: Իրական կյանքում մենք կստանանք բոլոր տվյալները (ներառյալ փոստ) օբյեկտից իրադարձություն. Օրինակ, եթե մեթոդը POST օբյեկտ է ուղարկվում մեր ֆունկցիային Տեղ դաշտով (գույքով) փոստ, այս դաշտի արժեքը կարելի է ստանալ այսպես.
const { user } = event;
const email = user.email;
Եվ եթե էլփոստի հասցեն փոխանցվում է ֆունկցիային՝ օգտագործելով մեթոդը GET, օրինակ ` https://functions.yandexcloud.net/123abc?[email protected]
պարամետրի արժեքը փոստ դուք կարող եք ստանալ այն այսպես.
const email = event.queryStringParameters.email;
Նայելու համար, թե կոնկրետ ինչ է պարունակվում օբյեկտում իրադարձություն, դուք կարող եք ստեղծել ամենապարզը Yandex գործառույթը և շրջեք այն հարցումներով.
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. Պլաստիկ տոպրակ էլփոստի վավերացնող ստուգում է էլ.փոստի հասցեն վավերականության համար (ինչպե՞ս ես անմիջապես չգուշակեցի), բայց եթե մենք համոզված ենք դրանում (այն արդեն երկար ժամանակ ստուգվել է առանց մեզ), մենք ստիպված չենք այն տեղադրել (և. իհարկե, մենք պետք չէ դա ստուգել կոդը): Պլաստիկ պայուսակ dotenv նախատեսված է ֆայլից գրառումները կարդալու համար .env որպես գործարկման ժամանակի փոփոխականներ: Բայց ներս Յանդեքսի գործառույթները Հնարավոր է տեղադրել այս փոփոխականները անմիջապես գործարկման միջավայրում: Ինչպե՞ս: - Ստորև ցույց կտամ: Հետևաբար փաթեթը dotenv դուք կարող եք նաև չտեղադրել այն, և ֆայլը .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 և ինչպես տեղադրել այն այնտեղ Յանդեքսի գործառույթները նկարագրված է իմ հոդվածում
Մենք ստեղծում ենք սուլոցով թռչել-արխիվ (եկեք այն անվանենք, օրինակ. mailer.zip), որում մենք ներառում ենք գրացուցակը հանգույցի_մոդուլներ և ֆայլեր .env, index.js - ամեն ինչ մեր նախագծի կատալոգից.
Մենք ստեղծում ենք ֆունկցիա անունով... ճիշտ - փոստատար, ձախ նավիգացիոն մենյուում մենք մտնում ենք Խմբագիր, լրացրեք պահանջվող դաշտերը և անցեք ներդիրին ZIP արխիվ ներբեռնեք մեր արխիվը mailer.zip:
Եվ ահա ներբեռնելու նախկինում նշված տարբերակը API բանալի ուղղակիորեն այստեղ, այլ ոչ թե նախագծում ֆայլ ստեղծելու փոխարեն .env, և մի տեղադրեք փաթեթը dotenv. Բայց մենք արդեն արել ենք այս ամենը, ուստի ես դա ցույց եմ տալիս զուտ տեղեկատվության համար: Այսինքն՝ կրկնօրինակելու կարիք չկա։
Այժմ վերին աջ անկյունում սեղմեք կոճակը Ստեղծել տարբերակև սպասեք մի քանի վայրկյան։ Երբ ամեն ինչ պատրաստ է, մենք ավտոմատ կերպով կանցնենք բաժին Վերանայել. Այնտեղ մենք հնարավորություն կտանք տարբերակը Հասարակական գործառույթորպեսզի արտաքին աշխարհից կարողանաս շփվել դրա հետ:
Դուք տեսնում եք մակագրության դիմացի կապույտ հղումը Զանգի հղում? Սեղմեք այն: Բրաուզերի դատարկ պատուհանը կբացվի... Բայց սպասեք, ես էլ-նամակ եմ ստացել.
Այժմ դուք կարող եք վերադառնալ վահանակ SendGridև սեղմեք կոճակը Ստուգեք ինտեգրումը. Համակարգն ամեն ինչ կստուգի իր ալիքներով, և արդյունքում այն պետք է վերադարձնի այսպիսի էկրան.
Ահա և վերջ, տղաներ (և աղջիկներ, իհարկե) - ամեն ինչ իսկապես շատ պարզ է և էլեգանտ: Կլինեն ավելի շատ հոդվածներ: Եթե որևէ մեկին հետաքրքրում է նման բան կարդալ, բաժանորդագրվեք, որպեսզի բաց չթողնեք:
4. Նվիրատվություններ
Source: www.habr.com