de Adam Watt

Going Serverless: cum să rulați prima funcție AWS Lambda în cloud

Going Serverless cum sa rulati prima functie AWS Lambda in

În urmă cu un deceniu, serverele cloud abstraeau serverele fizice. Și acum, „Serverless” face abstracție de servere cloud.

Din punct de vedere tehnic, serverele sunt încă acolo. Pur și simplu nu mai trebuie să le gestionezi.

Un alt avantaj de a rămâne fără server este că nu mai trebuie să mențineți un server care rulează tot timpul. „Serverul” apare brusc când aveți nevoie de el, apoi dispare când ați terminat cu el. Acum puteți gândi în termeni de funcții în loc de servere, iar toată logica dvs. de afaceri poate trăi acum în cadrul acestor funcții.

În cazul funcțiilor AWS Lambda, aceasta se numește declanșator. Funcțiile Lambda pot fi declanșate în diferite moduri: o solicitare HTTP, un nou document încărcat în S3, un job programat, un flux de date AWS Kinesis sau o notificare de la AWS Simple Notification Service (SNS).

În acest tutorial, vă voi arăta cum să configurați propria funcție Lambda și, ca bonus, vă voi arăta cum să configurați un API REST totul în AWS Cloud, în timp ce scrieți cod minim.

Rețineți că avantajele și dezavantajele Serverless depind de cazul dvs. de utilizare specific. Deci, în acest articol, nu vă voi spune dacă Serverless este potrivit pentru aplicația dvs. particulară – vă voi arăta doar cum să o utilizați.

Mai întâi, veți avea nevoie de un cont AWS. Dacă nu aveți încă unul, începeți prin deschiderea unui cont AWS gratuit aici. AWS are un nivel gratuit care este mai mult decât suficient pentru ceea ce veți avea nevoie pentru acest tutorial.

Vom scrie funcția isPalindrom, care verifică dacă un șir trecut este un palindrom sau nu.

Mai sus este un exemplu de implementare în JavaScript. Aici este legătură pentru esență pe Github.

Un palindrom este un cuvânt, o frază sau o secvență care citește la fel ca înapoi ca înainte, pentru simplitate, vom limita funcția doar la cuvinte.

După cum putem vedea în fragmentul de mai sus, luăm șirul, îl împărțim, îl inversăm și apoi îl alăturăm. dacă șirul și reversul său sunt egale șirul este un Palindrom, altfel șirul nu este un Palindrom.

Crearea funcției isPalindrome Lambda

În acest pas ne vom îndrepta către Consola AWS pentru a crea funcția Lambda:

Going Serverless cum sa rulati prima functie AWS Lambda in

În consola AWS, mergeți la Lambda.

1611306549 84 Going Serverless cum sa rulati prima functie AWS Lambda in

Și apoi apăsați „Începeți acum”.

1611306550 540 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru runtime, selectați Node.js 6.10 și apoi apăsați „Funcție necompletată”.

1611306550 591 Going Serverless cum sa rulati prima functie AWS Lambda in

Omiteți acest pas și apăsați „Următorul”.

1611306550 485 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru tipul Name în isPalindrome, pentru descrierea tipului descrierii noii funcții Lambda sau lăsați-o necompletată.

După cum puteți vedea în esențial deasupra unei funcții Lambda este doar o funcție pe care o exportăm ca un modul, în acest caz, numit handler. Funcția ia trei parametri: eveniment, context și o funcție de apel invers.

Apelarea va rula atunci când funcția Lambda este terminată și va returna un răspuns sau un mesaj de eroare. Pentru răspunsul plan alb Lambda este codat greu ca șirul „Bună ziua de la Lambda”. Pentru acest tutorial, deoarece nu va exista o eroare de manipulare, veți folosi doar Null. Vom analiza cu atenție parametrul evenimentului în următoarele diapozitive.

1611306551 252 Going Serverless cum sa rulati prima functie AWS Lambda in

Deruleaza in jos. Pentru rol, alegeți „Creați un rol nou din șablon”, iar pentru numele rolului, utilizați isPalindromeRole sau orice alt nume, doriți.

Pentru șabloanele de politică, alegeți permisiunile „Microserviciu simplu”.

1611306551 715 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru memorie, 128 megaocteți este mai mult decât suficient pentru funcția noastră simplă.

În ceea ce privește expirarea de 3 secunde, aceasta înseamnă că – în cazul în care funcția nu revine în 3 secunde – AWS o va închide și va întoarce o eroare. Trei secunde sunt, de asemenea, mai mult decât suficiente.

Lăsați restul setărilor avansate neschimbate.

1611306551 801 Going Serverless cum sa rulati prima functie AWS Lambda in

Apăsați „Creați funcția”.

1611306551 649 Going Serverless cum sa rulati prima functie AWS Lambda in

Felicitări – ți-ai creat prima Funcție Lambda. Pentru a-l testa, apăsați „Test”.

1611306552 138 Going Serverless cum sa rulati prima functie AWS Lambda in

După cum puteți vedea, Funcția dvs. Lambda returnează răspunsul codificat greu de „Bună ziua de la Lambda”.

1611306552 288 Going Serverless cum sa rulati prima functie AWS Lambda in

Acum adăugați codul de la isPalindrome.js la funcția Lambda, dar în loc de return result utilizare callback(null, result). Apoi adăugați o valoare de șir codificată tare abcd pe linia 3 și apăsați „Test”.

