Podroben pregled AWS Lambda

Prevod članka je pripravljen posebej za študente tečaja «Oblačne storitve»Zanimivo je razvijati se v tem področju? Oglejte si mojstrski tečaj Egorja Zueva (TeamLead v podjetju InBit) «AWS EC2 storitev» in se pridružite najbližji skupini tečaja: začetek 26. septembra.

Podroben pregled AWS Lambda

Vedno več ljudi prehaja na AWS Lambda zaradi njene skalabilnosti, zmogljivosti, prihrankov in možnosti obravnave milijonov in celo trilijonov zahtevkov na mesec. Za to ni potrebno upravljati infrastrukture, na kateri teče storitev. Avtomatsko skaliranje omogoča obravnavo tisočih hkratnih zahtevkov na sekundo. Mislim, da lahko AWS Lambda upravičeno imenujemo eno najbolj iskanih storitev AWS.

AWS Lambda

AWS Lambda je storitev brezstremnega računalništva, osredotočena na dogodke, ki omogoča zagon kode brez dodeljevanja in upravljanja strežnikov ter dopolnjuje druge storitve AWS na podlagi uporabniške logike. Lambda samodejno reagira na različne dogodke (t.i. sprožilce), na primer na HTTP zahteve preko Amazon API Gateway, spremembo podatkov v Amazon S3 košaricah ali Amazon DynamoDB tabelah; ali pa lahko zaženete svojo kodo preko API klicev, z uporabo AWS SDK in prehodov med stanji v AWS Step Functions.

Lambda izvaja kodo na visoko dostopni računalniški infrastrukturi in popolnoma prevzema odgovornost za upravljanje spodnje platforme, vključno z vzdrževanjem strežnikov in operacijskega sistema, dodeljevanjem virov, samodejnim skaliranjem, spremljanjem kode in vodenjem zapisov. To pomeni, da morate le naložiti svojo kodo in nastaviti, kako in kdaj naj se izvaja. Storitev bo poskrbela za njeno zagon in zagotovila visoko dostopnost vaše aplikacije.

Kdaj preiti na Lambda?

AWS Lambda je priročna računalniška platforma, primerna za številne scenarije uporabe, seveda, če je jezik in okolje izvajanja vaše kode podprt s storitvijo. Če se želite osredotočiti na kodo in poslovno logiko, ter prepustiti upravljanje strežnikov, dodeljevanje virov in skaliranje zunanjemu ponudniku po razumni ceni, se vsekakor splača preiti na AWS Lambda.

Lambda je idealna za razvoj programskih sučelja, a uz korištenje servisa zajedno s API Gateway, možete znatno smanjiti troškove i brže izaći na tržište. Postoje različiti načini korištenja Lambda funkcija i opcije organizacije bezposlužne arhitekture — svatko može odabrati nešto prikladno uzimajući u obzir postavljeni cilj.

Lambda omogućava izvršavanje širokog spektra zadataka. Tako, zahvaljujući podršci CloudWatch, možete kreirati odgođene zadatke i automatizirati pojedine procese. Nema ograničenja po pitanju vrste i intenziteta korištenja servisa (uzimaju se u obzir potrošnja memorije i vrijeme), a ništa vas ne sprječava da sustavno radite na punoj mikroservisnoj aplikaciji temeljenoj na Lambdi.

Ovdje možete stvarati uslužne aktivnosti koje se ne izvode stalno. Tipičan primjer je skaliranje slika. Čak i u slučaju distribuiranih sustava, Lambda funkcije ne gube svoju primjenjivost.

Dakle, ako ne želite raditi na dodjeli i administraciji računalnih resursa — isprobajte AWS Lambda; ako vam nisu potrebna teška, resursno zahtjevna računanja — također isprobajte AWS Lambda; ako vaš kod izvršava povremeno — točno, trebate isprobati AWS Lambda.

Sigurnost

Za sada nema pritužbi na sigurnost. S druge strane, budući da su mnogi unutarnji procesi i osobitosti implementacije ovog modela skriveni od korisničkog upravljanog okruženja AWS Lambde, neka opća pravila oblačne sigurnosti gube svoju važnost.

Kao i većina AWS servisa, Lambda se pruža prema principu zajedničke odgovornosti AWS-a i klijenta u pogledu sigurnosti i usklađenosti s propisima. Ova načela smanjuju operativnu opterećenost klijenta, budući da AWS preuzima zadatke održavanja, administracije i kontrole komponenti servisa — od operativnog sustava hosta i razine virtualizacije do fizičke sigurnosti objekata infrastrukture.

Če govorimo o AWS Lambda, AWS upravlja z osnovno infrastrukturo, povezanimi osnovnimi storitvami, operacijskim sistemom in platformo za aplikacije. Medtem ko je stranka odgovorna za varnost svojega kode, shranjevanje občutljivih podatkov, nadzor dostopa do njih ter do storitve in virov Lambda (Identity and Access Management, IAM), vključno z uporabljenimi funkcijami.

