ʻIke kikoʻī o AWS Lambda

Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala no nā haumāna o ka papa "Nā lawelawe ao". Makemake ʻoe e hoʻomohala ma kēia ʻaoʻao? E nānā i ka papa haku na Egor Zuev (TeamLead ma InBit) "lawelawe AWS EC2" a hui pū i ka hui papa aʻe: hoʻomaka i ka lā 26 Kepakemapa.

ʻIke kikoʻī o AWS Lambda

Ke neʻe nei ka poʻe hou aku i AWS Lambda no ka scalability, ka hana, ka mālama ʻana, a me ka hiki ke mālama i nā miliona a i ʻole trillions o nā noi i kēlā me kēia mahina. No ka hana ʻana i kēia, ʻaʻole pono ʻoe e hoʻokele i ka ʻōnaehana kahi e holo ai ka lawelawe. A ʻo ka autoscaling hiki iā ʻoe ke lawelawe i nā tausani o nā noi like i kēlā me kēia kekona. Manaʻo wau hiki ke kapa ʻia ʻo AWS Lambda kekahi o nā lawelawe AWS kaulana loa.

ʻO AWS Lambda

ʻO AWS Lambda kahi lawelawe kikowaena serverless hoʻokele hanana e hiki ai iā ʻoe ke holo i nā code me ka ʻole o ka hoʻolako ʻana a i ʻole ka mālama ʻana i nā kikowaena a hoʻonui i nā lawelawe AWS me ka hoʻohana ʻana i ka loiloi maʻamau. Pane maʻalahi ʻo Lambda i nā hanana like ʻole (i kapa ʻia nā triggers), e like me nā noi HTTP ma o Amazon API Gateway, nā hoʻololi i ka ʻikepili ma nā bākeke Amazon S3 a i ʻole nā ​​papa Amazon DynamoDB; a i ʻole hiki iā ʻoe ke holo i kāu code ma o nā kelepona API me ka hoʻohana ʻana i ka AWS SDK a me nā hoʻololi mokuʻāina ma AWS Step Functions.

Hoʻohana ʻo Lambda i nā code ma kahi ʻōnaehana kamepiula i loaʻa loa a ʻo ia ke kuleana piha no ka lawelawe ʻana i ke kahua i lalo, me ka mālama ʻana i ka server a me ka ʻōnaehana hana, ka hoʻolako waiwai, ka hoʻonui ʻana, ka nānā ʻana i nā code, a me ka logging. ʻO ia hoʻi, pono ʻoe e hoʻouka i kāu code a hoʻonohonoho i ka pehea a me ka manawa e hoʻokō ʻia ai. Ma ka huli ʻana, e mālama ka lawelawe i kāna hoʻomaka ʻana a hōʻoia i ka loaʻa kiʻekiʻe o kāu noi.

I ka manawa hea e hoʻololi ai iā Lambda?

ʻO AWS Lambda kahi kahua hoʻopili maʻalahi i kūpono no nā ʻano hihia hoʻohana like ʻole, ʻoiai ke kākoʻo ʻia ka ʻōlelo a me ka manawa holo o kāu code e ka lawelawe. Inā makemake ʻoe e kālele i kāu code a me ka loiloi ʻoihana ʻoiai ke hoʻopuka nei i ka mālama ʻana o ka server, hoʻolako, a me ka scaling ma ke kumukūʻai kūpono, ʻo AWS Lambda ke ala e hele ai.

He kūpono ʻo Lambda no ka hoʻokumu ʻana i nā polokalamu hoʻonohonoho, a ke hoʻohana pū ʻia me ka API Gateway, hiki iā ʻoe ke hōʻemi nui i nā kumukūʻai a hiki i ka mākeke wikiwiki. Aia nā ala like ʻole e hoʻohana ai i nā hana Lambda a me nā koho no ka hoʻonohonoho ʻana i kahi hoʻolālā serverless - hiki i nā mea a pau ke koho i kahi mea kūpono e pili ana i kā lākou pahuhopu.

Hāʻawi ʻo Lambda iā ʻoe e hana i kahi ākea o nā hana. No laila, mahalo i ke kākoʻo CloudWatch, hiki iā ʻoe ke hana i nā hana i hoʻopaneʻe ʻia a hoʻokaʻawale i nā kaʻina hana. ʻAʻohe palena i ke ʻano a me ka ikaika o ka hoʻohana ʻana i ka lawelawe (manaʻo ʻia ka hoʻohana ʻana i ka hoʻomanaʻo a me ka manawa), a ʻaʻohe mea e pale iā ʻoe mai ka hana ʻōnaehana ma kahi microservice piha e pili ana iā Lambda.

Maanei hiki iā ʻoe ke hana i nā hana pili i ka lawelawe ʻaʻole holo mau. ʻO kahi laʻana maʻamau ka hoʻonui kiʻi. ʻOiai i ka hihia o nā ʻōnaehana puʻupuʻu, pili pono nā hana Lambda.

No laila, inā ʻaʻole ʻoe makemake e pili i ka hoʻokaʻawale ʻana a me ka mālama ʻana i nā kumuwaiwai computing, e hoʻāʻo iā AWS Lambda; inā ʻaʻole pono ʻoe i nā helu koʻikoʻi koʻikoʻi, e hoʻāʻo pū iā AWS Lambda; inā holo kāu code i kēlā me kēia manawa, pololei, pono ʻoe e hoʻāʻo iā AWS Lambda.

Ka maluhia

I kēia manawa ʻaʻohe hoʻopiʻi e pili ana i ka palekana. Ma ka ʻaoʻao ʻē aʻe, no ka mea ua hūnā ʻia ka nui o nā kaʻina kūloko a me nā hiʻohiʻona hoʻokō o kēia kŘkohu mai ka mea hoʻohana o ka AWS Lambda hoʻokele runtime environment, ua lilo kekahi mau lula i ʻae ʻia no ka palekana o ke ao.

E like me ka hapa nui o nā lawelawe AWS, hāʻawi ʻia ʻo Lambda ma ke kumu palekana a me ka hoʻokō ma waena o AWS a me ka mea kūʻai aku. Hoʻemi kēia kumumanaʻo i ke kaumaha o ka hana ma luna o ka mea kūʻai aku, no ka mea, lawe ʻo AWS i nā hana o ka mālama ʻana, ka lawelawe ʻana a me ka nānā ʻana i nā ʻāpana lawelawe - mai ka ʻōnaehana hoʻokipa a me ka papa virtualization i ka palekana kino o nā waiwai waiwai.

Ma ke kamaʻilio kikoʻī e pili ana iā AWS Lambda, ʻo AWS ke kuleana no ka hoʻokele ʻana i nā ʻōnaehana kumu, nā lawelawe kumu pili, ka ʻōnaehana hana, a me ka paepae noi. ʻOiai ke kuleana o ka mea kūʻai aku no ka palekana o kāna code, mālama i ka ʻikepili huna, ka mālama ʻana i ke komo ʻana iā ia, a me ka lawelawe Lambda a me nā kumuwaiwai (Identity and Access Management, IAM), me nā palena o nā hana i hoʻohana ʻia.

Hōʻike ke kiʻikuhi ma lalo nei i ke kumu hoʻohālike kuleana like e pili ana iā AWS Lambda. He ʻalani ke kuleana o AWS a he uliuli ke kuleana o nā mea kūʻai aku. E like me kāu e ʻike ai, lawe ʻo AWS i ke kuleana no nā noi i kau ʻia ma ka lawelawe.

ʻIke kikoʻī o AWS Lambda

Hoʻohana ʻia ke kumu hoʻohālike kuleana like me AWS Lambda

Lambda holo manawa

ʻO ka pōmaikaʻi nui o Lambda ʻo ia ma ka hana ʻana i kahi hana no ʻoe, na ka lawelawe ponoʻī e hoʻokaʻawale i nā kumuwaiwai e pono ai. Hiki iā ʻoe ke pale i ka hoʻopau ʻana i ka manawa a me ka hoʻoikaika ʻana i ka hoʻokele ʻana i ka ʻōnaehana a nānā i ka loiloi ʻoihana a me ka coding.

