Cos'รจ AWS Lambda? Funzione Lambda con esempi

โšก Riepilogo intelligente

AWS Lambda รจ una piattaforma di elaborazione serverless basata sugli eventi di Amazon Servizi Web che eseguono il tuo codice in risposta a determinati eventi, gestendo automaticamente il provisioning, il dimensionamento e la gestione dei server, in modo che tu possa concentrarti esclusivamente sulla logica di business.

  • โ˜๏ธ Modello serverless: AWS Lambda esegue il codice senza effettuare il provisioning o la gestione dei server, eliminando la necessitร  di applicare patch al sistema operativo, scalare e pianificare la capacitร .
  • โšก Esecuzione guidata dagli eventi: Le funzioni vengono attivate da servizi AWS come S3, DynamoDB, API Gateway e SNS, che si attivano solo quando si verifica un evento.
  • ๐Ÿงฉ Supporto linguistico: Lambda supporta Node.js, Python, JavaGo, C# e Ruby, oltre a runtime personalizzati per altri linguaggi.
  • ๐Ÿ’ฐ Pagamento a consumo: BillIl servizio si applica solo durante l'esecuzione del codice, misurata in millisecondi, con un piano gratuito mensile permanente di un milione di richieste.
  • ๏ธ Concetti fondamentali: Funzioni, runtime, sorgenti di eventi, livelli e flussi di log definiscono il modo in cui Lambda esegue e gestisce il codice.
  • ๐Ÿค– Assistenza AI: GitHub Copilot e Amazon Q genera codice Lambda, mentre Lambda orchestra l'inferenza generativa dell'IA attraverso Amazon roccia di fondo.

Cos'รจ AWS Lambda?

Prima di esplorare AWS Lambda, รจ utile capire cosa significa serverless.

Che cos'รจ Serverless?

Serverless รจ un termine che si riferisce generalmente alle applicazioni serverless. Le applicazioni serverless sono quelle che non necessitano di alcun server e non richiedono la gestione di server da parte dell'utente.

Cos'รจ AWS Lambda?

AWS Lambda รจ una piattaforma di elaborazione serverless basata sugli eventi fornita da Amazon come parte di Amazon Servizi Web. Pertanto, non devi preoccuparti di quali risorse AWS avviare o di come gestirle. Ti basta inserire il codice su Lambda e questo verrร  eseguito.

In AWS Lambda il codice viene eseguito in base alla risposta degli eventi nei servizi AWS come l'aggiunta o l'eliminazione di file in un bucket S3, una richiesta HTTP da Amazon API Gateway e eventi simili, tuttavia, Amazon Lambda puรฒ essere utilizzato solo per eseguire attivitร  in background.

Le funzioni AWS Lambda ti aiutano a concentrarti sul tuo prodotto principale e sulla logica aziendale, anzichรฉ sulla gestione del controllo degli accessi al sistema operativo (OS), sull'applicazione di patch, sul dimensionamento, sul provisioning, sulla scalabilitร  e cosรฌ via.

Come funziona AWS Lambda?

Il seguente esempio di AWS Lambda con diagramma a blocchi spiega il funzionamento di AWS Lambda in pochi semplici passaggi:

Diagramma a blocchi di AWS Lambda

Passo 1: Per prima cosa carica il tuo codice AWS Lambda in qualsiasi lingua supportata da AWS Lambda. Java, PythonGo e C# sono alcuni dei linguaggi supportati dalla funzione AWS Lambda.

Passo 2: Questi sono alcuni servizi AWS che ti consentono di attivare AWS Lambda.

Passo 3: AWS Lambda ti aiuta a caricare il codice e i dettagli dell'evento in base al quale deve essere attivato.

Passo 4: Esegue il codice AWS Lambda quando viene attivato dai servizi AWS.

Passo 5: AWS addebita i costi solo quando il codice AWS Lambda viene eseguito, e non altrimenti.

Ciรฒ accadrร  nei seguenti scenari:

  • Carica file in un bucket S3
  • Quando un endpoint HTTP get/post URL viene colpito
  • Per aggiungere, modificare ed eliminare tabelle Dynamo DB
  • Nel processo di raccolta dei flussi di dati
  • Notifica push
  • Hosting del sito web
  • Invio e-mail

Nota: รˆ importante ricordare che i servizi AWS vengono addebitati solo quando il codice AWS Lambda viene eseguito; in caso contrario, non รจ previsto alcun pagamento.

Eventi che attivano AWS Lambda

Ecco gli eventi che verranno attivati โ€‹โ€‹quando si utilizza AWS Lambda.

  • Inserimento, aggiornamento ed eliminazione di dati in una tabella DynamoDB
  • Per includere le notifiche push in SNS
  • Per cercare la cronologia dei log in CloudTrail
  • Ingresso in un oggetto S3
  • DynamoDB puรฒ attivare AWS Lambda ogni volta che vengono aggiunti, modificati ed eliminati dati nella tabella.
  • Ti aiuta a programmare l'evento per svolgere il compito secondo uno schema temporale regolare.
  • Modifiche agli oggetti nei bucket S3
  • Notifiche inviate da Amazon SNS.
  • AWS Lambda puรฒ essere utilizzato per elaborare i log di CloudTrail.
  • API Gateway ti consente di attivare AWS Lambda sui metodi GET/POST.

AWS Lambda Concepts

Funzionalitร : Una funzione รจ un programma o uno script eseguito in AWS Lambda. Lambda passa gli eventi di invocazione alla tua funzione, che elabora un evento e restituisce la sua risposta.

Autonomia: Il runtime consente funzioni in vari linguaggi che vengono eseguite sullo stesso ambiente di esecuzione di base. Questo ti aiuta a configurare la tua funzione nel runtime. Corrisponde anche alla tua selezione linguaggio di programmazione.

Origine evento: Un'origine evento รจ un servizio AWS, ad esempio Amazon SNS, ovvero un servizio personalizzato. Questo trigger aiuta la funzione a eseguire la sua logica.

Strati Lambda: I livelli Lambda sono un importante meccanismo di distribuzione per librerie, runtime personalizzati e altre importanti dipendenze di funzioni. Questo componente AWS ti aiuta inoltre a gestire il codice della funzione di sviluppo separatamente dal codice immutabile e dalle risorse che utilizza.

Flussi di registro: Log Stream consente di annotare il codice delle funzioni con istruzioni di logging personalizzate che aiutano ad analizzare il flusso di esecuzione e le prestazioni delle funzioni AWS Lambda.

Come utilizzare AWS Lambda

Ora impareremo come utilizzare AWS Lambda con un esempio pratico:

Passo 1) Apri AWS Lambda URL

Vai su https://aws.amazon.com/lambda/ e iniziamo.

Come utilizzare AWS Lambda

Passo 2) Creare un account

Successivamente, crea un account o accedi con il tuo account esistente.

Come utilizzare AWS Lambda

Passo 3) Modifica il codice e fai clic su Esegui

Nella pagina Lambda successiva, modifica il codice e fai clic su Esegui.

Passo 4) Controlla l'output

Vedrai il risultato.

Come utilizzare AWS Lambda

AWS Lambda rispetto ad AWS EC2

Ecco alcune differenze principali tra AWS Lambda e EC2.

Scheda Sintetica AWS Lambda AWS EC2
Definizione AWS Lambda รจ una piattaforma come servizio (PaaS). Ti aiuta a eseguire ed eseguire il tuo codice backend. AWS EC2 รจ un'infrastruttura come servizio (IaaS). Fornisce risorse di calcolo virtualizzate.
Flessibilitร  Non offre alcuna flessibilitร  per l'accesso alle istanze di calcolo. Consente di scegliere un sistema operativo o un ambiente di runtime del linguaggio personalizzato. Offre la flessibilitร  di selezionare una varietร  di istanze, sistemi operativi personalizzati, patch di sicurezza, rete, ecc.
Processo di installazione รˆ necessario selezionare l'ambiente in cui si desidera eseguire il codice e caricarlo su AWS Lambda. Per la prima volta in EC2, devi scegliere il sistema operativo e installare tutto il software richiesto, quindi inserire il codice in EC2.
Restrizioni ambientali รˆ limitato a poche lingue. Nessuna restrizione ambientale.

AWS Lambda vs AWS Elastic Beanstalk

Ecco alcune delle principali differenze tra AWS Lambda ed Elastic Beanstalk.

Scheda Sintetica AWS Elastic Beanstalk AWS Lambda
Compito principale Distribuisci e gestisci le app su AWS Cloud senza preoccuparti dell'infrastruttura che esegue tali applicazioni. AWS Lambda viene utilizzato per eseguire il codice back-end. Non รจ possibile utilizzarlo per distribuire un'applicazione.
Selezione delle risorse AWS Ti offre la libertร  di selezionare le risorse AWS; ad esempio, puoi scegliere un'istanza EC2 ottimale in base alla tua applicazione. Non รจ possibile selezionare le risorse AWS, come ad esempio il tipo di istanza EC2; Lambda offre risorse in base al carico di lavoro.
Tipo di sistema รˆ un sistema statale. รˆ un sistema apolide.

Casi d'uso di AWS Lambda

AWS Lambda viene utilizzato per un'ampia gamma di applicazioni, tra cui:

  • Ti aiuta con il Processo ETL
  • Consente di eseguire l'elaborazione dei file in tempo reale e l'elaborazione del flusso in tempo reale
  • Utilizzare per creare applicazioni web
  • Usare in Amazon prodotti come Alexa Chatbots e Amazon Eco/Alexa
  • Elaborazione dei dati (analisi di streaming in tempo reale)
  • Backup automatici delle attivitร  quotidiane
  • Backend scalabili (app per dispositivi mobili, dispositivi IoT)
  • Ti aiuta a eseguire la logica di backend lato server
  • Consente di filtrare e trasformare i dati

migliori pratiche della funzione Lambda

Ecco alcune best practice per le funzioni AWS Lambda:

  • Utilizza il "timeout" corretto.
  • Sfrutta le funzionalitร  della memoria locale, che ha una dimensione di 500 MB nella cartella /temp.
  • Ridurre al minimo l'utilizzo di codice di avvio non direttamente correlato all'elaborazione dell'evento corrente.
  • Dovresti utilizzare il monitoraggio CloudWatch integrato delle funzioni Lambda per visualizzare e ottimizzare le latenze delle richieste.

Quando non utilizzare AWS Lambda

Di seguito sono elencate le situazioni in cui Lambda non รจ certamente la soluzione ideale:

  • Non รจ appropriato utilizzare AWS Lambda per pacchetti software o applicazioni che dipendono dalla chiamata di funzioni sottostanti Windows Chiamate in linea (RPC).
  • Se viene utilizzato per applicazioni software personalizzate con accordi di licenza come l'elaborazione di documenti MS-Office, Oracle banche dati, ecc.
  • AWS Lambda non deve essere utilizzato per processi hardware personalizzati come l'accelerazione GPU e l'affinitร  hardware.

Vantaggi dell'utilizzo di AWS Lambda

Ecco i vantaggi/benefici dell'utilizzo di AWS Lambda:

  • AWS Lambda รจ uno strumento estremamente flessibile.
  • Consente di concedere l'accesso alle risorse, incluse le VPC.
  • Autore direttamente con un WYSIWRedattore YG nella consolle.
  • Puoi usarlo come plugin per Eclipse and Di Visual Studio.
  • Trattandosi di un'architettura serverless, non รจ necessario preoccuparsi della gestione o del provisioning dei server.
  • Non รจ necessario configurarne alcuno Macchina virtuale.
  • Aiuta gli sviluppatori a eseguire ed eseguire la risposta del codice agli eventi senza costruire alcuna infrastruttura.
  • Dovrai pagare solo per il tempo di elaborazione effettivo, ovvero solo quando il tuo codice viene eseguito.
  • Puoi monitorare le prestazioni del tuo codice in tempo reale tramite CloudWatch.
  • Consente di eseguire il codice senza dover configurare o gestire alcun altro server.
  • Consente di eseguire il codice solo quando necessario.
  • Puoi ridimensionarlo automaticamente per gestire poche richieste al giorno e persino supportare piรน di migliaia di richieste al secondo.
  • AWS Lambda puรฒ essere configurato con l'aiuto di timer di eventi esterni per eseguire attivitร  pianificate.
  • In AWS, le funzioni Lambda devono essere configurate con eventi e timer esterni per poter essere utilizzate nella pianificazione.
  • Le funzioni Lambda sono stateless, quindi possono essere scalate rapidamente.
  • AWS Lambda รจ veloce, quindi eseguirร  il tuo codice in pochi millisecondi.

Limitazioni di AWS Lambda

Ecco i contro/svantaggi dell'utilizzo di AWS Lambda:

  • Lo strumento AWS Lambda non รจ adatto a piccoli progetti.
  • AWS Lambda si basa interamente su AWS per l'infrastruttura, quindi non รจ possibile installare alcun software aggiuntivo se il codice lo richiede.
  • L'esecuzione simultanea ha un limite predefinito di 1,000 per regione, che puรฒ essere aumentato su richiesta.
  • La sua capacitร  di memoria puรฒ variare tra 128 MB e 10,240 MB.
  • La richiesta di evento non deve superare i 128 KB.
  • Le funzioni Lambda ti aiutano a scrivere i relativi log solo in CloudWatch. Questo รจ l'unico strumento che ti consente di monitorare o risolvere i problemi delle tue funzioni.
  • Il tempo di esecuzione del codice รจ limitato a 15 minuti.

DOMANDE FREQUENTI

AWS Lambda supporta nativamente Node.js, Python, JavaGo, C#, PowerShell e Ruby. Un'API di runtime e il supporto per le immagini container consentono di eseguire praticamente qualsiasi altro linguaggio, quindi i team raramente sono limitati dal loro stack preferito.

AWS Lambda include un livello gratuito permanente di un milione di richieste e 400,000 GB-secondi di potenza di calcolo al mese. Oltre tale limite, si paga solo per le richieste e per il tempo di calcolo effettivamente utilizzato dal codice, con fatturazione al millisecondo.

Un avvio a freddo รจ il breve ritardo quando Lambda inizializza un nuovo ambiente di esecuzione per una funzione che รจ rimasta inattiva. Puoi ridurlo con la concorrenza con provisioning, pacchetti piรน piccoli o SnapStart per Java funzioni.

Sรฌ. Oltre a caricare un archivio ZIP, Lambda consente di impacchettare una funzione come immagine container fino a 10 GB. Questo รจ adatto a dipendenze piรน grandi e librerie di machine learning, mantenendo al contempoping lo stesso modello di esecuzione serverless basato sugli eventi.

Lambda esegue funzioni brevi e basate su eventi con scalabilitร  automatica e fatturazione al millisecondo. AWS Fargate esegue carichi di lavoro containerizzati di durata maggiore senza la necessitร  di gestire server. Scegli Lambda per risposte rapide agli eventi e Fargate per attivitร  containerizzate stabili e di lunga durata.

Sรฌ. Lambda alimenta comunemente le applicazioni di IA eseguendo inferenze leggere e orchestrando le chiamate a servizi come Amazon Bedrock e SageMaker. Il supporto per le immagini container aiuta a impacchettare le librerie di machine learning, mentre Lambda gestisce il dimensionamento della pipeline di intelligenza artificiale generativa.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub scrive funzioni di gestione da un commento o da un nome, mentre Amazon Q Developer aggiunge supporto specifico per AWS per le policy IAM, CloudFormation e le chiamate SDK, velocizzando lo sviluppo serverless.

Assegna a ciascuna funzione un ruolo IAM con privilegi minimi, archivia i segreti in variabili d'ambiente crittografate o in Secrets Manager e posiziona le funzioni sensibili all'interno di una VPC. CloudWatch e CloudTrail registreranno quindi l'attivitร  per il monitoraggio e la verifica.

Riassumi questo post con: