Dadansoddiad manwl o AWS Lambda

Paratowyd y cyfieithiad o'r erthygl yn benodol ar gyfer myfyrwyr y cwrs "Gwasanaethau cwmwl". Diddordeb mewn datblygu i'r cyfeiriad hwn? Gwyliwch y dosbarth meistr gan Egor Zuev (Arweinydd Tîm yn InBit) "Gwasanaeth AWS EC2" ac ymunwch â'r grŵp cwrs nesaf: yn dechrau ar 26 Medi.

Dadansoddiad manwl o AWS Lambda

Mae mwy o bobl yn mudo i AWS Lambda ar gyfer scalability, perfformiad, arbedion, a'r gallu i drin miliynau neu hyd yn oed triliynau o geisiadau y mis. I wneud hyn, nid oes angen i chi reoli'r seilwaith y mae'r gwasanaeth yn rhedeg arno. Ac mae graddio awtomatig yn caniatáu ichi wasanaethu miloedd o geisiadau cydamserol yr eiliad. Rwy'n credu y gellir yn haeddiannol alw AWS Lambda yn un o'r gwasanaethau AWS mwyaf poblogaidd.

AWS Lambda

Mae AWS Lambda yn wasanaeth cyfrifiadurol di-weinydd a yrrir gan ddigwyddiadau sy'n eich galluogi i redeg cod heb ddarparu na rheoli gweinyddwyr ac ymestyn gwasanaethau AWS eraill gan ddefnyddio rhesymeg arferiad. Mae Lambda yn ymateb yn awtomatig i wahanol ddigwyddiadau (a elwir yn sbardunau), megis ceisiadau HTTP trwy Amazon API Gateway, newidiadau i ddata mewn bwcedi Amazon S3 neu dablau Amazon DynamoDB; neu gallwch redeg eich cod trwy alwadau API gan ddefnyddio'r SDK AWS a nodi trawsnewidiadau yn Swyddogaethau Cam AWS.

Mae Lambda yn rhedeg cod ar seilwaith cyfrifiadurol sydd ar gael yn fawr ac mae'n gwbl gyfrifol am weinyddu'r llwyfan sylfaenol, gan gynnwys cynnal a chadw gweinyddwyr a systemau gweithredu, darparu adnoddau, graddio'n awtomatig, monitro cod, a logio. Hynny yw, does ond angen i chi uwchlwytho'ch cod a ffurfweddu sut a phryd y dylid ei weithredu. Yn ei dro, bydd y gwasanaeth yn gofalu am ei lansiad ac yn sicrhau argaeledd uchel eich cais.

Pryd i newid i Lambda?

Mae AWS Lambda yn blatfform cyfrifiadurol cyfleus sy'n addas ar gyfer amrywiaeth o achosion defnydd, cyhyd â bod iaith ac amser rhedeg eich cod yn cael eu cefnogi gan y gwasanaeth. Os ydych chi am ganolbwyntio ar eich cod a'ch rhesymeg busnes wrth allanoli gwaith cynnal a chadw gweinyddwyr, darparu, a graddio am gost resymol, AWS Lambda yn bendant yw'r ffordd i fynd.

Mae Lambda yn ddelfrydol ar gyfer creu rhyngwynebau rhaglennu, a phan gaiff ei ddefnyddio ar y cyd ag API Gateway, gallwch leihau costau'n sylweddol a chyrraedd y farchnad yn gyflymach. Mae yna wahanol ffyrdd o ddefnyddio swyddogaethau Lambda ac opsiynau ar gyfer trefnu pensaernïaeth heb weinydd - gall pawb ddewis rhywbeth addas yn seiliedig ar eu nod.