Na spodnjem diagramu je prikazan model skupne odgovornosti, ki se uporablja za AWS Lambda. Oblast AWS je označena z oranžno barvo, odgovornost stranke pa z modro. Kot vidite, AWS prevzema več odgovornosti za aplikacije, nameščene na storitvi.

Podroben pregled AWS Lambda

Model skupne odgovornosti, ki se uporablja za AWS Lambda

Izvršna okolja Lambda

Glavna prednost Lambda je v tem, da storitev, ko izvaja funkcijo v vašem imenu, samodejno dodeli potrebne vire. Ne rabite časa in energije posvetiti upravljanju sistemov, ampak se lahko osredotočite na poslovno logiko in pisanje kode.

Storitve Lambda so razdeljene na dva nivoja. Prvi je nivo upravljanja. Po Wikipediji je nivo upravljanja (control plane) del omrežja, ki je odgovoren za transport signalnega prometa in usklajevanje. Je glavni komponent, ki sprejema globalne odločitve o dodelitvi, vzdrževanju in porazdelitvi delovnih obremenitev. Poleg tega nivo upravljanja deluje kot omrežna topologija ponudnika rešitve, odgovoren za usklajevanje prometa in njegovo upravljanje.

Drugi nivo je nivo podatkov. Tudi on ima svoje naloge, tako kot nivo upravljanja. Nivo upravljanja nudi API za upravljanje funkcijami (CreateFunction, UpdateFunctionCode) in nadzira interakcijo Lambda z drugimi storitvami AWS. Nivo podatkov upravlja klice API (Invoke API), ki zažene funkcije Lambda. Po klicu funkcije nivo upravljanja dodeli ali izbere obstoječe, vnaprej pripravljeno okolje za to funkcijo in nato izvede kodo v njem.

AWS Lambda podpira mnoge programe jezike, vključno z Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 in drugimi, preko ustreznih okolij za izvajanje. AWS jih redno posodablja, izvaja varnostne popravke in opravlja druge vzdrževalne operacije teh okolij. Lambda omogoča uporabo tudi drugih jezikov, pod pogojem, da sami implementirate ustrezno okolje za izvajanje. V tem primeru pa boste odgovorni za njegovo vzdrževanje, vključno s spremljanjem varnosti.

Kako vse to deluje in kako bo storitev izvajala vaše funkcije?

Vsaka funkcija deluje v enem ali več dodeljenih okoljih, ki obstajajo le med življenjsko dobo te funkcije in se nato uničijo. V vsakem okolju se hkrati izvrši le en klic, vendar se ponovno uporabi, če pride do več zaporednih klicev iste funkcije. Vsa okolja za izvajanje delujejo na virtualnih strojih s strojno virtualizacijo - na t.i. microVM. Vsaka microVM je dodeljena določenemu AWS računu in se večkrat uporablja z okolji za izvajanje različnih funkcij v tem računu. MicroVM so pakirane v strukturne bloke strojne platforme Lambda Worker, ki jo lasti in upravlja AWS. Ista okolja za izvajanje se ne morejo uporabljati z različnimi funkcijami, prav tako so microVM edinstvene za različne AWS račune.

Podroben pregled AWS Lambda

Model izolacije v AWS Lambda

Izolacija okolij za izvajanje je uresničena z več mehanizmi. Na najvišji ravni ima vsako okolje ločene kopije naslednjih komponent:

  • Koda funkcije
  • Morebitni sloji Lambda, izbrani za funkcijo
  • Okolje za izvajanje funkcije
  • Minimalni uporabniški prostor na osnovi Amazon Linux

Za izolacijo različnih okolij za izvajanje se uporabljajo naslednji mehanizmi:

  • cgroups - omejevanje dostopa do virov CPU, pomnilnika, propustnosti shranjevanja in omrežja za vsako okolje za izvajanje;
  • namespaces - združevanje ID procesov, ID uporabnikov, omrežnih vmesnikov in drugih virov, ki jih upravlja jedro Linux. Vsako okolje za izvajanje deluje v svojem imenskem prostoru;
  • seccomp-bpf - omejevanje sistemskih klicev, ki jih lahko uporabljamo v okolju za izvajanje;
  • iptables in routing tables - izolacija okolij za izvajanje med seboj;
  • chroot — zagotavljanje omejenega dostopa do podložnega datotečnega sistema.

V kombinaciji z lastniškimi tehnologijami izolacije AWS našteti mehanizmi zagotavljajo zanesljivo ločevanje izvajalnih okolij. Opravljena na ta način okolja ne morejo dostopati do podatkov drugih okolij in jih spreminjati.

Čeprav lahko več izvajalnih okolij enega AWS računa deluje na eni microVM, microVM pod nobenimi okoliščinami ne morejo biti skupno uporabljene med različnimi AWS računi. Za izolacijo microVM v AWS Lambda se uporabljata samo dva mehanizma: EC2 instance in Firecracker. Izolacija gostov (guest isolation) v Lambda, ki temelji na EC2 instancah, se uporablja od leta 2015. Firecracker je nov hipervizor odprtega izvorna koda, ki ga je AWS posebej zasnoval za brezstrežna delovna obremenitev in predstavljen leta 2018. Fizična oprema, na kateri delujejo microVM, je skupno uporabljena za delovne obremenitve različnih računov.