Hoʻokaʻawale ʻia ka lawelawe Lambda i ʻelua mokulele. ʻO ka mua ka mokulele hoʻomalu. Wahi a Wikipedia, ʻo ka mokulele hoʻokele ka ʻāpana o ka pūnaewele kuleana no ka lawe ʻana i nā kaʻa a me nā alahele. ʻO ia ka mea nui e hoʻoholo ai i ka honua e pili ana i ka hoʻolako ʻana, ka lawelawe ʻana, a me ka hāʻawi ʻana i nā ukana hana. Eia hou, ke hana nei ka mokulele hoʻokele e like me ka topology pūnaewele o ka mea hāʻawi hoʻonā, kuleana no ka hoʻokele a me ka hoʻokele ʻana i nā kaʻa.

ʻO ka mokulele ʻelua ka mokulele data. ʻO ia, e like me ka mokulele hoʻokele, aia kāna mau hana ponoʻī. Hāʻawi ka mokulele hoʻokele i nā API no ka hoʻokele ʻana i nā hana (CreateFunction, UpdateFunctionCode) a hoʻomalu i ke ʻano o ke kamaʻilio ʻana o Lambda me nā lawelawe AWS ʻē aʻe. Mālama ka mokulele ʻikepili i ka Invoke API, e holo ana i nā hana Lambda. Ma hope o ke kāhea ʻia ʻana o kahi hana, hoʻokaʻawale a koho paha ka mokulele mana i kahi kaiapuni runtime i hoʻomākaukau mua ʻia no kēlā hana, a laila hoʻokō i ke code i loko.

Kākoʻo ʻo AWS Lambda i nā ʻōlelo papahana like ʻole, me Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, a me nā mea ʻē aʻe, ma o kā lākou mau kaiapuni holo manawa. Hoʻopau pinepine ʻo AWS iā lākou, hāʻawi i nā pale palekana, a hana i nā hana mālama ʻē aʻe ma kēia mau kaiapuni. ʻAe ʻo Lambda iā ʻoe e hoʻohana i nā ʻōlelo ʻē aʻe, inā ʻoe e hoʻokō i ka manawa holo kūpono iā ʻoe iho. A laila pono ʻoe e mālama i kāna mālama ʻana, me ka nānā ʻana i kona palekana.

Pehea e hana ai a pehea e hana ai ka lawelawe i kāu mau hana?

Holo kēlā me kēia hana i hoʻokahi a ʻoi aʻe paha nā wahi i hoʻolaʻa ʻia, aia wale nō no ke ola o ia hana a laila luku ʻia. Hoʻokahi wale nō kelepona i kēlā me kēia kaiapuni i ka manawa, akā hoʻohana hou ʻia inā nui nā kelepona serial i ka hana like. Holo nā kaiapuni runtime āpau ma nā mīkini virtual me ka virtualization hardware - i kapa ʻia microVMs. Hāʻawi ʻia kēlā me kēia microVM i kahi moʻokāki AWS kikoʻī a hiki ke hoʻohana hou ʻia e nā kaiapuni e hana i nā hana like ʻole i loko o ia moʻokāki. Hoʻopili ʻia nā MicroVM i loko o nā poloka kūkulu o ka Lambda Worker hardware platform, nona a mālama ʻia e AWS. ʻAʻole hiki ke hoʻohana ʻia ka manawa holo like e nā hana like ʻole, ʻaʻole hoʻi nā microVM i kū hoʻokahi i nā moʻolelo AWS like ʻole.

ʻIke kikoʻī o AWS Lambda

Ke Ana Hoʻohālike AWS Lambda

Hoʻohana ʻia ka hoʻokaʻawale ʻana i nā kaiapuni runtime me ka hoʻohana ʻana i kekahi mau mīkini. Ma ka pae kiʻekiʻe o kēlā me kēia kaiapuni, aia nā kope ʻokoʻa o kēia mau ʻāpana:

  • Code hana
  • ʻO nā papa Lambda i koho ʻia no ka hana
  • Kaiapuni hoʻokō hana
  • Wahi hoʻohana liʻiliʻi ma luna o Amazon Linux

Hoʻohana ʻia nā mīkini e hoʻokaʻawale i nā kaiapuni hoʻokō like ʻole:

  • cgroups - e kaupalena i ke komo ʻana i ka CPU, ka hoʻomanaʻo, ka mālama ʻana a me nā kumuwaiwai pūnaewele no kēlā me kēia kaiapuni holo;
  • namespaces - hui pū ʻana i nā ID kaʻina hana, nā mea hoʻohana ID, nā kikowaena pūnaewele a me nā kumuwaiwai ʻē aʻe i mālama ʻia e ka Linux kernel. Holo kēlā me kēia manawa holo i kona inoa inoa ponoʻī;
  • seccomp-bpf - kaohi i nā kelepona ʻōnaehana hiki ke hoʻohana ʻia i ka wā holo;
  • iptables a me nā papa kuhikuhi - kaʻawale ʻana o nā wahi hoʻokō mai kekahi i kekahi;
  • chroot - hāʻawi i ka ʻike palena ʻole i ka ʻōnaehana faila lalo.

Hoʻohui pū ʻia me nā ʻenehana hoʻokaʻawale ponoʻī ʻo AWS, e hōʻoia kēia mau hana i ka hoʻokaʻawale ʻana i ka wā holo pono. ʻAʻole hiki i nā kaiapuni kaʻawale i kēia ala ke komo a hoʻololi i ka ʻikepili mai nā kaiapuni ʻē aʻe.

ʻOiai hiki ke holo i nā manawa he nui o ka moʻokāki AWS hoʻokahi ma kahi microVM hoʻokahi, ʻaʻole hiki ke hoʻokaʻawale ʻia nā microVM ma waena o nā moʻolelo AWS like ʻole. Hoʻohana ʻo AWS Lambda i ʻelua mau hana e hoʻokaʻawale i nā microVM: nā manawa EC2 a me Firecracker. ʻO ka noho kaʻawale ʻana o nā malihini ma Lambda e pili ana i nā hihia EC2 mai ka makahiki 2015. ʻO Firecracker kahi hypervisor open source hou i hoʻolālā ʻia e AWS no nā hana hana ʻole a hoʻokomo ʻia ma 2018. Hoʻokaʻawale ʻia ka ʻenehana kino e holo ana i nā microVM ma waena o nā mea hana ma nā moʻolelo like ʻole.

Mālama i nā kaiapuni a me nā kūlana hana

ʻOiai ʻokoʻa ka Lambda runtimes i nā hana like ʻole, hiki iā lākou ke kāhea pinepine i ka hana like, ʻo ia hoʻi, hiki ke ola ka manawa holo no kekahi mau hola ma mua o ka luku ʻia.

Loaʻa i kēlā me kēia Lambda runtime kahi ʻōnaehana faila hiki ke loaʻa ma o ka papa kuhikuhi /tmp. ʻAʻole hiki ke kiʻi ʻia kāna mau mea mai nā manawa holo ʻē aʻe. E pili ana i ka hoʻomau ʻana o ke kaʻina hana, aia nā faila i kākau ʻia i /tmp no ke ola holoʻokoʻa o ke kaiapuni runtime. ʻAe kēia i nā hopena o nā kelepona he nui e hōʻiliʻili ʻia, ʻoi aku ka maikaʻi no nā hana pipiʻi e like me ka hoʻouka ʻana i nā kumu hoʻohālike mīkini.

Hoʻoili ʻikepili kelepona

Hiki ke hoʻohana ʻia ka Invoke API ma nā ʻano ʻelua: ke ʻano hanana a me ke ʻano noi-pane. Ma ke ʻano hanana, hoʻohui ʻia ke kelepona i kahi pila no ka hoʻokō hope. Ma ke ʻano noi-pane, kāhea koke ʻia ka hana me ka uku i hāʻawi ʻia, a laila hoʻihoʻi ʻia ka pane. I nā hihia ʻelua, holo ka hana ma kahi ʻano Lambda, akā me nā ala uku uku.

I ka wā o nā kelepona pane-noi, e kahe ana ka uku uku mai kahi API hoʻoponopono noi (API Caller), e like me AWS API Gateway a i ʻole AWS SDK, i ka mea kaulike hoʻouka, a laila i ka lawelawe kelepona Lambda (Invoke Service). Hoʻoholo ka mea hope i ke kaiapuni kūpono no ka hoʻokō ʻana i ka hana a hāʻawi i ka uku ma laila e hoʻopau i ke kelepona. Loaʻa i ka mea kaulike ka ukana i nā kaʻa i pale ʻia e TLS ma luna o ka Pūnaewele. ʻO ke kaʻa i loko o ka lawelawe ʻo Lambda—ma hope o ka mea hoʻohālikelike ukana—e hele i loko o kahi VPC kūloko ma kahi ʻāpana AWS kikoʻī.

ʻIke kikoʻī o AWS Lambda

Ke Ana Hoʻohālike Kāhea AWS Lambda: Ke ʻano noi-pane

Hiki ke kāhea koke ʻia a hoʻohui ʻia paha i kahi pila. I kekahi mau hihia, hoʻokō ʻia ka pila me ka Amazon SQS (Amazon Simple Queue Service), e hoʻouna i nā kelepona i ka lawelawe hoʻokō kelepona ʻo Lambda ma o kahi kaʻina poller kūloko. Mālama ʻia ka huakaʻi i hoʻouna ʻia e TLS, a ʻaʻohe hoʻopunipuni hou o ka ʻikepili i mālama ʻia ma Amazon SQS.

ʻAʻole hoʻihoʻi nā kelepona hanana i nā pane - ʻaʻole ʻike wale ka Lambda Worker i kekahi ʻike pane. Hoʻoponopono ʻia nā kelepona pili i ka hanana mai Amazon S3, Amazon SNS, CloudWatch, a me nā kumu ʻē aʻe e Lambda i ke ʻano hanana hanana. Hoʻohana ʻia nā kelepona mai nā kahawai ʻo Amazon Kinesis a me DynamoDB, SQS queues, Application Load Balancer, a me API Gateway ma kahi ʻano noi-pane.

Ka mālama ʻana

Hiki iā ʻoe ke nānā a loiloi i nā hana Lambda me ka hoʻohana ʻana i nā ʻano hana like ʻole a me nā lawelawe AWS, me kēia mau mea.

Amazon CloudWatch
E hōʻiliʻili i nā ʻikepili like ʻole e like me ka helu o nā noi, ka lōʻihi o nā noi, a me ka helu o nā noi i hāʻule.

Amazon CloudTrail
ʻAe iā ʻoe e hoʻopaʻa inoa, nānā mau, a mālama i ka ʻike hana moʻokāki e pili ana i kāu ʻōnaehana AWS. E loaʻa iā ʻoe kahi moʻolelo piha o nā hana i hana ʻia me ka AWS Management Console, AWS SDK, nā mea hana laina kauoha, a me nā lawelawe AWS ʻē aʻe.

AWS X-Ray
Hāʻawi i ka ʻike piha ʻana i nā pae āpau o ka hoʻoili noi ʻana i kāu noi ma muli o kahi palapala ʻāina o kona mau ʻāpana kūloko. Hāʻawi iā ʻoe e nānā i nā noi i ka wā o ka hoʻomohala ʻana a i nā wahi hana.

AWS Config
Hiki iā ʻoe ke hahai i nā loli i ka hoʻonohonoho hana Lambda (me ka holoi ʻana) a me nā manawa holo, nā inoa, nā inoa mea hoʻohana, ka nui o nā code, ka hoʻokaʻawale ʻana i ka hoʻomanaʻo, nā hoʻonohonoho manawa a me nā hoʻonohonoho concurrency, a me ka Lambda IAM execution role, subnetting, a me nā pūʻulu palekana. .

hopena

Hāʻawi ʻo AWS Lambda i kahi pūʻulu ikaika o nā mea hana no ke kūkulu ʻana i nā noi palekana a hiki ke hoʻonui ʻia. ʻO ka nui o nā hana palekana a me ka hoʻokō ʻana ma AWS Lambda e like me nā lawelawe AWS ʻē aʻe, ʻoiai aia nā ʻokoʻa. Ma Malaki 2019, hoʻokō ʻo Lambda i ka SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA), a me nā lula ʻē aʻe. No laila, ke noʻonoʻo nei ʻoe e hoʻokō i kāu noi aʻe, e noʻonoʻo i ka lawelawe AWS Lambda - ʻo ia paha ka mea kūpono loa no kāu hana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka