Introduzione
Questo laboratorio dimostra come creare un’infrastruttura serverless che monitori l’infrastruttura cloud e risponda agli eventi.
Nella prima parte di questo laboratorio, imparerai a usare una funzione AWS Lambda con Amazon CloudWatch Events che reagisca alla creazione di un’istanza Amazon EC2.
Nella seconda parte del laboratorio, creerai una funzione AWS Lambda che monitori un sito web e ti avvisi quando non risponde correttamente.
Argomenti trattati
Alla fine di questo laboratorio sarai in grado di:
- creare una funzione AWS Lambda;
- configurare Amazon CloudWatch Events;
- configurare un allarme Amazon CloudWatch;
- configurare Amazon Simple Notification Service (SNS) per inviare notifiche.
Competenze tecniche preliminari
Per completare con successo questo laboratorio, devi avere familiarità con Amazon EC2. Occorre avere competenze di programmazione in Node.js, sebbene venga fornito il codice completo della soluzione.
Legenda icone
In questo laboratorio vengono utilizzate varie icone per richiamare l’attenzione su diversi tipi di istruzioni e note. Nell’elenco seguente viene illustrato lo scopo di ciascuna di esse:
- Output previsto: un output di esempio che puoi utilizzare per verificare l’output di un comando o di un file modificato.
- Nota: una nota, un suggerimento o indicazioni importanti.
- Aggiorna: un momento in cui potrebbe essere necessario aggiornare un elenco o una pagina del browser web per mostrare nuove informazioni.
Altri servizi AWS
In conformità alla policy IAM, i servizi AWS diversi da quelli necessari per questo laboratorio sono disabilitati per la durata dell’accesso al laboratorio stesso. Inoltre, le funzionalità dei servizi utilizzati nel laboratorio sono limitate allo stretto necessario. In alcuni casi sono soggette a ulteriori restrizioni ai fini della riuscita del laboratorio stesso. Pertanto, se proverai ad accedere ad altri servizi o a eseguire operazioni al di fuori di quelle richieste dal laboratorio, riceverai messaggi di errore.
Introduzione alle tecnologie
AWS Lambda
AWS Lambda è un servizio che fornisce capacità di elaborazione ridimensionabile nel cloud per semplificare l’elaborazione su scala web per gli sviluppatori. Puoi caricare il tuo codice su AWS Lambda e il servizio può eseguire il codice per tuo conto utilizzando l’infrastruttura AWS. AWS Lambda supporta diversi linguaggi di programmazione quali Node.js, Java e Python.
Dopo aver caricato il codice e creata una funzione Lambda, AWS Lambda si occuperà del provisioning e della gestione dei server utilizzati per eseguire il codice. In questo laboratorio, utilizzerai AWS Lambda come servizio di elaborazione basato su eventi in cui AWS Lambda esegue il tuo codice in risposta alle modifiche apportate ai dati in un topic SNS e un bucket Amazon S3.
Puoi usare AWS Lambda in due modi:
- Come servizio di elaborazione basata su eventi in cui AWS Lambda esegue il codice in risposta a eventi, come ad esempio il caricamento di file immagine (come vedremo nel corso di questo laboratorio).
- Come servizio di elaborazione per eseguire il codice in risposta alle richieste HTTP utilizzando Amazon API Gateway o chiamate API.
Lambda fornisce agli utenti i benefici economici delle risorse su vasta scala di Amazon. AWS Lambda esegue il codice solo quando necessario e si adatta in modo automatico al numero delle richieste, che si tratti di poche al giorno o di migliaia al secondo. Grazie a queste caratteristiche, puoi usare Lambda per lanciare facilmente elaborazioni di dati per i servizi AWS come Amazon S3 e Amazon DynamoDB, elaborare i dati di streaming archiviati in Amazon Kinesis o creare un back-end che operi su dimensioni, prestazioni e sicurezza di AWS.
Blueprint AWS Lambda
I blueprint sono configurazioni di esempio di origini evento e funzioni Lambda che eseguono un’elaborazione automatica minima. La maggior parte dei blueprint elabora gli eventi da origini evento specifiche, ad esempio Amazon S3 o DynamoDB. Ad esempio, se selezioni un blueprint s3-get-object, viene fornito un codice di esempio che elabora un evento creato da un oggetto pubblicato da Amazon S3 che Lambda riceve come parametro.
Quando crei una nuova funzione AWS Lambda, puoi utilizzare un blueprint che meglio si presta al tuo scenario. Puoi quindi personalizzare il blueprint in base alle esigenze. Non è necessario utilizzare un blueprint (puoi creare una funzione Lambda e configurare un’origine eventi separatamente).
Amazon CloudWatch
CloudWatch Events eroga un flusso quasi in tempo reale di eventi di sistema che descrivono le modifiche alle risorse AWS. Sfruttando semplici regole configurabili in un paio di minuti, è possibile eseguire il routing di ciascun tipo di evento verso uno o più target, incluse le funzioni AWS Lambda con meno sovraccarico e maggiore efficienza. Puoi pensare a CloudWatch Events come un sistema nervoso centrale per il tuo ambiente AWS. È collegato ai servizi supportati ed è consapevole delle modifiche operative quando queste accadono. Poi, guidato dalle regole, attiva funzioni e invia messaggi per rispondere all’ambiente.
Amazon Simple Notification Service (SNS)
Amazon SNS è un servizio di notifiche che consente di evitare la complessità delle soluzioni di messaggistica personalizzate e le spese di licenza dei software che richiedono gestione e manutenzione in loco. Viene eseguito all’interno dell’infrastruttura e dei data center di Amazon, perciò i topicsaranno immediatamente disponibili quando richiesti dalle applicazioni. Per evitare la perdita di messaggi, tutti i messaggi pubblicati in Amazon SNS vengono memorizzati in modo ridondante su più server e data center. Amazon SNS permette alle applicazioni e agli utenti finali su diversi dispositivi di ricevere notifiche push, HTTP/HTTPS, E-mail/E-mail-JSON, SMS o code Amazon SQS o funzioni AWS Lambda.