Shranjevanje okolij in stanj procesov

Čeprav so izvajalna okolja Lambda edinstvena za različne funkcije, je možno ponovno klicati isto funkcijo, kar pomeni, da lahko izvajalno okolje obstaja več ur, preden je uničeno.

Vsako izvajalno okolje Lambda ima tudi datotečni sistem z dovoljenjem za zapis, dostopen preko imenika /tmp. Njegovemu vsebinskemu delu ni mogoče dostopati iz drugih izvajalnih okolij. Kar zadeva shranjevanje stanj procesov, datoteke zapisane v /tmp obstajajo skozi celoten življenjski cikel izvajalnega okolja. To omogoča akumulacijo rezultatov več klicev, kar je še posebej koristno za tako dragocene operacije, kot je nalaganje modelov strojnega učenja.

Prenos podatkov klicev

Vmesnik Invoke API lahko uporabimo v dveh načinih: v načinu dogodkov in v načinu 'zahteva - odgovor'. V načinu dogodkov se klic doda v vrsto za poznejšo izvedbo. V načinu 'zahteva - odgovor' se funkcija takoj pokliče z navedeno koristno obremenitvijo, nato pa se vrne odgovor. V obeh primerih se funkcija izvaja v okolju Lambda, vendar z različnimi potmi koristne obremenitve.

Med vrstami klicev tipa "zahteva — odgovor" podatkovna obremenitev pride iz API za obdelavo klicev (API Caller), kot je AWS API Gateway ali AWS SDK, v uravnavalnik obremenitve, nato v storitev izvajanja klicev Lambda (Invoke Service). Ta zadnja določi ustrezno okolje za izvajanje funkcije in prenese tja podatkovno obremenitev, da zaključi klic. Uravnavalnik obremenitve prejme promet s TLS zaščito preko interneta. Promet znotraj storitve Lambda — po uravnavalniku obremenitve — poteka preko notranjega VPC v določenem regiji AWS.

Podroben pregled AWS Lambda

Model obdelave klicev AWS Lambda: način "zahteva — odgovor"

Dogodkovni klici se lahko izvajajo takoj ali se dodajajo v vrsto. V nekaterih primerih se vrsta implementira z uporabo storitve Amazon SQS (Amazon Simple Queue Service), ki prenaša klice v storitev izvajanja klicev Lambda prek notranjega procesa anketiranja (poller). Preneseni promet je zaščiten s TLS, pri čemer ni predvidene dodatne šifriranja podatkov, shranjenih v Amazon SQS.

Dogodkovni klici ne vračajo odgovorov — vse povratne informacije Lambda Worker preprosto ignorira. Klici na podlagi dogodkov iz Amazon S3, Amazon SNS, CloudWatch in drugih virov se obdelujejo s storitvijo Lambda v načinu dogodkov. Klici iz tokov Amazon Kinesis in DynamoDB, klici iz vrst SQS, uravnavalnika obremenitve aplikacij in API Gateway se obdelujejo v načinu "zahteva — odgovor".

Nadzor

Funkcije Lambda lahko spremljate in nadzirate s pomočjo različnih mehanizmov in storitev AWS, vključno z naslednjimi.

Amazon CloudWatch
Zbira različne statistične podatke, kot so število zahtev, trajanje izvajanja zahtev in število zahtev, ki so se končale z napako.

Amazon CloudTrail
Omogoča beleženje, stalno spremljanje in shranjevanje informacij o dejavnostih v računu, povezanih z vašo infrastrukturo AWS. Imate popolno kronologijo dejanj, izvedenih preko konzole AWS Management Console, AWS SDK, orodij za ukazno vrstico in drugih storitev AWS.

AWS X-Ray
Nudi popolno vidnost vseh faz obdelave zahtevkov v vaši aplikaciji na osnovi zemljevida njenih notranjih komponent. Omogoča analizo aplikacij med razvojem in v proizvodnem okolju.

AWS Config
Lahko boste spremljali spremembe v konfiguraciji funkcij Lambda (vključno z njihovim brisanjem) in okolju za izvajanje, oznakah, imen obdelovalcev, velikosti kode, dodelitvi pomnilnika, nastavitvah časovnega omejevanja in parametrih vzporednosti, prav tako pa tudi vlogo IAM za izvajanje Lambda, podomrežje in vezave varnostnih skupin.

Zaključek

AWS Lambda ponuja zmogljiv nabor orodij za ustvarjanje varnih in razširljivih aplikacij. Mnogi načini zagotavljanja varnosti in skladnosti predpisom v AWS Lambda niso nič drugačni od tistih, ki se uporabljajo v drugih storitvah AWS, čeprav obstajajo izjeme. Od marca 2019 je Lambda skladna z zahtevami SOC 1, SOC 2, SOC 3, PCI DSS, ameriškim zakonom o varnosti in odgovornosti zdravstvenega zavarovanja (HIPAA) in drugimi predpisi. Zato, ko razmišljate o uvajanju nove aplikacije, razmislite o storitvi AWS Lambda — morda je ravno pravšnja za vašo nalogo.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster