Išsami AWS lambda analizė

Straipsnio vertimas buvo parengtas specialiai kurso studentams „Debesų paslaugos“. Norite vystytis šia kryptimi? Žiūrėkite meistriškumo klasę, kurią sukūrė Egor Zuev (TeamLead at InBit) „AWS EC2 paslauga“ ir prisijungti prie kitos kursų grupės: prasidės rugsėjo 26 d.

Išsami AWS lambda analizė

Vis daugiau žmonių pereina prie AWS Lambda, siekdami mastelio, našumo, taupymo ir galimybės apdoroti milijonus ar net trilijonus užklausų per mėnesį. Norėdami tai padaryti, jums nereikia valdyti infrastruktūros, kurioje veikia paslauga. O automatinis mastelio keitimas leidžia aptarnauti tūkstančius užklausų vienu metu per sekundę. Manau, kad AWS Lambda pagrįstai gali būti vadinama viena populiariausių AWS paslaugų.

„AWS Lambda“

AWS Lambda yra įvykiais pagrįsta skaičiavimo paslauga be serverio, leidžianti paleisti kodą nepateikiant ar nevaldant serverių ir išplėsti kitas AWS paslaugas naudojant tinkintą logiką. Lambda automatiškai reaguoja į įvairius įvykius (vadinamus trigeriais), pvz., HTTP užklausas per Amazon API Gateway, duomenų pakeitimus Amazon S3 segmentuose arba Amazon DynamoDB lentelėse; arba galite paleisti savo kodą naudodami API iškvietimus naudodami AWS SDK ir būsenos perėjimus AWS žingsnio funkcijomis.

Lambda paleidžia kodą labai prieinamoje skaičiavimo infrastruktūroje ir yra visiškai atsakinga už pagrindinės platformos administravimą, įskaitant serverio ir operacinės sistemos priežiūrą, išteklių aprūpinimą, automatinį mastelio keitimą, kodo stebėjimą ir registravimą. Tai reiškia, kad jums tereikia įkelti savo kodą ir sukonfigūruoti, kaip ir kada jis turėtų būti vykdomas. Savo ruožtu paslauga pasirūpins jos paleidimu ir užtikrins aukštą jūsų programos prieinamumą.

Kada pereiti prie lambda?

AWS Lambda yra patogi skaičiavimo platforma, tinkanti įvairiems naudojimo atvejams, jei paslauga palaiko jūsų kodo kalbą ir vykdymo laiką. Jei norite sutelkti dėmesį į savo kodą ir verslo logiką, o serverio priežiūrą, aprūpinimą ir mastelį už priimtiną kainą norite iš išorės, AWS Lambda tikrai yra tinkamas būdas.

Lambda idealiai tinka programavimo sąsajoms kurti, o naudojant kartu su API Gateway galite žymiai sumažinti išlaidas ir greičiau patekti į rinką. Yra įvairių būdų, kaip naudoti Lambda funkcijas ir be serverio architektūros organizavimo variantus – kiekvienas gali pasirinkti ką nors tinkamo pagal savo tikslą.

Lambda leidžia atlikti įvairias užduotis. Taigi „CloudWatch“ palaikymo dėka galite sukurti atidėtas užduotis ir automatizuoti atskirus procesus. Paslaugos naudojimo pobūdžiui ir intensyvumui nėra jokių apribojimų (atsižvelgiama į atminties suvartojimą ir laiką), ir niekas netrukdo sistemingai dirbti su visavertėmis „Lambda“ pagrindu sukurtomis mikropaslaugomis.

Čia galite kurti į paslaugas orientuotus veiksmus, kurie nevykdomi nuolat. Tipiškas pavyzdys yra vaizdo mastelio keitimas. Net ir paskirstytų sistemų atveju Lambda funkcijos išlieka aktualios.

Taigi, jei nenorite užsiimti kompiuterinių išteklių paskirstymu ir tvarkymu, išbandykite AWS Lambda; jei jums nereikia sunkių, daug išteklių reikalaujančių skaičiavimų, taip pat išbandykite AWS Lambda; jei jūsų kodas veikia periodiškai, tai tiesa, turėtumėte pabandyti AWS Lambda.

