Anàlisi detallada d'AWS Lambda

La traducció de l'article s'ha elaborat expressament per als alumnes del curs "Serveis al núvol". T'interessa desenvolupar-te en aquesta direcció? Mira la classe magistral d'Egor Zuev (TeamLead a InBit) "Servei AWS EC2" i uneix-te al proper grup del curs: comença el 26 de setembre.

Anàlisi detallada d'AWS Lambda

Més persones estan migrant a AWS Lambda per a l'escalabilitat, el rendiment, l'estalvi i la capacitat de gestionar milions o fins i tot bilions de sol·licituds al mes. Per fer-ho, no cal que gestioneu la infraestructura en què s'executa el servei. I l'escala automàtica us permet atendre milers de sol·licituds simultànies per segon. Crec que AWS Lambda es pot anomenar amb raó un dels serveis d'AWS més populars.

AWS Lambda

AWS Lambda és un servei informàtic sense servidor basat en esdeveniments que us permet executar codi sense subministrar ni gestionar servidors i ampliar altres serveis d'AWS mitjançant una lògica personalitzada. Lambda respon automàticament a diversos esdeveniments (anomenats disparadors), com ara sol·licituds HTTP a través d'Amazon API Gateway, canvis a les dades dels cubs d'Amazon S3 o taules d'Amazon DynamoDB; o podeu executar el vostre codi mitjançant trucades d'API mitjançant l'SDK d'AWS i les transicions d'estat a AWS Step Functions.

Lambda executa codi en una infraestructura informàtica d'alta disponibilitat i és totalment responsable de l'administració de la plataforma subjacent, inclòs el manteniment del servidor i del sistema operatiu, l'aprovisionament de recursos, l'escalat automàtic, la supervisió del codi i el registre. És a dir, només heu de carregar el vostre codi i configurar com i quan s'ha d'executar. Al seu torn, el servei s'encarregarà del seu llançament i garantirà l'alta disponibilitat de la seva aplicació.

Quan canviar a Lambda?

AWS Lambda és una plataforma informàtica convenient que és adequada per a diversos casos d'ús, sempre que el servei admeti l'idioma i el temps d'execució del codi. Si voleu centrar-vos en el vostre codi i la vostra lògica empresarial mentre subcontracteu el manteniment, el subministrament i l'escalat del servidor a un cost raonable, AWS Lambda és sens dubte el camí a seguir.

Lambda és ideal per crear interfícies de programació i, quan s'utilitza conjuntament amb API Gateway, podeu reduir significativament els costos i arribar al mercat més ràpidament. Hi ha diferents maneres d'utilitzar les funcions i opcions de Lambda per organitzar una arquitectura sense servidor: tothom pot triar alguna cosa adequada en funció del seu objectiu.

Lambda us permet realitzar una àmplia gamma de tasques. Així, gràcies al suport de CloudWatch, podeu crear tasques diferits i automatitzar processos individuals. No hi ha restriccions sobre la naturalesa i la intensitat d'ús del servei (es té en compte el consum de memòria i el temps), i res no impedeix treballar de manera sistemàtica en un microservei complet basat en Lambda.

Aquí podeu crear accions orientades al servei que no s'executen contínuament. Un exemple típic és l'escala d'imatges. Fins i tot en el cas dels sistemes distribuïts, les funcions Lambda segueixen sent rellevants.

Per tant, si no voleu ocupar-vos de l'assignació i la gestió dels recursos informàtics, proveu AWS Lambda; si no necessiteu càlculs pesats i que requereixen molts recursos, proveu també AWS Lambda; si el vostre codi s'executa periòdicament, és cert, hauríeu de provar AWS Lambda.

Безопасность

De moment no hi ha queixes sobre seguretat. D'altra banda, com que molts dels processos interns i característiques d'implementació d'aquest model estan ocults per a l'usuari de l'entorn d'execució gestionat d'AWS Lambda, algunes regles generalment acceptades de seguretat al núvol es tornen irrellevants.

Com la majoria dels serveis d'AWS, Lambda es proporciona sobre una base de seguretat i compliment compartida entre AWS i el client. Aquest principi redueix la càrrega operativa del client, ja que AWS assumeix les tasques de manteniment, administració i supervisió dels components del servei, des del sistema operatiu amfitrió i la capa de virtualització fins a la seguretat física dels actius d'infraestructura.

Parlant específicament d'AWS Lambda, AWS és responsable de gestionar la infraestructura subjacent, els serveis subjacents associats, el sistema operatiu i la plataforma d'aplicacions. Mentre que el client és responsable de la seguretat del seu codi, emmagatzemant les dades confidencials, controlant l'accés al mateix, així com al servei i recursos Lambda (Gestió d'Identitats i Accés, IAM), inclòs dins dels límits de les funcions utilitzades.

El diagrama següent mostra el model de responsabilitat compartida tal com s'aplica a AWS Lambda. La responsabilitat d'AWS és taronja i la responsabilitat del client és blava. Com podeu veure, AWS assumeix més responsabilitat de les aplicacions desplegades al servei.

Anàlisi detallada d'AWS Lambda

Model de responsabilitat compartida aplicable a AWS Lambda

Temps d'execució Lambda

El principal avantatge de Lambda és que realitzant una funció en nom vostre, el propi servei assigna els recursos necessaris. Podeu evitar perdre temps i esforços en l'administració del sistema i centrar-vos en la lògica i la codificació empresarial.

El servei Lambda es divideix en dos plans. El primer és el pla de control. Segons la Viquipèdia, el pla de control és la part de la xarxa encarregada de transportar el trànsit de senyalització i l'encaminament. És el component principal que pren decisions globals sobre el subministrament, el servei i la distribució de càrregues de treball. A més, el pla de control actua com a topologia de xarxa del proveïdor de solucions, responsable de l'encaminament i la gestió del trànsit.

El segon pla és el pla de dades. Aquest, com el pla de control, té les seves pròpies tasques. El pla de control proporciona API per gestionar funcions (CreateFunction, UpdateFunctionCode) i controla com Lambda es comunica amb altres serveis d'AWS. El pla de dades controla l'API Invoke, que executa funcions Lambda. Després de cridar una funció, el pla de control assigna o selecciona un entorn d'execució existent que està preparat per a aquesta funció i, a continuació, executa el codi.

AWS Lambda admet diversos llenguatges de programació, inclosos Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 i altres, a través dels seus respectius entorns d'execució. AWS els actualitza regularment, distribueix pedaços de seguretat i realitza altres activitats de manteniment en aquests entorns. Lambda també us permet utilitzar altres idiomes, sempre que implementeu el temps d'execució adequat. I llavors t'hauràs de fer càrrec del seu manteniment, inclosa la vigilància de la seva seguretat.

Com funciona tot i com realitzarà el servei les vostres funcions?

Cada funció s'executa en un o més entorns dedicats, que només existeixen durant la vida d'aquesta funció i després es destrueixen. Cada entorn només fa una trucada alhora, però es reutilitza si hi ha diverses trucades en sèrie a la mateixa funció. Tots els entorns d'execució s'executen en màquines virtuals amb virtualització de maquinari, les anomenades microVM. Cada microVM s'assigna a un compte d'AWS específic i els entorns poden reutilitzar-los per realitzar diferents funcions dins d'aquest compte. Les MicroVM s'empaqueten en blocs de construcció de la plataforma de maquinari Lambda Worker, propietat i operada per AWS. El mateix temps d'execució no es pot utilitzar per diferents funcions, ni les microVM són úniques per a diferents comptes d'AWS.

Anàlisi detallada d'AWS Lambda

Model d'aïllament AWS Lambda

L'aïllament dels entorns d'execució s'implementa mitjançant diversos mecanismes. Al nivell superior de cada entorn hi ha còpies separades dels components següents:

  • Codi de funció
  • Qualsevol capa Lambda seleccionada per a la funció
  • Entorn d'execució de funcions
  • Espai d'usuari mínim basat en Amazon Linux

Els mecanismes següents s'utilitzen per aïllar diferents entorns d'execució:

  • cgroups: limita l'accés a la CPU, la memòria, l'emmagatzematge i els recursos de xarxa per a cada entorn d'execució;
  • espais de noms: identificadors de processos d'agrupació, identificadors d'usuari, interfícies de xarxa i altres recursos gestionats pel nucli Linux. Cada temps d'execució s'executa en el seu propi espai de noms;
  • seccomp-bpf - restringeix les trucades al sistema que es poden utilitzar en temps d'execució;
  • iptables i taules d'encaminament: aïllament dels entorns d'execució entre si;
  • chroot: proporciona un accés limitat al sistema de fitxers subjacent.

Combinats amb les tecnologies d'aïllament propietat d'AWS, aquests mecanismes garanteixen una separació fiable del temps d'execució. Els entorns aïllats d'aquesta manera no poden accedir ni modificar dades d'altres entorns.

Tot i que es poden executar diversos temps d'execució del mateix compte d'AWS en una única microVM, en cap cas es poden compartir microVM entre diferents comptes d'AWS. AWS Lambda només utilitza dos mecanismes per aïllar les microVM: instàncies EC2 i Firecracker. L'aïllament dels convidats a Lambda basat en instàncies EC2 existeix des del 2015. Firecracker és un nou hipervisor de codi obert dissenyat específicament per AWS per a càrregues de treball sense servidor i introduït el 2018. El maquinari físic que executa microVM es comparteix entre càrregues de treball de diferents comptes.