Mae Lambda yn caniatáu ichi gyflawni ystod eang o dasgau. Felly, diolch i gefnogaeth CloudWatch, gallwch greu tasgau gohiriedig ac awtomeiddio prosesau unigol. Nid oes unrhyw gyfyngiadau ar natur a dwyster defnydd y gwasanaeth (mae defnydd cof ac amser yn cael eu hystyried), ac nid oes dim yn eich atal rhag gweithio'n systematig ar ficrowasanaeth llawn yn seiliedig ar Lambda.

Yma gallwch greu gweithredoedd gwasanaeth-ganolog nad ydynt yn rhedeg yn barhaus. Enghraifft nodweddiadol yw graddio delweddau. Hyd yn oed yn achos systemau gwasgaredig, mae swyddogaethau Lambda yn parhau i fod yn berthnasol.

Felly, os nad ydych am ymdrin â dyrannu a rheoli adnoddau cyfrifiadurol, rhowch gynnig ar AWS Lambda; os nad oes angen cyfrifiadau trwm sy'n defnyddio llawer o adnoddau arnoch, rhowch gynnig ar AWS Lambda hefyd; os yw'ch cod yn rhedeg o bryd i'w gilydd, mae hynny'n iawn, dylech roi cynnig ar AWS Lambda.

diogelwch

Hyd yn hyn nid oes unrhyw gwynion am ddiogelwch. Ar y llaw arall, gan fod llawer o brosesau mewnol a nodweddion gweithredu'r model hwn wedi'u cuddio rhag defnyddiwr amgylchedd rhedeg a reolir gan AWS Lambda, mae rhai rheolau diogelwch cwmwl a dderbynnir yn gyffredinol yn dod yn amherthnasol.

Fel y rhan fwyaf o wasanaethau AWS, darperir Lambda ar sail diogelwch a chydymffurfiaeth a rennir rhwng AWS a'r cwsmer. Mae'r egwyddor hon yn lleihau'r baich gweithredol ar y cleient, gan fod AWS yn ymgymryd â thasgau cynnal, gweinyddu a monitro cydrannau gwasanaeth - o'r system weithredu gwesteiwr a'r haen rhithwiroli i ddiogelwch ffisegol asedau seilwaith.

A siarad yn benodol am AWS Lambda, AWS sy'n gyfrifol am reoli'r seilwaith sylfaenol, gwasanaethau sylfaenol cysylltiedig, system weithredu, a llwyfan cymhwysiad. Er bod y cleient yn gyfrifol am ddiogelwch ei god, storio data cyfrinachol, rheoli mynediad iddo, yn ogystal â gwasanaeth ac adnoddau Lambda (Rheoli Hunaniaeth a Mynediad, IAM), gan gynnwys o fewn terfynau'r swyddogaethau a ddefnyddir.

Mae’r diagram isod yn dangos y model rhannu cyfrifoldeb fel y mae’n berthnasol i AWS Lambda. Mae Cyfrifoldeb AWS yn oren ac mae Cyfrifoldeb Cwsmer yn las. Fel y gallwch weld, mae AWS yn cymryd mwy o gyfrifoldeb am y ceisiadau a ddefnyddir ar y gwasanaeth.

Dadansoddiad manwl o AWS Lambda

Model Rhannu Cyfrifoldeb Yn berthnasol i AWS Lambda

Amser rhedeg Lambda

Prif fantais Lambda yw bod y gwasanaeth ei hun yn dyrannu'r adnoddau angenrheidiol trwy gyflawni swyddogaeth ar eich rhan. Gallwch osgoi gwastraffu amser ac ymdrech ar weinyddu system a chanolbwyntio ar resymeg busnes a chodio.

Mae gwasanaeth Lambda wedi'i rannu'n ddwy awyren. Y cyntaf yw'r awyren reoli. Yn ôl Wikipedia, yr awyren reoli yw'r rhan o'r rhwydwaith sy'n gyfrifol am gludo traffig signalau a llwybrau. Dyma'r brif elfen sy'n gwneud penderfyniadau byd-eang ynghylch darparu, gwasanaethu a dosbarthu llwythi gwaith. Yn ogystal, mae'r awyren reoli yn gweithredu fel topoleg rhwydwaith y darparwr datrysiadau, sy'n gyfrifol am lwybro a rheoli traffig.

