Înainte de funcția AWS Lambda, să înțelegem:
Ce este Serverless?
Serverless este un termen care se referă în general la aplicații fără server. Aplicațiile fără server sunt acelea care nu au nevoie de furnizarea de server și nu necesită gestionarea serverelor.
Ce este AWS Lambda?
AWS Lambda este o platformă de calcul bazată pe evenimente, fără server, furnizată de Amazon ca parte a Amazon Web Services. Prin urmare, nu trebuie să vă faceți griji cu privire la ce resurse AWS să lansați sau cum le veți gestiona. În schimb, trebuie să puneți codul pe Lambda și acesta rulează.
În AWS Lambda codul este executat pe baza răspunsului la evenimentele din serviciile AWS, cum ar fi adăugarea / ștergerea fișierelor în bucket-ul S3, cererea HTTP de la gateway-ul Amazon API etc. Cu toate acestea, Amazon Lambda poate fi utilizat doar pentru a executa sarcini de fundal.
Funcția AWS Lambda vă ajută să vă concentrați asupra produsului dvs. de bază și asupra logicii de afaceri în loc să gestionați controlul accesului la sistemul de operare (OS), corecția sistemului de operare, dimensionarea corectă, aprovizionarea, scalarea etc.
În acest tutorial AWS Lambda pentru începători, veți învăța:
- Cum funcționează AWS Lambda?
- Evenimente care declanșează AWS Lambda
- AWS Lambda Concepts
- AWS Lambda VS AWS EC2
- AWS Lambda VS AWS Elastic Beanstalk
- Utilizați cazuri de AWS Lambda
- Cele mai bune practici ale funcției Lambda
- Când nu utilizați AWS Lambda
- Avantajele utilizării AWS Lambda
- Limitări ale AWS Lambda
Cum funcționează AWS Lambda?
Următorul exemplu AWS Lambda cu diagramă bloc explică funcționarea AWS Lambda în câțiva pași simpli:
Pasul 1: Încărcați mai întâi codul AWS Lambda în orice limbă acceptată de AWS Lambda. Java, Python, Go și C # sunt câteva dintre limbile acceptate de funcția AWS Lambda.
Pasul 2: Acestea sunt câteva servicii AWS care vă permit să declanșați AWS Lambda.
Pasul 3: AWS Lambda vă ajută să încărcați codul și detaliile evenimentului pe care ar trebui să fie declanșat.
Pasul 4: Execută codul AWS Lambda când este declanșat de serviciile AWS:
Pasul 5: AWS se încarcă numai atunci când se execută codul lambda AWS, și nu altfel.
Acest lucru se va întâmpla în următoarele scenarii:
- Încărcați fișiere într-o bucket S3
- Când URL-ul HTTP get / post endpoint este lovit
- Pentru adăugarea / modificarea și ștergerea tabelelor Dynamo DB
- În procesul de colectare a fluxurilor de date
- Notificare push
- Găzduirea site-ului web
- Trimitere e-mail
Notă: ar trebui să vă amintiți că veți taxa pentru serviciile AWS numai atunci când se execută codul AWS Lambda, altfel nu trebuie să plătiți nimic.
Evenimente care declanșează AWS Lambda
Iată evenimentele care vor fi declanșate atunci când utilizați AWS Lambda.
- Inserați, actualizați și ștergeți tabelul Dynamo DB
- Pentru a include notificări push în SNS
- Pentru a căuta istoricul jurnalelor în CloudTrail
- Intrarea într-un obiect S3
- DynamoDB poate declanșa AWS Lambda ori de câte ori există date adăugate, modificate și șterse în tabel.
- Vă ajută să programați evenimentul pentru a îndeplini sarcina în mod regulat.
- Modificări ale obiectelor din cupele S3
- Notificări trimise de la Amazon SNS.
- AWS Lambda poate fi utilizat pentru procesarea jurnalelor CloudTrail
- API Gateway vă permite să declanșați AWS Lambda pe metode GET / POST.
AWS Lambda Concepts
Funcţie:
O funcție este un program sau un script care rulează în AWS Lambda. Lambda trece evenimentele de invocare în funcția dvs., care procesează un eveniment și îi returnează răspunsul.
Durate de rulare:
Runtime permite funcții în diferite limbi care rulează pe același mediu de execuție de bază. Acest lucru vă ajută să vă configurați funcția în timp de execuție. De asemenea, se potrivește cu limbajul de programare selectat.
Sursa evenimentului:
O sursă de eveniment este un serviciu AWS, cum ar fi Amazon SNS, sau un serviciu personalizat. Această funcție declanșatoare vă ajută să-i executați logica.
Straturi Lambda:
Straturile Lambda sunt un mecanism de distribuție important pentru biblioteci, runtime personalizate și alte dependențe importante de funcții. Această componentă AWS vă ajută, de asemenea, să vă gestionați codul funcției de dezvoltare separat de codul neschimbător și de resursele pe care le folosește.
Fluxuri de jurnal:
Fluxul de jurnal vă permite să adnotați codul funcției cu instrucțiuni de jurnalizare personalizate, care vă ajută să analizați fluxul de execuție și performanța funcțiilor AWS Lambda.
Cum se folosește AWS Lambda
Acum, vom învăța cum să folosim AWS Lambda cu exemplul AWS Lambda:
Pasul 1 ) Mergeți https://aws.amazon.com/lambda/ și începeți
Pasul 2 ) Creați un cont sau conectați-vă cu contul dvs. existent
Pasul 3 ) În următoarea pagină Lambda,
- Editați codul
- Faceți clic pe Executare
Pasul 4 ) Veți vedea ieșirea
AWS Lambda VS AWS EC2
Iată câteva diferențe majore între AWS Lambda și EC2.
Parametrii | AWS Lambda | AWS EC2 |
Definiție | AWS Lambda este o platformă ca serviciu (PaaS). Vă ajută să rulați și să executați codul backend. | AWS EC2 este o infrastructură ca serviciu (laaS). Oferă resurse de calcul virtualizate. |
Flexibilitate | Nu oferă nicio flexibilitate pentru a vă conecta la calcularea instanțelor. Vă permite să alegeți un sistem de operare personalizat sau un timp de rulare a limbii. | Oferă flexibilitatea de a selecta varietatea de instanțe, sisteme de operare personalizate, patch-uri de securitate și rețea etc. |
Procesul de instalare | Trebuie să vă selectați mediul în care doriți să rulați codul și să introduceți codul în AWS Lambda. | Pentru prima dată în EC2, trebuie să alegeți sistemul de operare și să instalați tot software-ul necesar și apoi să introduceți codul în EC2. |
Restricții de mediu | Este limitat la câteva limbi. | Fără restricții de mediu. |
AWS Lambda VS AWS Elastic Beanstalk
Iată câteva diferențe majore între AWS Lambda și Elastic Beanstalk.
Parametrii | AWS Elastic Beanstalk | AWS Lambda |
Sarcina principala | Implementați și gestionați aplicațiile pe AWS Cloud fără să vă faceți griji cu privire la infrastructura care rulează acele aplicații. | AWS Lambda este utilizat pentru rularea și executarea codului dvs. back-end. Nu îl puteți utiliza pentru a implementa o aplicație. |
Selectarea resurselor AWS | Vă oferă libertatea de a selecta resursele AWS; De exemplu, puteți alege instanța EC2 care este optimă în funcție de aplicația dvs. | Nu puteți selecta resursele AWS, cum ar fi un tip de instanță EC2, Lambda oferă resurse în funcție de volumul de lucru. |
Tipul sistemului | Este un sistem cu stare. | Este un sistem apatrid. |
Utilizați cazuri de AWS Lambda
AWS Lambda utilizat pentru o gamă largă de aplicații precum:
- Vă ajută pentru procesul ETL
- Vă permite să efectuați procesarea fișierelor în timp real și procesarea fluxului în timp real
- Utilizat pentru crearea de aplicații web
- Utilizați în produse Amazon precum Alexa Chatbots și Amazon Echo / Alexa
- Prelucrarea datelor (analize de streaming în timp real)
- Backup-uri automate ale sarcinilor de zi cu zi
- Capete spate scalabile (aplicații mobile, dispozitive loT)
- Vă ajută să executați logica backend pe partea de server
- Vă permite să filtrați și să transformați datele
Cele mai bune practici ale funcției Lambda
Iată câteva dintre cele mai bune practici ale funcțiilor AWS Lambda:
- Folosiți „expirarea” corectă.
- Utilizați funcțiile de stocare locală, care are o dimensiune de 500 MB în folderul / temp
- Minimizarea utilizării codului de pornire care nu este direct legat de procesarea evenimentului curent.
- Ar trebui să utilizați monitorizarea încorporată CloudWatch a funcțiilor dvs. Lambda pentru a vizualiza și optimiza latențele cererii.
Când nu utilizați AWS Lambda
Următoarele sunt situația în care Lambda nu este cu siguranță o opțiune ideală:
- Nu este adecvat să utilizați pachete software sau aplicații AWS Lambda care se bazează pe apelarea RPC-urilor Windows subiacente
- Dacă este utilizat pentru aplicații software personalizate cu acorduri de licențiere precum procesarea documentelor MS-Office, baze de date Oracle etc.
- AWS Lambda nu trebuie utilizat pentru procesele hardware personalizate, cum ar fi accelerarea GPU, afinitatea hardware.
Avantajele utilizării AWS Lambda
Iată care sunt avantajele / avantajele utilizării AWS lambda:
- AWS Lambda este un instrument extrem de flexibil de utilizat
- Vă ajută să acordați acces la resurse, inclusiv VPC-uri
- Creați direct cu editorul WYSIWYG în consolă.
- Îl puteți folosi ca plugin pentru Eclipse și Visual Studio.
- Deoarece este o arhitectură fără server, nu trebuie să vă faceți griji cu privire la gestionarea sau aprovizionarea serverelor.
- Nu trebuie să configurați nicio mașină virtuală.
- Ajută dezvoltatorii să ruleze și să execute răspunsul codului la evenimente fără a construi nicio infrastructură.
- Trebuie doar pentru timpul de calcul luat, numai când rulează codul dvs.
- Vă puteți monitoriza performanța codului în timp real prin CloudWatch.
- Vă permite să rulați codul fără provizionare sau să gestionați orice alt server
- Vă ajută să executați codul numai atunci când este necesar
- Puteți să-l scalați automat pentru a gestiona câteva solicitări pe zi și chiar să acceptați mai mult de mii de cereri pe secundă.
- AWS Lambda poate fi configurat cu ajutorul temporizatoarelor de evenimente externe pentru a efectua sarcini programate.
- Funcția Lambda în AWS ar trebui configurată cu evenimente externe și temporizatoare; poate fi folosit pentru programare.
- Funcțiile Lambda sunt fără stare, astfel încât să poată fi scalate rapid.
- AWS Lambda este rapid, așa că vă va executa codul în câteva milisecunde.
Limitări ale AWS Lambda
Iată dezavantajele / dezavantajele utilizării AWS Lambda:
- Instrumentul AWS Lambda nu este potrivit pentru proiecte mici.
- AWS Lambda se bazează în totalitate pe AWS pentru infrastructură, deci nu puteți instala niciun software suplimentar dacă codul dvs. o cere.
- Execuția simultană este limitată la 100
- AWS Lambda depindea complet de AWS pentru infrastructură; nu puteți instala nimic suplimentar dacă codul dvs. o solicită.
- Volumul său de memorie poate varia între 128 și 1536 MB.
- Solicitarea evenimentului nu trebuie să depășească 128 KB.
- Funcțiile Lambda vă ajută să scrieți jurnalele lor numai în CloudWatch. Acesta este singurul instrument care vă permite să monitorizați sau să depanați funcțiile.
- Timpul de executare a codului este de doar 5 minute.
rezumat
- Serverless este un termen care se referă în general la aplicații fără server.
- AWS Lambda este un astfel de serviciu de calcul fără server. Prin urmare, nu trebuie să vă faceți griji cu privire la ce resurse AWS să lansați sau cum le vor gestiona.
- O funcție este un program sau un script care rulează în AWS fără server Lambda.
- Runtime permite funcții în diferite limbi care rulează pe același mediu de execuție de bază.
- O sursă de eveniment este un serviciu AWS, cum ar fi Amazon SNS, sau un serviciu personalizat.
- Straturile Lambda sunt un mecanism de distribuție important pentru biblioteci, runtime personalizate și alte dependențe importante de funcții.
- Fluxul de jurnal vă permite să adnotați codul funcției cu instrucțiuni de jurnalizare personalizate, care vă ajută să analizați fluxul de execuție și performanța funcțiilor dvs. Lambda.
- AWS Lambda este o platformă ca serviciu (PaaS). Vă ajută să rulați și să executați codul backend.
- AWS EC2 este o infrastructură ca serviciu (laaS). Oferă resurse de calcul virtualizate.
- Implementați și gestionați aplicațiile pe AWS Cloud fără să vă faceți griji cu privire la infrastructura care rulează acele aplicații.
- AWS Lambda este utilizat pentru rularea și executarea codului dvs. back-end. Nu îl puteți utiliza pentru a implementa o aplicație.
- AWS Lambda vă ajută pentru procesul ETL.
- Cea mai bună practică a funcției Lambda în AWS este de a utiliza „expirarea” corectă.
- Nu este adecvat să utilizați pachete software sau aplicații AWS Lambda care se bazează pe apelarea RPC-urilor Windows subiacente
- AWS Lambda este un instrument extrem de flexibil.
- Instrumentul AWS Lambda nu este potrivit pentru proiecte mici.
- Un eveniment obișnuit care va fi declanșat atunci când utilizați AWS Lambda este Inserarea, actualizarea și ștergerea datelor din tabelul Dynamo DB.