Estalvi d'entorns i estats de procés

Tot i que els temps d'execució de Lambda són únics per a diferents funcions, poden cridar la mateixa funció repetidament, el que significa que el temps d'execució pot sobreviure durant diverses hores abans de ser destruït.

Cada temps d'execució de Lambda també té un sistema de fitxers que es pot escriure a través del directori /tmp. No es pot accedir al seu contingut des d'altres temps d'execució. Pel que fa a la persistència de l'estat del procés, els fitxers escrits a /tmp existeixen durant tot el cicle de vida de l'entorn d'execució. Això permet acumular els resultats de múltiples trucades, cosa que és especialment útil per a operacions costoses com ara carregar models d'aprenentatge automàtic.

Transferència de dades de trucada

L'API d'invocació es pot utilitzar en dos modes: mode d'esdeveniment i mode petició-resposta. En el mode d'esdeveniment, la trucada s'afegeix a una cua per a una execució posterior. En el mode petició-resposta, la funció es crida a l'instant amb la càrrega útil proporcionada, després de la qual es retorna la resposta. En ambdós casos, la funció s'executa en un entorn Lambda, però amb diferents camins de càrrega útil.

Durant les trucades de sol·licitud-resposta, la càrrega útil flueix des d'una API de processament de sol·licituds (API Caller), com ara AWS API Gateway o AWS SDK, a l'equilibrador de càrrega i després al servei de trucades Lambda (Invoke Service). Aquest últim determina l'entorn adequat per executar la funció i hi passa la càrrega útil per completar la trucada. L'equilibrador de càrrega rep trànsit protegit per TLS a Internet. El trànsit dins del servei Lambda, després de l'equilibrador de càrrega, passa per una VPC interna en una regió d'AWS específica.

Anàlisi detallada d'AWS Lambda

Model de processament de trucades AWS Lambda: mode de sol·licitud-resposta

Les trucades d'esdeveniments es poden fer immediatament o afegir-se a una cua. En alguns casos, la cua s'implementa mitjançant Amazon SQS (Amazon Simple Queue Service), que passa les trucades al servei de compliment de trucades de Lambda mitjançant un procés d'enquesta intern. El trànsit transmès està protegit per TLS i no hi ha cap xifratge addicional de les dades emmagatzemades a Amazon SQS.

Les trucades d'esdeveniment no retornen respostes; el treballador de Lambda simplement ignora qualsevol informació de resposta. Lambda processa les trucades basades en esdeveniments d'Amazon S3, Amazon SNS, CloudWatch i altres fonts en mode d'esdeveniment. Les trucades dels fluxos d'Amazon Kinesis i DynamoDB, les cues SQS, l'Application Load Balancer i les trucades API Gateway es processen de manera sol·licitud-resposta.

Seguiment

Podeu supervisar i auditar les funcions de Lambda mitjançant una varietat de mecanismes i serveis d'AWS, inclosos els següents.

Amazon CloudWatch
Recull diverses estadístiques com ara el nombre de sol·licituds, la durada de les sol·licituds i el nombre de sol·licituds que han fallat.

Amazon CloudTrail
Us permet iniciar sessió, supervisar contínuament i mantenir la informació de l'activitat del compte associada a la vostra infraestructura d'AWS. Tindreu un historial complet de les accions realitzades mitjançant la consola de gestió d'AWS, l'SDK d'AWS, les eines de línia d'ordres i altres serveis d'AWS.

AWS X-Ray
Ofereix una visibilitat completa de totes les etapes del processament de sol·licituds a la vostra aplicació a partir d'un mapa dels seus components interns. Permet analitzar aplicacions durant el desenvolupament i en entorns de producció.

AWS Config
Podreu fer un seguiment dels canvis a la configuració de la funció Lambda (inclosa la supressió) i els temps d'execució, les etiquetes, els noms del gestor, la mida del codi, l'assignació de memòria, la configuració del temps d'espera i la configuració de concurrència, així com la funció d'execució de Lambda IAM, les subxarxes i els enllaços de grups de seguretat. .

Conclusió

AWS Lambda ofereix un conjunt potent d'eines per crear aplicacions segures i escalables. Moltes de les pràctiques de seguretat i compliment d'AWS Lambda són les mateixes que en altres serveis d'AWS, tot i que hi ha excepcions. A partir del març de 2019, Lambda compleix les normes SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA) i altres regulacions. Per tant, quan estigueu pensant a implementar la vostra propera aplicació, tingueu en compte el servei AWS Lambda: pot ser el millor per a la vostra tasca.

Font: www.habr.com

Afegeix comentari