Yr ail awyren yw'r awyren ddata. Mae ganddo, fel yr awyren reoli, ei thasgau ei hun. Mae'r awyren reoli yn darparu APIs ar gyfer rheoli swyddogaethau (CreateFunction, UpdateFunctionCode) ac yn rheoli sut mae Lambda yn cyfathrebu â gwasanaethau AWS eraill. Mae'r awyren ddata yn rheoli'r Invoke API, sy'n rhedeg swyddogaethau Lambda. Ar ôl i swyddogaeth gael ei galw, mae'r awyren reoli yn dyrannu neu'n dewis amgylchedd amser rhedeg presennol sydd wedi'i baratoi ymlaen llaw ar gyfer y swyddogaeth honno, ac yna'n gweithredu'r cod ynddo.

Mae AWS Lambda yn cefnogi amrywiaeth o ieithoedd rhaglennu, gan gynnwys Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, ac eraill, trwy eu hamgylcheddau amser rhedeg priodol. Mae AWS yn eu diweddaru'n rheolaidd, yn dosbarthu clytiau diogelwch, ac yn perfformio gweithgareddau cynnal a chadw eraill ar yr amgylcheddau hyn. Mae Lambda yn caniatáu ichi ddefnyddio ieithoedd eraill hefyd, ar yr amod eich bod chi'n gweithredu'r amser rhedeg priodol eich hun. Ac yna bydd yn rhaid i chi ofalu am ei gynnal a chadw, gan gynnwys monitro ei ddiogelwch.

Sut mae'r cyfan yn gweithio a sut bydd y gwasanaeth yn cyflawni eich swyddogaethau?

Mae pob swyddogaeth yn rhedeg mewn un neu fwy o amgylcheddau pwrpasol, sy'n bodoli dim ond am oes y swyddogaeth honno ac yna'n cael eu dinistrio. Dim ond un alwad ar y tro y mae pob amgylchedd yn ei gwneud, ond caiff ei ailddefnyddio os oes galwadau cyfresol lluosog i'r un swyddogaeth. Mae pob amgylchedd amser rhedeg yn rhedeg ar beiriannau rhithwir gyda rhithwiroli caledwedd - microVMs fel y'u gelwir. Mae pob microVM yn cael ei neilltuo i gyfrif AWS penodol a gall amgylcheddau eu hailddefnyddio i gyflawni gwahanol swyddogaethau o fewn y cyfrif hwnnw. Mae MicroVMs yn cael eu pecynnu i mewn i flociau adeiladu platfform caledwedd Lambda Worker, sy'n eiddo i AWS ac yn cael ei weithredu ganddo. Ni all gwahanol swyddogaethau ddefnyddio'r un amser rhedeg, ac nid yw microVMs yn unigryw i wahanol gyfrifon AWS ychwaith.

Dadansoddiad manwl o AWS Lambda

Model Ynysu Lambda AWS

Mae ynysu amgylcheddau amser rhedeg yn cael ei weithredu gan ddefnyddio sawl mecanwaith. Ar lefel uchaf pob amgylchedd mae copïau ar wahân o'r cydrannau canlynol:

  • Cod swyddogaeth
  • Unrhyw haenau Lambda a ddewiswyd ar gyfer y swyddogaeth
  • Amgylchedd gweithredu swyddogaeth
  • Lle i ddefnyddwyr lleiaf yn seiliedig ar Amazon Linux

Defnyddir y mecanweithiau canlynol i ynysu gwahanol amgylcheddau gweithredu:

  • cgroups - cyfyngu ar fynediad i adnoddau CPU, cof, storio a rhwydwaith ar gyfer pob amgylchedd amser rhedeg;
  • gofodau enwau - grwpio IDau proses, IDau defnyddwyr, rhyngwynebau rhwydwaith ac adnoddau eraill a reolir gan y cnewyllyn Linux. Mae pob amser rhedeg yn rhedeg yn ei ofod enw ei hun;
  • seccomp-bpf - yn cyfyngu ar y galwadau system y gellir eu defnyddio yn yr amser rhedeg;
  • iptables a thablau llwybro - ynysu amgylcheddau gweithredu oddi wrth ei gilydd;
  • chroot - yn darparu mynediad cyfyngedig i'r system ffeiliau sylfaenol.

Ar y cyd â thechnolegau ynysu perchnogol AWS, mae'r mecanweithiau hyn yn sicrhau gwahaniad amser rhedeg dibynadwy. Ni all amgylcheddau sydd wedi'u hynysu yn y modd hwn gyrchu nac addasu data o amgylcheddau eraill.

Er y gall amseroedd rhedeg lluosog o'r un cyfrif AWS redeg ar un microVM, ni ellir rhannu microVMs rhwng gwahanol gyfrifon AWS o dan unrhyw amgylchiadau. Dim ond dau fecanwaith y mae AWS Lambda yn eu defnyddio i ynysu microVMs: achosion EC2 a Firecracker. Mae ynysu gwesteion yn Lambda yn seiliedig ar achosion EC2 wedi bod o gwmpas ers 2015. Mae Firecracker yn hypervisor ffynhonnell agored newydd a ddyluniwyd yn benodol gan AWS ar gyfer llwythi gwaith heb weinydd ac a gyflwynwyd yn 2018. Rhennir y caledwedd ffisegol sy'n rhedeg microVMs rhwng llwythi gwaith ar draws gwahanol gyfrifon.

Arbed amgylcheddau a chyflyrau prosesau

Er bod amseroedd rhedeg Lambda yn unigryw i wahanol swyddogaethau, gallant alw'r un swyddogaeth dro ar ôl tro, sy'n golygu y gall yr amser rhedeg oroesi am sawl awr cyn cael ei ddinistrio.

Mae gan bob amser rhedeg Lambda hefyd system ffeiliau y gellir ei hysgrifennu trwy'r cyfeiriadur /tmp. Ni ellir cyrchu ei gynnwys o amseroedd rhedeg eraill. O ran dyfalbarhad cyflwr proses, mae ffeiliau a ysgrifennwyd at /tmp yn bodoli ar gyfer cylch bywyd cyfan yr amgylchedd amser rhedeg. Mae hyn yn caniatáu i ganlyniadau galwadau lluosog gael eu cronni, sy'n arbennig o ddefnyddiol ar gyfer gweithrediadau drud fel llwytho modelau dysgu peiriannau.

Trosglwyddo data galwadau

Gellir defnyddio'r API Invoke mewn dau fodd: modd digwyddiad a modd ymateb cais. Yn y modd digwyddiad, mae'r alwad yn cael ei hychwanegu at giw i'w gweithredu'n ddiweddarach. Yn y modd cais-ymateb, gelwir y swyddogaeth yn syth gyda'r llwyth tâl a ddarperir, ac ar ôl hynny dychwelir yr ymateb. Yn y ddau achos, mae'r swyddogaeth yn rhedeg mewn amgylchedd Lambda, ond gyda llwybrau llwyth tâl gwahanol.

Yn ystod galwadau ymateb i gais, mae'r llwyth tâl yn llifo o API sy'n prosesu cais (API Caller), fel AWS API Gateway neu AWS SDK, i'r balans llwyth, ac yna i wasanaeth galwadau Lambda (Invoke Service). Mae'r olaf yn pennu'r amgylchedd priodol ar gyfer cyflawni'r swyddogaeth ac yn pasio'r llwyth tâl yno i gwblhau'r alwad. Mae'r cydbwysedd llwyth yn derbyn traffig a ddiogelir gan TLS dros y Rhyngrwyd. Mae traffig o fewn gwasanaeth Lambda - ar ôl y cydbwysedd llwyth - yn mynd trwy VPC mewnol mewn rhanbarth AWS penodol.

Dadansoddiad manwl o AWS Lambda

Model Prosesu Galwadau Lambda AWS: Modd Cais-Ymateb

Gellir gwneud galwadau digwyddiad ar unwaith neu eu hychwanegu at giw. Mewn rhai achosion, mae'r ciw yn cael ei weithredu gan ddefnyddio Amazon SQS (Amazon Simple Queue Service), sy'n trosglwyddo galwadau i wasanaeth cyflawni galwadau Lambda trwy broses poller mewnol. Mae'r traffig a drosglwyddir yn cael ei ddiogelu gan TLS, ac nid oes unrhyw amgryptio ychwanegol o ddata sy'n cael ei storio yn Amazon SQS.

Nid yw galwadau digwyddiad yn dychwelyd ymatebion - mae'r Gweithiwr Lambda yn anwybyddu unrhyw wybodaeth ymateb. Mae galwadau sy'n seiliedig ar ddigwyddiadau gan Amazon S3, Amazon SNS, CloudWatch, a ffynonellau eraill yn cael eu prosesu gan Lambda yn y modd digwyddiad. Mae galwadau o ffrydiau Amazon Kinesis a DynamoDB, ciwiau SQS, Cydbwyso Llwyth Cymwysiadau, a galwadau Porth API yn cael eu prosesu mewn modd ymateb i gais.

Monitro

Gallwch fonitro ac archwilio swyddogaethau Lambda gan ddefnyddio amrywiaeth o fecanweithiau a gwasanaethau AWS, gan gynnwys y canlynol.

amazoncloudwatch
Yn casglu ystadegau amrywiol megis nifer y ceisiadau, hyd y ceisiadau, a nifer y ceisiadau a fethodd.

Amazon CloudTrail
Yn eich galluogi i logio, monitro'n barhaus, a chynnal gwybodaeth gweithgaredd cyfrif sy'n gysylltiedig â'ch seilwaith AWS. Bydd gennych hanes cyflawn o gamau gweithredu a gyflawnwyd gan ddefnyddio Consol Rheoli AWS, AWS SDK, offer llinell orchymyn, a gwasanaethau AWS eraill.

Pelydr-X AWS
Yn darparu gwelededd cyflawn i bob cam o brosesu ceisiadau yn eich cais yn seiliedig ar fap o'i gydrannau mewnol. Yn eich galluogi i ddadansoddi cymwysiadau yn ystod datblygiad ac mewn amgylcheddau cynhyrchu.

Ffurfwedd AWS
Byddwch yn gallu olrhain newidiadau i ffurfweddiad swyddogaeth Lambda (gan gynnwys dileu) ac amseroedd rhedeg, tagiau, enwau trinwyr, maint cod, dyraniad cof, gosodiadau terfyn amser a gosodiadau arian cyfred, yn ogystal â rôl gweithredu Lambda IAM, is-rwydweithio, a rhwymiadau grŵp diogelwch .

Casgliad

Mae AWS Lambda yn cynnig set bwerus o offer ar gyfer adeiladu cymwysiadau diogel a graddadwy. Mae llawer o'r arferion diogelwch a chydymffurfio yn AWS Lambda yr un fath ag mewn gwasanaethau AWS eraill, er bod eithriadau. Ym mis Mawrth 2019, mae Lambda yn cydymffurfio â SOC 1, SOC 2, SOC 3, PCI DSS, cydymffurfiaeth Deddf Cludadwyedd ac Atebolrwydd Yswiriant Iechyd (HIPAA), a rheoliadau eraill. Felly, pan fyddwch chi'n ystyried rhoi eich cais nesaf ar waith, ystyriwch wasanaeth Lambda AWS - efallai mai dyma'r ffit orau ar gyfer eich tasg.

Ffynhonnell: hab.com

Ychwanegu sylw