Going Serverless: как да стартирате първата си AWS Lambda функция в облака

Преди десетилетие облачните сървъри отстраниха физическите сървъри. И сега „Без сървър“ абстрахира облачните сървъри.

Технически, сървърите все още са там. Просто няма нужда да ги управлявате повече.

Друго предимство на без сървъра е, че вече няма нужда да поддържате сървър работещ през цялото време. „Сървърът“ изведнъж се появява, когато имате нужда от него, след това изчезва, когато сте готови с него. Сега можете да мислите по отношение на функциите вместо сървърите и цялата ви бизнес логика вече може да живее в рамките на тези функции.

В случай на AWS Lambda функции, това се нарича спусък. Функциите на Lambda могат да бъдат задействани по различни начини: HTTP заявка, нов документ за качване на S3, планирана работа, AWS Kinesis поток от данни или известие от AWS Simple Notification Service (SNS).

В този урок ще ви покажа как да настроите вашата собствена функция Lambda и като бонус ще ви покажа как да настроите REST API всичко в AWS Cloud, докато пиша минимален код.

Обърнете внимание, че плюсовете и минусите на без сървър зависят от вашия конкретен случай на използване. Така че в тази статия няма да ви казвам дали Serverless е подходящ за вашето конкретно приложение - просто ще ви покажа как да го използвате.

Първо, ще ви трябва акаунт в AWS. Ако все още нямате такъв, започнете с отваряне на безплатен акаунт за AWS тук. AWS има безплатен слой, който е повече от достатъчен за това, което ще ви е необходимо за този урок.

Ще напишем функцията isPalindrome, която проверява дали предаваният низ е палиндром или не.

По-горе е пример за изпълнение в JavaScript. Ето връзката за същността на Github.

Палиндромът е дума, фраза или последователност, която чете същото назад като напред, за простота ще ограничим функцията само до думи.

Както можем да видим в фрагмента по-горе, ние вземаме низа, разделяме го, обръщаме го и след това го съединяваме. ако низът и обратната му страна са равни, низът е Palindrome, в противен случай низът не е Palindrome.

Създаване на функцията isPalindrome Lambda

В тази стъпка ще се насочим към конзолата AWS, за да създадем функцията Lambda:

В конзолата AWS отидете до Lambda.

И след това натиснете „Започнете сега“.

За време на изпълнение изберете Node.js 6.10 и след това натиснете „Празна функция“.

Пропуснете тази стъпка и натиснете „Напред“.

За тип Име в isPalindrome, за описание въведете в описание на новата си функция Lambda или го оставете празно.

Както можете да видите в същността над функцията на Lambda е просто функция, която изнасяме като модул, в случая, наречен handler. Функцията приема три параметъра: събитие, контекст и функция за обратно извикване.

Обратното извикване ще стартира, когато функцията Lambda е изпълнена и ще върне отговор или съобщение за грешка. За отговора на черния Lambda планът е кодиран твърдо като низ „Здравей от Lambda“. За този урок, тъй като няма да има грешки в работата, просто ще използвате Null. Ще разгледаме внимателно параметъра на събитието в следващите няколко слайда.

Превърти надолу. За роля изберете „Създаване на нова роля от шаблон“, а за името на ролята еPalindromeRole или каквото и да е име.

За шаблони на политики изберете разрешенията „Simple Microservice“.

За паметта 128 мегабайта е повече от достатъчно за нашата проста функция.

Що се отнася до времето за изчакване 3 секунди, това означава, че - ако функцията не се върне в рамките на 3 секунди - AWS ще я изключи и ще върне грешка. Три секунди също е повече от достатъчно.

Оставете останалата част от разширените настройки непроменена.

Натиснете „Създаване на функция“.

Поздравления - създадохте първата си Ламбда функция. За да го тествате, натиснете „Тест“.

Както можете да видите, вашата Lambda функция връща твърдо кодирания отговор на „Здравей от Ламбда“.

Сега добавете кода от isPalindrome.js към вашата Lambda функция, но вместо връщане на резултат използвайте обратно извикване (нула, резултат). След това добавете твърдо кодирана стойност на низ от abcd на ред 3 и натиснете „Тест“.

Функцията Lambda трябва да връща „abcd не е палиндром“.

За твърдо кодираната струнна стойност на „състезателен автомобил“, функцията „Ламбда“ връща „състезателният автомобил е палиндром“.

Засега създадената от нас Ламбда функция се държи според очакванията.

В следващите стъпки ще ви покажа как да го задействате и ще му предам низ аргумент, използвайки HTTP заявка.

Ако сте създали REST API от нулата, преди да използвате инструмент като Express.js, фрагментът по-горе трябва да има смисъл за вас. Първо създавате сървър и след това определяте всичките си маршрути един по един.

В този раздел ще ви покажа как да направите същото, използвайки Gateway API AWS.

Създаване на шлюза на API

Отидете до вашата конзола AWS и натиснете „Gateway API“.

И след това натиснете "Започнете."

В Създаване на ново табло за управление на API изберете „Нов API“.

За име на API използвайте „palindromeAPI.“ За описание въведете описание на новия си API или просто го оставете празно.

Нашият API ще бъде прост и ще има само един GET метод, който ще се използва за комуникация с функцията Lambda.

В менюто Действия изберете „Създаване на метод.“ Ще се появи малко подменю. Продължете напред и изберете GET и щракнете върху отметката вдясно.

За тип интеграция изберете функция Lambda.

След това натиснете „OK“.

В екрана GET - Изпълнение на метод натиснете „Заявка за интеграция“.

За тип интеграция се уверете, че е избрана функция Lambda.

За преминаване през тялото на заявка, изберете „Когато няма дефинирани шаблони“ и след това за Content-Type въведете „application / json“.

В празното пространство добавете показания по-долу обект JSON. Този JSON обект дефинира параметъра „string“, който ще ни позволи да преминем през низови стойности към функцията Lambda, използвайки HTTP GET заявка. Това е подобно на използването на req.params в Express.js.

В следващите стъпки ще разгледаме как да предадем стойността на низа към функцията Lambda и как да получим достъп до предаваната стойност от функцията.

API вече е готов за внедряване. В менюто Действия щракнете върху „Разгърнете API“.

За етапа на разполагане изберете „[New Stage]“.

А за името на сцената използвайте „prod“ (което е кратко за „производство“).

API вече е разгърнат и URL адресът на извикване ще бъде използван за комуникация чрез HTTP заявка с Lambda. Ако си спомняте, в допълнение към обратно повикване, Lambda приема два параметъра: събитие и контекст.

За да изпратите стойност на низ до Lambda, вземете URL адреса на вашата функция и добавете към нея? String = someValue и след това предаваната стойност може да бъде достъпна от функцията, като използвате event.string.

Променете кода, като премахнете твърдо кодираната стойност на низа и я замените с event.string, както е показано по-долу.

Сега в браузъра вземете URL адреса на функцията си и добавете? String = abcd, за да тествате функцията си чрез браузъра.

Както можете да видите, Lambda отговаря, че abcd не е палиндром. Сега направете същото и за състезателния автомобил.

Ако предпочитате, можете да използвате и Postman, за да тествате новата си функцияPalindrome Lambda. Пощальонът е чудесен инструмент за тестване на вашите крайни точки на API, можете да научите повече за това тук.

За да проверите дали работи, ето един Palindrome:

А ето и не-палиндром:

Поздравления - току-що сте настроили и внедрили вашата собствена функция Lambda!

Благодаря за четенето!