1611306552 872 Going Serverless cum sa rulati prima functie AWS Lambda in

Funcția Lambda ar trebui să returneze „abcd nu este un Palindrom”.

1611306552 585 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru valoarea șirului codat cu „racecar”, Funcția Lambda returnează „racecar este un Palindrom”.

1611306553 26 Going Serverless cum sa rulati prima functie AWS Lambda in

Până în prezent, funcția Lambda pe care am creat-o se comportă așa cum era de așteptat.

În pașii următori, vă voi arăta cum să-l declanșați și să-i transmiteți un argument șir utilizând o cerere HTTP.

Dacă ați construit API-urile REST de la zero înainte de a utiliza un instrument precum Express.js, fragment de mai sus ar trebui să aibă sens pentru tine. Mai întâi creați un server și apoi vă definiți toate rutele unul câte unul.

În această secțiune, vă voi arăta cum să faceți același lucru folosind AWS API Gateway.

Crearea gateway-ului API

1611306553 366 Going Serverless cum sa rulati prima functie AWS Lambda in

Accesați AWS Console și apăsați „API Gateway”.

1611306553 429 Going Serverless cum sa rulati prima functie AWS Lambda in

Și apoi apăsați „Începeți”.

1611306554 607 Going Serverless cum sa rulati prima functie AWS Lambda in

În Creați un nou tablou de bord API, selectați „API nou”.

1611306554 537 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru numele API, utilizați „palindromeAPI”. Pentru descriere, introduceți o descriere a noului dvs. API sau doar lăsați-o necompletată.

1611306554 936 Going Serverless cum sa rulati prima functie AWS Lambda in

API-ul nostru va fi unul simplu și va avea o singură metodă GET care va fi utilizată pentru a comunica cu funcția Lambda.

În meniul Acțiuni, selectați „Creați o metodă”. Va apărea un mic submeniu. Continuați și selectați OBȚINE, și faceți clic pe bifa din dreapta.

1611306555 430 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru tipul de integrare, selectați Funcția Lambda.

1611306555 436 Going Serverless cum sa rulati prima functie AWS Lambda in

Apoi apăsați „OK”.

1611306555 968 Going Serverless cum sa rulati prima functie AWS Lambda in

În ecranul GET – Executare metodă apăsați pe „Cerere de integrare”.

1611306555 546 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru tipul de integrare, asigurați-vă că este selectată funcția Lambda.

1611306556 910 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru solicitarea passthrough-ului corpului, selectați „Când nu există șabloane definite” și apoi pentru Content-Type introduceți „application / json”.

1611306556 293 Going Serverless cum sa rulati prima functie AWS Lambda in

În spațiul gol adăugați obiectul JSON prezentat mai jos. Acest obiect JSON definește parametrul „șir” care ne va permite să trecem prin valorile șirului la Funcția Lambda folosind o solicitare HTTP GET. Acest lucru este similar cu utilizarea req.params în Express.js.

În pașii următori, vom analiza cum să treceți valoarea șirului la funcția Lambda și cum să accesați valoarea trecută din interiorul funcției.

1611306556 439 Going Serverless cum sa rulati prima functie AWS Lambda in

API-ul este acum gata pentru a fi implementat. În meniul Acțiuni, faceți clic pe „Deploy API”.

1611306556 45 Going Serverless cum sa rulati prima functie AWS Lambda in

Pentru etapa de implementare selectați „[New Stage]”.

1611306556 541 Going Serverless cum sa rulati prima functie AWS Lambda in

Și pentru numele de scenă folosiți „prod” (care este prescurtarea pentru „producție”).

1611306557 353 Going Serverless cum sa rulati prima functie AWS Lambda in

API-ul este acum implementat, iar adresa URL de invocare va fi utilizată pentru a comunica prin cerere HTTP cu Lambda. Dacă vă amintiți, pe lângă un apel invers, Lambda ia doi parametri: eveniment și context.

Pentru a trimite o valoare șir către Lambda, luați adresa de invocare a funcției dvs. și o adăugați la ea ?string=someValue și apoi valoarea trecută poate fi accesată din interiorul funcției folosind event.string.

Modificați codul eliminând valoarea șirului codificat și înlocuindu-l cu event.string așa cum se arată mai jos.

1611306557 549 Going Serverless cum sa rulati prima functie AWS Lambda in

Acum, în browser, luați adresa de apelare a funcției dvs. și adăugați ?string=abcd pentru a vă testa funcția prin browser.

1611306557 268 Going Serverless cum sa rulati prima functie AWS Lambda in

După cum puteți vedea, Lambda răspunde că abcd nu este un palindrom. Acum faceți același lucru și pentru cursa de curse.

1611306557 446 Going Serverless cum sa rulati prima functie AWS Lambda in

Dacă preferați, puteți utiliza și Postman pentru a testa noua funcție isPalindrome Lambda. Postman este un instrument excelent pentru testarea punctelor finale API, puteți afla mai multe despre acesta aici.

Pentru a verifica dacă funcționează, iată un Palindrom:

1611306558 421 Going Serverless cum sa rulati prima functie AWS Lambda in

Iată un non-palindrom:

1611306558 39 Going Serverless cum sa rulati prima functie AWS Lambda in

Felicitări – tocmai ați creat și ați implementat propria funcție Lambda!

Mulțumesc pentru lectură!