Serversiz: ilk AWS Lambda funksiyanı buludda necə işlətmək olar

Bir on il əvvəl, bulud serverləri mücərrəd fiziki serverlər. İndi "Serverless" bulud serverlərini mücərrəd edir.

Texniki olaraq, serverlər hələ də var. Artıq onları idarə etmək lazım deyil.

Serverless-in başqa bir üstünlüyü, artıq bir server işlətməməyinizdir. "Server" bir anda ehtiyacınız olduqda görünür və sonra bitirdikdə yox olur. İndi serverlər əvəzinə funksiyalar baxımından düşünə bilərsiniz və bütün iş məntiqiniz artıq bu funksiyalarda yaşaya bilər.

AWS Lambda funksiyaları vəziyyətində buna tetik deyilir. Lambda funksiyaları müxtəlif yollarla tetiklenebilir: HTTP tələbi, S3-də yeni sənəd yüklənməsi, planlı bir iş, AWS Kinesis məlumat axını və ya AWS Sadə Notification Service (SNS) -dən bir bildiriş.

Bu dərslikdə öz lambda funksiyanızı necə qurmağı və bir bonus olaraq minimal kodu yazarkən AWS Buludda REST API-in necə qurulacağını sizə göstərəcəyəm.

Qeyd edək ki, Serverless-in üstünlükləri və mənfi cəhətləri xüsusi tətbiqinizdən asılıdır. Bu yazıda, Serverless'in xüsusi tətbiqiniz üçün uyğun olub olmadığını sizə söyləməyəcəyəm. Yalnız necə istifadə edəcəyinizi sizə göstərmək niyyətindəyəm.

Əvvəlcə AWS hesabınıza ehtiyacınız var. Hələ bir hesabınız yoxdursa, burada pulsuz AWS hesabı açın. AWS, bu dərs üçün lazım olanlardan daha çox olan pulsuz bir pilləyə sahibdir.

Keçirilmiş simin palindrom olub olmadığını yoxlayan isPalindrome funksiyasını yazırıq.

Yuxarıda JavaScript-də bir nümunə tətbiqini görürsən. Budur Gistub üçün Gistub üçün link.

Palindrom eyni şeyi irəli və geriyə oxuyan bir söz, söz və ya ardıcıllıqdır. Sadəlik üçün, funksiyanı yalnız sözlərlə məhdudlaşdırırıq.

Yuxarıdakı hissədən göründüyü kimi, ipi götürürük, parçalayırıq, çeviririk və sonra bir yerə qoyuruq. Sətir və onun tərsi eynidırsa, sətir palindromdur, əks halda sətir palindrom deyildir.

IsPalindrom Lambda funksiyasının yaradılması

Bu addımda Lambda funksiyasını yaratmaq üçün AWS konsoluna gedirik:

AWS konsolundakı Lambda'ya gedin.

Və sonra "Başlayın" düyməsini basın.

İş vaxtında Node.js 6.10 seçin və sonra "Boş funksiya" düyməsini basın.

Bu addımı atın və "Sonrakı" düyməsini basın.

Ad üçün isPalindrome daxil edin, təsvir üçün yeni Lambda funksiyanızın təsvirini daxil edin və ya boş qoyun.

Yuxarıda gördüyünüz kimi, lambda funksiyası yalnız bir modul olaraq ixrac etdiyimiz bir funksiyadır, bu vəziyyətdə işlədici olaraq. Fəaliyyət üç parametr qəbul edir: hadisə, kontekst və geri çağırış funksiyası.

Lambda funksiyası tamamlandıqda və bir cavab və ya səhv mesajı verdikdə geri çağırış yerinə yetirilir. Boş lambda planı üçün cavab "Lambdandan salam" sətri kimi sərt kodlaşdırılmışdır. Bu dərs üçün heç bir səhv işləmədiyi üçün sıfırdan istifadə edin. Növbəti slaydlarda hadisə parametrlərini daha yaxından nəzərdən keçirəcəyik.

Aşağıya fırladın. Rol üçün "Şablondan yeni rol yaratmaq" və "isPalindromeRole" və ya rol adı üçün hər hansı bir ad seçin.

Siyasət şablonları üçün "Sadə mikroservis" icazəsini seçin.

128 meqabayt sadə işləməyimiz üçün kifayətdir.

3 saniyəlik müddəti üçün bu, 3 saniyə ərzində geri dönməyəcəyi təqdirdə AWS onu bağlayır və bir səhv qaytaracağını bildirir. Üç saniyə kifayətdir.

Qabaqcıl parametrlərin qalan hissəsini dəyişməz qoyun.

"Funksiya yarat" düyməsini basın.

Təbrik edirəm - ilk Lambda funksiyanızı yaratmısınız. Bunu sınamaq üçün "Test" düyməsini basın.

Gördüyünüz kimi, Lambda funksiyanız "Lambdandan salam" sərt kodlu cavabı qaytarır.

İndi isPalindrome.js-dan kodu Lambda funksiyanıza əlavə edin, ancaq nəticə yerinə əvəzinə zəng vurun (null, nəticə). Sonra 3-cü sətrə abcd sərt kodlu bir simli dəyər əlavə edin və "Test" düyməsini basın.

Lambda funksiyası "abcd palindrom deyil" qayıtmalıdır.

"Racecar" ın sabit kodlu simli dəyəri üçün lambda funksiyası "racecar palindromdur" ifadəsini verir.

İndiyə qədər yaratdığımız lambda funksiyası gözlənildiyi kimi davranır.

Növbəti bir neçə addımda, onu tetiklemek və bir HTTP tələbi ilə bir simli mübahisəni necə keçəcəyinizi sizə göstərəcəyəm.

Express.js kimi bir vasitədən istifadə etməzdən əvvəl REST API-lərini sıfırdan yaratmış olsanız, yuxarıdakı parça sizin üçün məna kəsb etməlidir. Əvvəlcə bir server yaradırsınız və sonra bütün marşrutlarınızı bir-birinin ardınca təyin edirsiniz.

Bu bölmədə, AWS API Gateway ilə necə eyni işi edəcəyinizi sizə göstərəcəyəm.

API qapısını yaradın

AWS konsolunuza gedin və "API Gateway" düyməsini basın.

Və sonra "Başlayın" düyməsini basın.

Yeni API yarat panelində Yeni API seçin.

API adı üçün palindromeAPI istifadə edin. Təsvir üçün yeni API təsvirinizi daxil edin və ya sadəcə boş qoyun.

Bizim API sadə olacaq və yalnız Lambda funksiyası ilə əlaqə qurmaq üçün istifadə olunan bir GET metoduna sahib olacaqdır.

Fəaliyyət menyusundan Yaradılması metodunu seçin. Kiçik bir alt menyu göstərilir. Gedin və Get seçin və sağdakı onay işaretini vurun.

İnteqrasiya Növü altında Lambda funksiyasını seçin.

Sonra "OK" düyməsini basın.

GET - metodun icrası ekranında "İnteqrasiya tələbi" düyməsini basın.

Lambda funksiyası seçiminin İnteqrasiya tipi altında seçildiyinə əmin olun.

"Şablonlar müəyyən edilmirsə" seçin və məzmun növü olaraq "application / json" yazın.

Boş sahədə, aşağıda göstərilən JSON obyektini əlavə edin. Bu JSON obyekti, HTTP GET istəyini istifadə edərək Lambda funksiyasına simli dəyərlər ötürmək üçün istifadə edə biləcəyimiz sim parametrini müəyyənləşdirir. Bu Express.js-də req.params istifadə etməyə bənzəyir.

Növbəti addımlar Lambda funksiyasına sətir dəyərini necə ötürməyinizi və funksiya daxilində verilən dəyərə necə daxil olmağınızı göstərəcəkdir.

API artıq yerləşdirilməyə hazırdır. Fəaliyyətlər menyusunda, API yerləşdirmək vurun.

Yerləşdirmə mərhələsi üçün "[Yeni Faza]" seçin.

Sənətçi adı üçün "prod" ("istehsal" qısa) istifadə edin.

İndi API tətbiq olunur və adlandırılan URL Lambda ilə bir HTTP tələbi ilə ünsiyyət üçün istifadə olunur. Xatırlayırsınızsa, Lambda bir zəngə əlavə olaraq iki parametr istifadə edir: hadisə və kontekst.

Lambda'ya bir simli dəyər göndərmək üçün, işinizin çağırılan urlunu götürün və əlavə edin? String = someValue əlavə edildi. Köçürülən dəyəri daha sonra event.string ilə funksiyadan əldə etmək olar.

Kodu sabit kodlu simli dəyərini çıxartmaq və aşağıda göstərildiyi kimi event.string ilə əvəz etməklə dəyişdirin.

İndi brauzerdə funksiyanızın çağırılan URL-sini götürün və funksiyanı brauzer vasitəsilə sınamaq üçün "? String = abcd" əlavə edin.

Gördüyünüz kimi, Lambda abcd palindrom olmadığını cavablandırır. İndi yarış avtomobilləri üçün də eyni şeyi edin.

İstəsəniz, poçtalyondan yeni isPalindrome Lambda funksiyanı sınamaq üçün istifadə edə bilərsiniz. Poçtalyon API son nöqtələrinizi sınamaq üçün əla bir vasitədir. Daha çox məlumatı burada tapa bilərsiniz.

İşlədiyini yoxlamaq üçün palindrom var:

Və burada palindrom deyildir:

Təbrik edirik - yalnız Lambda funksiyanızı qurdunuz və təmin etdiniz!

Oxuduğunuz üçün təşəkkür edirik!