AWS Lambda - Panoramica
AWS Lambdaè un servizio che esegue l'elaborazione senza server, che implica l'elaborazione senza alcun server. Il codice viene eseguito in base alla risposta di eventi nei servizi AWS come l'aggiunta / rimozione di file nel bucket S3, l'aggiornamento delle tabelle Amazon Dynamo dB, la richiesta HTTP dal gateway API Amazon ecc.
Per iniziare a lavorare con AWS Lambda, dobbiamo solo eseguire il push del codice nel servizio AWS Lambda. Tutte le altre attività e risorse come infrastruttura, sistema operativo, manutenzione del server, monitoraggio del codice, log e sicurezza sono a carico di AWS.
AWS Lambdasupporta linguaggi come Java, NodeJS, Python, C # e Go. Tieni presente che AWS Lambda funzionerà solo con i servizi AWS.
Cos'è AWS Lambda?
La definizione di AWS Lambda fornita dalla sua documentazione ufficiale è la seguente:
AWS Lambda è un servizio di elaborazione che ti consente di eseguire codice senza eseguire il provisioning o gestire i server. AWS Lambda esegue il codice solo quando necessario e scala automaticamente, da poche richieste al giorno a migliaia al secondo. Paghi solo per il tempo di elaborazione che consumi: non ci sono costi quando il codice non è in esecuzione.
Come funziona AWS Lambda?
Di seguito è mostrato il diagramma a blocchi che spiega il funzionamento di AWS Lambda in cinque semplici passaggi:
Step 1 − Carica il codice lambda AWS in uno dei linguaggi supportati da AWS lambda, ovvero NodeJS, Java, Python, C # e Go.
Step 2 − Questi sono alcuni servizi AWS su cui è possibile attivare AWS lambda.
Step 3 −AWS Lambda che contiene il codice di caricamento e i dettagli dell'evento su cui si è verificato il trigger. Ad esempio, evento da Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, app mobile ecc.
Step 4 − Esegue AWS Lambda Code solo quando attivato dai servizi AWS in scenari quali:
- L'utente carica i file nel bucket S3
- Viene raggiunto l'URL dell'endpoint http get / post
- i dati vengono aggiunti / aggiornati / eliminati nelle tabelle dinamo dB
- notifica push
- raccolta di flussi di dati
- hosting del sito web
- invio di email
- app mobile, ecc.
Step 5 − Ricorda che AWS addebita solo quando viene eseguito il codice lambda AWS e non altrimenti.
Vantaggi dell'utilizzo di AWS Lambda
AWS Lambda offre molteplici vantaggi quando ci lavori. Questa sezione li discute in dettaglio:
Facilità di lavorare con il codice
AWS Lambda ti offre l'infrastruttura per caricare il tuo codice. Si occupa di mantenere il codice e attiva il codice ogni volta che si verifica l'evento richiesto. Consente di scegliere la memoria e il timeout necessari per il codice.
AWS Lambda può anche eseguire richieste parallele in base ai trigger di evento.
Fornitura log
AWS Lambda fornisce i dettagli del numero di volte in cui un codice è stato eseguito e del tempo impiegato per l'esecuzione, della memoria consumata, ecc. AWS CloudWatch raccoglie tutti i log, il che aiuta a comprendere il flusso di esecuzione e nel debug del codice.
Fatturazione basata sull'utilizzo
La fatturazione di AWS Lambda viene eseguita in base all'utilizzo della memoria, alla richiesta effettuata e all'esecuzione, fatturata in incrementi di almeno 100 ms. Quindi, per un'esecuzione di 500 ms, la fatturazione avverrà ogni 100 ms. Se specifichi il tuo codice lambda AWS da eseguire in 500 ms e il tempo necessario per l'esecuzione è di soli 200 ms, AWS ti addebiterà solo il tempo impiegato, ovvero 200 ms di esecuzione invece di 500 ms. AWS addebita sempre il tempo di esecuzione utilizzato. Non è necessario pagare se la funzione non viene eseguita.
Supporto multilingue
AWS Lambda supporta linguaggi popolari come Node. js, Python, Java, C # e Go. Si tratta di linguaggi ampiamente utilizzati e qualsiasi sviluppatore troverà facile scrivere codice per AWS Lambda.
Facilità di creazione e distribuzione del codice
Sono disponibili molte opzioni per Lambda per la creazione e la distribuzione del codice. Per scrivere il codice, puoi utilizzare l'editor online di AWS, l'IDE di Visual Studio o l'IDE di Eclipse. Supporta anche il framework serverless che semplifica la scrittura e la distribuzione del codice AWS Lambda. Oltre alla console AWS, abbiamo AWS-cli per creare e distribuire codice.
Altre caratteristiche
Puoi utilizzare AWS Lambda gratuitamente ottenendo un accesso al livello gratuito di AWS. Ti offre un servizio gratuito per 1 anno. Dai un'occhiata ai servizi gratuiti offerti dal livello gratuito di AWS.
Svantaggi dell'utilizzo di AWS Lambda
Nonostante molti vantaggi, AWS Lambda presenta i seguenti svantaggi:
Non è adatto per piccoli progetti.
È necessario analizzare attentamente il codice e decidere la memoria e il timeout. Nel caso in cui la tua funzione abbia bisogno di più tempo di quello allocato, verrà terminata secondo il timeout specificato su di essa e il codice non verrà eseguito completamente.
Poiché AWS Lambda si basa completamente su AWS per l'infrastruttura, non è possibile installare alcun software aggiuntivo se il codice lo richiede.
Eventi che attivano AWS Lambda
Gli eventi che possono attivare AWS Lambda sono i seguenti:
- Entrata in un oggetto S3
- Inserimento, aggiornamento e cancellazione dei dati nella tabella Dynamo DB
- Notifiche push da SNS
- GET / POST chiamate a API Gateway
- Modifica delle intestazioni al visualizzatore o richiesta / risposta di origine in CloudFront
- Voci di registro nel flusso di dati AWS Kinesis
- Registra la cronologia in CloudTrail
Casi d'uso di AWS Lambda
AWS Lambda è un servizio di elaborazione utilizzato principalmente per eseguire processi in background. Può attivarsi se utilizzato con altri servizi AWS. Di seguito è riportato l'elenco dei servizi AWS in cui è possibile utilizzare AWS Lambda:
Oggetto S3 e AWS Lambda
Amazon S3 trasmette i dettagli dell'evento ad AWS Lambda quando è presente un caricamento di file in S3. I dettagli del caricamento del file o dell'eliminazione del file o dello spostamento del file vengono trasmessi ad AWS Lambda. Il codice in AWS Lambda può eseguire il passaggio necessario per quando riceve i dettagli dell'evento. Ad esempio la creazione di una miniatura dell'immagine inserita in S3.
DynamoDB e AWS Lambda
DynamoDB può attivare AWS Lambda quando sono presenti dati aggiunti, aggiornati ed eliminati nella tabella. L'evento AWS Lambda contiene tutti i dettagli della tabella AWS DynamoDB relativa all'inserimento / aggiornamento o all'eliminazione.
API Gateway e AWS Lambda
API Gateway può attivare AWS Lambda sui metodi GET / POST. Possiamo creare un modulo e condividere i dettagli con l'endpoint API Gateway e utilizzarlo con AWS Lambda per ulteriori elaborazioni, ad esempio, inserendo i dati nella tabella DynamoDB.
SNS e AWS Lambda
L'SNS viene utilizzato per la notifica push, l'invio di SMS, ecc. Possiamo attivare AWS lambda quando si verificano notifiche push in SNS. Possiamo anche inviare SMS al numero di telefono da AWS Lambda quando riceve il trigger.
Eventi pianificati e AWS Lambda
Gli eventi pianificati possono essere utilizzati per i lavori cron. Può attivare AWS Lambda per eseguire l'attività in base a uno schema temporale regolare.
CloudTrail e AWS Lambda
CloudTrail può essere utile per monitorare i log sull'account. Possiamo utilizzare AWS Lambda per elaborare ulteriormente i log di CloudTrail.
Kinesis e AWS Lambda
Kinesis viene utilizzato per acquisire / archiviare dati di tracciamento in tempo reale provenienti da clic del sito Web, log, feed di social media e un trigger per AWS Lambda può eseguire un'elaborazione aggiuntiva su questi log.
CloudFront e Lambda @ Edge
CloudFront è una rete di distribuzione dei contenuti in cui è possibile ospitare il proprio sito Web e Lambda @ Edge può essere utilizzato per elaborare le intestazioni provenienti dalla richiesta del visualizzatore, dalla richiesta di origine, dalla risposta dell'origine e dalla risposta del visualizzatore. La modifica delle intestazioni include attività come la modifica dei dati dei cookie, la riscrittura dell'URL, utilizzata per i test AB per modificare la risposta inviata all'utente, l'aggiunta di informazioni aggiuntive sulle intestazioni per motivi di sicurezza, ecc.