saugumas

Kol kas saugumui skundų nėra. Kita vertus, kadangi daugelis šio modelio vidinių procesų ir diegimo ypatybių yra paslėpti nuo AWS Lambda valdomos vykdymo aplinkos vartotojo, kai kurios visuotinai priimtos debesų saugos taisyklės tampa nereikšmingos.

Kaip ir dauguma AWS paslaugų, „Lambda“ teikiama bendrai saugos ir atitikties pagrindu tarp AWS ir kliento. Šis principas sumažina kliento veiklos naštą, nes AWS prisiima paslaugų komponentų priežiūros, administravimo ir stebėjimo užduotis – nuo ​​pagrindinės operacinės sistemos ir virtualizacijos lygmens iki fizinio infrastruktūros turto saugumo.

Kalbant konkrečiai apie AWS Lambda, AWS yra atsakinga už pagrindinės infrastruktūros, susijusių pagrindinių paslaugų, operacinės sistemos ir taikomųjų programų platformos valdymą. Tuo tarpu klientas yra atsakingas už savo kodo saugumą, konfidencialių duomenų saugojimą, prieigos prie jų, taip pat prie Lambda paslaugos ir išteklių kontrolę (Identity and Access Management, IAM), įskaitant naudojamų funkcijų ribose.

Toliau pateiktoje diagramoje parodytas bendros atsakomybės modelis, taikomas AWS Lambda. AWS atsakomybė yra oranžinė, o kliento atsakomybė yra mėlyna. Kaip matote, AWS prisiima didesnę atsakomybę už paslaugoje įdiegtas programas.

Išsami AWS lambda analizė

Pasidalintos atsakomybės modelis, taikomas AWS Lambda

Lambda veikimo laikas

Pagrindinis Lambda privalumas yra tas, kad atlikdama funkciją Jūsų vardu pati paslauga skiria reikiamus resursus. Galite neeikvoti laiko ir pastangų sistemos administravimui ir sutelkti dėmesį į verslo logiką ir kodavimą.

Lambda paslauga yra padalinta į dvi plokštumas. Pirmasis yra valdymo plokštuma. Anot Vikipedijos, valdymo plokštuma yra tinklo dalis, atsakinga už signalinio srauto transportavimą ir maršruto parinkimą. Tai yra pagrindinis komponentas, priimantis visuotinius sprendimus dėl darbo krūvių aprūpinimo, aptarnavimo ir paskirstymo. Be to, valdymo plokštuma veikia kaip sprendimo tiekėjo tinklo topologija, atsakinga už maršruto parinkimą ir srauto valdymą.

Antroji plokštuma yra duomenų plokštuma. Ji, kaip ir valdymo plokštuma, turi savo užduotis. Valdymo plokštumoje pateikiamos API funkcijoms valdyti (CreateFunction, UpdateFunctionCode) ir valdoma, kaip Lambda bendrauja su kitomis AWS paslaugomis. Duomenų plokštuma valdo Invoke API, kuri vykdo Lambda funkcijas. Kai funkcija iškviečiama, valdymo plokštuma paskiria arba parenka esamą vykdymo aplinką, kuri yra iš anksto paruošta tai funkcijai, ir tada paleidžia joje esantį kodą.

AWS Lambda palaiko įvairias programavimo kalbas, įskaitant Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 ir kitas, per atitinkamą vykdymo aplinką. AWS reguliariai juos atnaujina, platina saugos pataisas ir atlieka kitas priežiūros veiklas šiose aplinkose. Lambda leidžia naudoti ir kitas kalbas, jei patys įdiegiate atitinkamą vykdymo laiką. Tada turėsite rūpintis jo priežiūra, įskaitant saugos stebėjimą.

Kaip visa tai veikia ir kaip paslauga atliks jūsų funkcijas?

Kiekviena funkcija veikia vienoje ar keliose tam skirtose aplinkose, kurios egzistuoja tik tos funkcijos gyvavimo laikotarpiu ir tada sunaikinamos. Kiekviena aplinka vienu metu atlieka tik vieną skambutį, tačiau ji naudojama pakartotinai, jei yra keli nuoseklūs iškvietimai į tą pačią funkciją. Visos vykdymo aplinkos veikia virtualiose mašinose su aparatinės įrangos virtualizavimu – vadinamaisiais mikroVM. Kiekvienas „microVM“ yra priskirtas konkrečiai AWS paskyrai ir gali būti pakartotinai naudojamas aplinkose, kad atliktų skirtingas tos paskyros funkcijas. „MicroVM“ yra supakuoti į „Lambda Worker“ aparatinės įrangos platformos, kuri priklauso ir valdoma AWS, blokus. To paties vykdymo laiko negali naudoti skirtingos funkcijos, taip pat mikroVM nėra unikalūs skirtingoms AWS paskyroms.

Išsami AWS lambda analizė

AWS lambda izoliacijos modelis

Vykdymo aplinkų išskyrimas įgyvendinamas naudojant kelis mechanizmus. Aukščiausiame kiekvienos aplinkos lygyje yra atskiros šių komponentų kopijos:

  • Funkcijos kodas
  • Bet kokie funkcijai pasirinkti lambda sluoksniai
  • Funkcijų vykdymo aplinka
  • Minimali vartotojo erdvė, pagrįsta „Amazon Linux“.

Skirtingoms vykdymo aplinkoms atskirti naudojami šie mechanizmai:

  • cgroups – apriboja prieigą prie procesoriaus, atminties, saugyklos ir tinklo išteklių kiekvienai vykdymo aplinkai;
  • vardų erdvės – grupavimo proceso ID, vartotojo ID, tinklo sąsajos ir kiti Linux branduolio valdomi ištekliai. Kiekvienas vykdymo laikas veikia savo vardų erdvėje;
  • seccomp-bpf – apriboja sistemos skambučius, kurie gali būti naudojami vykdymo metu;
  • iptables ir maršrutizavimo lentelės – vykdymo aplinkų izoliavimas viena nuo kitos;
  • chroot – suteikia ribotą prieigą prie pagrindinės failų sistemos.

Kartu su AWS patentuotomis izoliavimo technologijomis šie mechanizmai užtikrina patikimą veikimo laiko atskyrimą. Tokiu būdu izoliuotos aplinkos negali pasiekti arba modifikuoti duomenų iš kitų aplinkų.

Nors vienoje „microVM“ gali veikti kelios tos pačios AWS paskyros vykdymo laikas, jokiomis aplinkybėmis „microVM“ negalima dalytis tarp skirtingų AWS paskyrų. „AWS Lambda“ naudoja tik du „microVM“ izoliavimo mechanizmus: EC2 egzempliorius ir „Firecracker“. Svečių izoliacija Lambda, pagrįsta EC2 atvejais, buvo maždaug nuo 2015 m. „Firecracker“ yra naujas atvirojo kodo hipervizorius, specialiai sukurtas AWS darbui be serverio ir pristatytas 2018 m. Fizinė aparatinė įranga, kurioje veikia „microVM“, yra bendrinama darbo krūviams įvairiose paskyrose.

Aplinkų ir proceso būsenų išsaugojimas

Nors Lambda vykdymo laikas yra unikalus skirtingoms funkcijoms, jie gali pakartotinai iškviesti tą pačią funkciją, o tai reiškia, kad vykdymo laikas gali išlikti kelias valandas, kol bus sunaikintas.

Kiekvienas Lambda vykdymo laikas taip pat turi įrašomą failų sistemą, pasiekiamą per /tmp katalogą. Jo turinio negalima pasiekti iš kitų vykdymo laiko. Kalbant apie proceso būsenos išlikimą, failai, įrašyti į /tmp, egzistuoja visą vykdymo aplinkos gyvavimo ciklą. Tai leidžia kaupti kelių skambučių rezultatus, o tai ypač naudinga atliekant brangias operacijas, pvz., įkeliant mašininio mokymosi modelius.

Skambučių duomenų perdavimas

Invoke API galima naudoti dviem režimais: įvykio režimu ir užklausos-atsakymo režimu. Įvykio režimu skambutis įtraukiamas į eilę vėlesniam vykdymui. Užklausos-atsakymo režimu funkcija iškviečiama akimirksniu su pateikta naudingąja apkrova, po kurios atsakymas grąžinamas. Abiem atvejais funkcija veikia Lambda aplinkoje, tačiau su skirtingais naudingosios apkrovos keliais.

Vykdant užklausų ir atsakymų skambučius naudingoji apkrova teka iš užklausų apdorojimo API (API skambintojo), pvz., AWS API šliuzo arba AWS SDK, į apkrovos balansavimo priemonę, o tada į „Lambda“ skambučių tarnybą („Invoke Service“). Pastarasis nustato tinkamą aplinką funkcijai vykdyti ir perduoda naudingąją apkrovą, kad užbaigtų skambutį. Apkrovos balansavimo priemonė gauna TLS apsaugotą srautą internetu. „Lambda“ paslaugos srautas po apkrovos balansavimo eina per vidinį VPC konkrečiame AWS regione.

Išsami AWS lambda analizė

AWS Lambda skambučių apdorojimo modelis: užklausos ir atsakymo režimas

Įvykių skambučius galima skambinti iš karto arba įtraukti į eilę. Kai kuriais atvejais eilė įgyvendinama naudojant Amazon SQS (Amazon Simple Queue Service), kuri per vidinį apklausos procesą perduoda skambučius Lambda skambučių vykdymo tarnybai. Perduotas srautas yra apsaugotas TLS ir nėra papildomo „Amazon SQS“ saugomų duomenų šifravimo.

Įvykių iškvietimai nepateikia atsakymų – „Lambda Worker“ tiesiog nepaiso jokios atsakymo informacijos. Įvykiais pagrįstus skambučius iš „Amazon S3“, „Amazon SNS“, „CloudWatch“ ir kitų šaltinių „Lambda“ apdoroja įvykių režimu. Skambučiai iš Amazon Kinesis ir DynamoDB srautų, SQS eilių, Application Load Balancer ir API Gateway skambučiai apdorojami pagal užklausą ir atsakymą.

Stebėjimas

Galite stebėti ir tikrinti Lambda funkcijas naudodami įvairius AWS mechanizmus ir paslaugas, įskaitant toliau nurodytas.

„Amazon CloudWatch“.
Renka įvairią statistiką, pvz., užklausų skaičių, užklausų trukmę ir nesėkmingų užklausų skaičių.

„Amazon CloudTrail“.
Leidžia registruoti, nuolat stebėti ir tvarkyti paskyros veiklos informaciją, susietą su jūsų AWS infrastruktūra. Turėsite visą veiksmų, atliktų naudojant AWS valdymo pultą, AWS SDK, komandinės eilutės įrankius ir kitas AWS paslaugas, istoriją.

AWS rentgeno spinduliai
Suteikia visišką visų užklausų apdorojimo etapų matomumą jūsų programoje, remiantis jos vidinių komponentų žemėlapiu. Leidžia analizuoti programas kūrimo metu ir gamybos aplinkoje.

AWS konfigūracija
Galėsite stebėti Lambda funkcijų konfigūracijos (įskaitant ištrynimą) ir vykdymo laiko, žymų, tvarkyklių pavadinimų, kodo dydžio, atminties paskirstymo, skirtojo laiko parametrus ir lygiagretumo nustatymus, taip pat Lambda IAM vykdymo vaidmens, potinklio ir saugos grupių susiejimo pakeitimus. .

išvada

AWS Lambda siūlo galingą įrankių rinkinį, skirtą saugioms ir keičiamo dydžio programoms kurti. Daugelis AWS Lambda saugos ir atitikties praktikos yra tokios pačios kaip ir kitose AWS paslaugose, nors yra ir išimčių. 2019 m. kovo mėn. „Lambda“ atitinka SOC 1, SOC 2, SOC 3, PCI DSS, Sveikatos draudimo perkeliamumo ir atskaitomybės įstatymo (HIPAA) atitiktį ir kitus reglamentus. Taigi, kai galvojate apie kitos programos diegimą, pagalvokite apie AWS Lambda paslaugą – ji gali būti tinkamiausia jūsų užduočiai.

Šaltinis: www.habr.com

Добавить комментарий