AWS Lambda - Introduzione
AWS Lambda è un servizio che si occupa di elaborare il tuo codice senza alcun server. Si dice che sia calcolo senza 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 di Amazon DynamoDBtables, la richiesta HTTP dal gateway Amazon Api ecc.
Il codice AWS Lambda può essere scritto in NodeJS, Java, C #, Python e Go. Questo capitolo parlerà in dettaglio della creazione della funzione AWS Lambda nella console AWS.
Console AWS
Accedi alla Console AWS al link https://aws.amazon.com/console. Una volta effettuato l'accesso, verrai reindirizzato alla schermata in cui vengono visualizzati i servizi AWS.
Esempio: creazione di una funzione
Cerchiamo di capire la funzionalità della Console AWS con l'aiuto di un esempio. Fare clic su Lambda (contrassegnato sopra), verrà reindirizzato per creare la funzione come mostrato di seguito -
Clic Create function e lo schermo visualizza i seguenti dettagli:
Nota che, per impostazione predefinita, l'opzione è Author from scratch. Questa opzione ti consente di scrivere il codice Lambda da zero. Avrà solo una semplice funzione conhello world Messaggio.
La seconda opzione Blue prints ha i seguenti dettagli.
Fornisce dettagli sul codice già scritto per alcuni dei servizi aws nelle lingue disponibili con AWS Lambda. Nel caso in cui sia necessario scrivere codice AWS Lambda per qualsiasi servizio di cui è possibile effettuare il check-inblue prints e inizia.
La terza opzione Serverless Application Repository ha la configurazione dell'applicazione serverless che aiuterà a distribuire il codice AWS Lambda.
Nella discussione successiva, lavoreremo sulla prima opzione in cui creiamo la funzione lambda AWS utilizzando Author from scratch.
Prima di creare la funzione Lambda, sarà necessario un ruolo, ovvero l'autorizzazione per lavorare con i servizi AWS e aws lambda. Successivamente il ruolo deve essere assegnato alla funzione lambda aws.
Creazione di ruoli nella Console AWS
Per creare un ruolo nella Console AWS, vai ai servizi della console AWS e fai clic su IAM come mostrato di seguito:
Ora, se fai clic su IAM, apparirà la schermata come mostrato di seguito -
Se selezioni Roles, puoi vedere i seguenti pulsanti sullo schermo:
Ora fai clic su Create role. Ti chiederà di scegliere il servizio in cui devi utilizzare il ruolo creato.
Poiché dobbiamo utilizzare questo ruolo con AWS Lambda, seleziona Lambda e fare clic Next:Permissionspulsante come mostrato sopra. La schermata successiva mostra il nome della policy disponibile per i servizi AWS. Puoi selezionare la polizza da qui -
Ad esempio, se desideri l'autorizzazione affinché AWS Lambda funzioni con S3 e DynamoDB, devi selezionare la policy. Nella casella di ricerca, inserisci il servizio AWS e fai clic sulla casella di controllo. È possibile selezionare più criteri e successivamente fare clic suNext:Review.
È anche possibile creare criteri personalizzati. Ad esempio, esiste una tabella dynamodb e devi dare l'autorizzazione solo a quella tabella, in questi casi puoi creare criteri.
Clicca su Create policycome mostrato nella schermata sopra. Di seguito sono riportati i dettagli visualizzati sullo schermo.
Scegli un Serviceper cui stai creando la policy. Successivamente verranno visualizzati i dati per le azioni,resources e Request conditions.
Ora dovremmo scegliere il servizio. Cerchiamo di selezionareAWS Dynamodb dalla ricerca. Actions ha i seguenti dettagli:
Ora, inserisci il file Access levelche vuoi dare a DynamoDB. Poi,resources mostrerà i seguenti dettagli:
Ora seleziona il tipo di risorsa della tabella. Puoi vedere il seguente output:
Per il permesso sul tavolo, è necessario Add ARN. L'ARN è i dettagli univoci per la tabella creata in AWS DynamoDB. Otterrai i dettagli quando la tabella viene creata in dynamodb.
Se fai clic su Add ARN e mostrerà i seguenti dettagli:
Ora, se inserisci il file ARN e il Region, Account e Tablenome verrà popolato. Dovresti fare clicAddpulsante per aggiungere la politica. Allo stesso modo, puoi creare criteri per altri servizi.
Qui abbiamo selezionato due criteri AmazonS3FullAccess e AmazonDynamoDBFullACcess. Abbiamo dato pieno accesso a S3 e DynamoDB in quel ruolo. Tuttavia, si suggerisce di concedere l'autorizzazione solo ai bucket e alle tabelle necessari.
È possibile seguire i passaggi discussi in precedenza per creare i criteri utilizzando ARN.
Passo 1
Clic Create rolepulsante per creare il ruolo. Tutti i ruoli creati vengono visualizzati come mostrato -
Passo 2
Tieni presente che puoi selezionare il ruolo di cui hai bisogno nel caso in cui sia necessaria una modifica per il ruolo creato. Se selezioniamoAuthor from scratch option, devi entrare Name, Runtime and Role.
Passaggio 3
È possibile osservare i seguenti dettagli in Runtime menu a discesa -
Passaggio 4
È possibile selezionare il runtime di propria scelta e procedere come mostrato.
Role il menu a discesa ha le seguenti opzioni:
Choose an existing role − Verranno visualizzati tutti i ruoli creati nei ruoli IAM.
Create new role from template(s) −Ciò ti consentirà di creare un ruolo e mostrerà l'autorizzazione per essere selezionato per quel ruolo. Osserva lo screenshot per una migliore comprensione.
Create a custom role − Ciò consente all'utente di creare criteri come abbiamo discusso in precedenza.
Passaggio 5
Seleziona il runtime, rolee aggiungi la funzione. Clicca suCreate functionpulsante per creare la funzione lambda. La schermata successiva visualizzata è la seguente:
Parti della funzione AWS Lambda
Esistono due parti per la funzione AWS Lambda:Configuration e Monitoring. Cerchiamo di discutere ciascuno in dettaglio.
Configurazione
Le seguenti funzionalità sono incluse nella configurazione.
Add Triggers
I trigger necessari per l'aggiunta alla funzione AWS Lambda vengono visualizzati come segue:
Tieni presente che quando selezioniamo un trigger, dobbiamo aggiungere i dettagli di configurazione per quel trigger. Ad esempio per il trigger S3, dobbiamo selezionare il nome del bucket; per il trigger Dynamodb dobbiamo selezionare il nome della tabella.
Esempio
Vediamo un esempio di dettagli di configurazione per un trigger S3 -
Ora aggiungi i dettagli di configurazione per il trigger S3 aggiunto -
Qui è necessario selezionare il file bucket name, event type su cui si desidera attivare Lambda, prefisso e pattern di filtro se presenti e Add il grilletto.
Aggiunta di codice in Lambda
Ora dovremmo concentrarci sul codice Lambda da scrivere. Per aggiungere codice in aws lambda ci sono tre opzioni:
- Utilizzando l'editor in linea
- Utilizzando il file .zip
- Carica il file da Amazon S3
È mostrato nella schermata riportata di seguito:
Cerchiamo di discutere ciascuno di essi in dettaglio.
Using the inline editor
L'editor di codice in linea in cui puoi scrivere il codice è il seguente:
Puoi scrivere il tuo codice scegliendo la lingua che preferisci. Puoi scegliere nuovamente il runtime qui.
Osservare la seguente schermata per una migliore comprensione:
Il codice deve essere scritto index.js.Handler. I dettagli differiranno in base al runtime. Pernodejs, è filename.export function che è adesso index.lambda handler.
Upload a .ZIP file
Puoi prima scrivere il codice, comprimerlo e caricare il file zip selezionando Upload a .ZIP file.
Upload a file from Amazon S3
Puoi caricare il file nel bucket S3 e scegliere l'opzione Upload a file from Amazon S3.
Nota che per .ZIP e S3 non sarà possibile modificare il runtime.
Variabili ambientali
Prendono coppie di valori chiave e le condividono con il codice AWS Lambda. Possiamo utilizzare le variabili di ambiente in AWS Lambda per archiviare i dettagli della connessione al database, i dettagli del file per memorizzare l'output, i dettagli del file di registro ecc.
Tag
Sono coppie chiave-valore aggiunte ad AWS Lambda per organizzare meglio la funzione quando utilizzata in diverse regioni. Per un semplice caso d'uso, non è richiesto. Quando sono state create molte funzioni Lambda, il tagging aiuta a filtrare e gestire le funzioni Lambda.
Ruolo di esecuzione
È possibile modificare nuovamente il ruolo qui se non eseguito correttamente all'inizio della creazione della funzione Lambda. Puoi aggiornare o creare un nuovo ruolo qui. Fornisce le stesse opzioni che sono state visualizzate all'inizio della creazione della funzione Lambda.
Impostazioni di base
Qui devi inserire la breve descrizione di ciò che sta facendo la tua funzione Lambda. Selezionare la memoria e il timeout richiesti per la funzione Lambda.
Rete
Ciò ti consente di selezionare il VPC che ti consentirà di accedere alla funzione Lambda dal VPC. Per impostazione predefinita, non è selezionato alcun VPC.
Debug e gestione degli errori
Per il debug e la gestione degli errori, puoi selezionare il servizio AWS per inviare i dettagli. Le opzioni disponibili sonoNone, SNS e SQS.
Concorrenza
Ciò consente di allocare un limite specifico di esecuzioni simultanee consentite per questa funzione.
Auditing e conformità
Questo contiene i log che vengono gestiti con l'aiuto di AWS CloudTrail.
Una volta terminato, è necessario salvare le modifiche utilizzando il pulsante Salva come mostrato qui -
Ora, se fai clic su Testpulsante, richiederà un evento di prova. È possibile superare un evento di test di esempio come segue:
L'evento di test creato è come mostrato qui -
Ora salva l'evento di test e fai clic sul pulsante di test per vedere l'esecuzione della funzione AWS Lambda -
Il codice per index.js è il seguente -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log(event.key1);
console.log(event.key2);
console.log(event.key3);
callback(null, 'Lambda test');
};
Notare che la funzione di callback viene chiamata quando si verifica un errore o il successo. In caso di successo, puoi vedereLambda test verrà visualizzato.
Monitoraggio
Seleziona la scheda monitoraggio per visualizzare i dettagli di esecuzione della funzione Lambda. I grafici mostrano i dettagli del tempo di esecuzione, degli errori verificatisi ecc.
Puoi anche visualizzare i log in Cloudwatch. Per questo, vai ai servizi AWS e seleziona cloudwatch come mostrato -
Ora, seleziona i registri dal lato sinistro e inserisci il nome della funzione nel filtro -