Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Poiché Lambda è un servizio di elaborazione senza server e basato sugli eventi, utilizza un paradigma di programmazione diverso rispetto alle applicazioni Web tradizionali. Se non conosci Lambda o lo sviluppo serverless, le sezioni seguenti descrivono alcuni concetti fondamentali che ti aiuteranno a iniziare il tuo percorso di apprendimento. Oltre a una spiegazione di ogni concetto, le sezioni contengono anche collegamenti a tutorial, documentazione dettagliata e altre risorse che puoi utilizzare per ampliare la tua comprensione di ogni argomento.
In questa pagina, scoprirai quanto segue:
-
Funzioni Lambda: gli elementi costitutivi di base di Lambda utilizzati per creare applicazioni
-
Runtime Lambda: gli ambienti specifici del linguaggio in cui vengono eseguite le funzioni
-
Trigger e mappature delle sorgenti degli eventi: modi in cui altri possono richiamare le tue funzioni in risposta Servizi AWS a eventi specifici
-
L'oggetto evento: un oggetto JSON contenente i dati degli eventi che la funzione deve elaborare
-
Autorizzazioni Lambda: il modo in cui controlli con quali altre funzioni possono interagire e chi può accedere alle Servizi AWS tue funzioni
Suggerimento
Se vuoi iniziare a comprendere lo sviluppo serverless più in generale, consulta Comprendere la differenza tra sviluppo tradizionale e serverless nella Serverless Developer Guide.AWS
Funzioni Lambda
In Lambda, le funzioni sono gli elementi costitutivi fondamentali utilizzati per creare applicazioni. Una funzione Lambda è una parte di codice che viene eseguita in risposta a eventi, come un utente che fa clic su un pulsante su un sito Web o un file che viene caricato in un bucket Amazon Simple Storage Service (Amazon S3). Puoi pensare a una funzione come a una sorta di programma autonomo con le seguenti proprietà.
-
Una funzione ha un lavoro o uno scopo specifico
-
Vengono eseguite solo quando necessario in risposta a eventi specifici
-
Smettono automaticamente di funzionare al termine
Quando una funzione viene eseguita in risposta a un evento, Lambda esegue la funzione di gestione della funzione. I dati sull'evento che ha causato l'esecuzione della funzione vengono passati direttamente al gestore. Sebbene il codice di una funzione Lambda possa contenere più di un metodo o una funzione, le funzioni Lambda possono avere un solo gestore.
Per creare una funzione Lambda, raggruppa il codice della funzione e le sue dipendenze in un pacchetto di distribuzione. Lambda supporta due tipi di pacchetti di distribuzione, archivi di file.zip e immagini di container.
Per comprendere meglio le funzioni Lambda, ti consigliamo di iniziare completando il Crea la tua prima funzione Lambda tutorial, se non l'hai già fatto. Questo tutorial fornisce maggiori dettagli sulla funzione di gestione e su come trasferire dati in entrata e in uscita dalla funzione. Fornisce inoltre un'introduzione alla creazione di registri delle funzioni.
Ambiente di esecuzione e tempi di esecuzione Lambda
Le funzioni Lambda vengono eseguite all'interno di un ambiente di esecuzione sicuro e isolato che Lambda gestisce per te. Questo ambiente di esecuzione gestisce i processi e le risorse necessari per eseguire la funzione. Quando una funzione viene richiamata per la prima volta, Lambda crea un nuovo ambiente di esecuzione in cui eseguire la funzione. Al termine dell'esecuzione della funzione, Lambda non interrompe immediatamente l'ambiente di esecuzione; se la funzione viene richiamata nuovamente, Lambda può riutilizzare l'ambiente di esecuzione esistente.
L'ambiente di esecuzione Lambda contiene anche un runtime, un ambiente specifico del linguaggio che trasmette informazioni sugli eventi e risposte tra Lambda e la tua funzione. Lambda offre una serie di runtime gestiti per i linguaggi di programmazione più diffusi, oppure puoi crearne di tuoi.
Per i runtime gestiti, Lambda applica automaticamente gli aggiornamenti e le patch di sicurezza alle funzioni che utilizzano il runtime.
Trigger e mappature delle sorgenti degli eventi
Sebbene sia possibile richiamare una funzione Lambda manualmente utilizzando AWS Command Line Interface AWS CLI() o utilizzando l'API Lambda, in un'applicazione di produzione è più comune che la funzione venga richiamata da Servizio AWS un'altra in risposta a un particolare evento. Ad esempio, potresti voler eseguire una funzione ogni volta che un elemento viene aggiunto a una tabella Amazon DynamoDB.
Per configurare una funzione da eseguire in risposta a un evento specifico, aggiungi un trigger. Quando crei un trigger, altri Servizi AWS possono richiamare la tua funzione direttamente inviando un oggetto evento a Lambda ogni volta che si verifica un particolare evento. Una funzione può avere più trigger, ognuno dei quali richiama la funzione in modo indipendente.
Alcuni tipi di servizi di streaming e coda, come Amazon Kinesis o Amazon Simple Queue Service (Amazon SQS), non possono richiamare direttamente Lambda utilizzando un trigger. Per questi servizi, devi invece creare una mappatura delle sorgenti degli eventi. Le mappature delle sorgenti degli eventi sono un tipo speciale di risorsa Lambda che esegue continuamente il polling di uno stream o di una coda per verificare la presenza di nuovi eventi. Ad esempio, una mappatura dell'origine degli eventi potrebbe eseguire il polling di una coda Amazon SQS per verificare se sono stati aggiunti nuovi messaggi. Lambda raggruppa i nuovi messaggi in un unico payload fino al raggiungimento di un limite configurato dall'utente, quindi richiama la funzione con un singolo oggetto evento contenente tutti i record del batch.
Il modo più semplice per creare una mappatura dell'origine dei trigger o degli eventi consiste nell'utilizzare la console Lambda. Sebbene le risorse di base create da Lambda e il modo in cui la funzione viene richiamata siano diversi, il processo di creazione di una mappatura dell'origine del trigger o dell'evento nella console utilizza lo stesso metodo.
Per vedere un esempio di trigger in azione, inizia eseguendo il tutorial Using an Amazon S3 trigger to invoke a Lambda function oppure per una panoramica generale sull'uso dei trigger e le istruzioni sulla creazione di un trigger utilizzando la console Lambda, consulta. Richiamare Lambda con eventi di altri servizi AWS
L'oggetto evento
Lambda è un servizio di elaborazione basato sugli eventi. Ciò significa che il codice viene eseguito in risposta a eventi generati da produttori esterni. I dati degli eventi vengono passati alla funzione come documento in formato JSON, che il runtime converte in un oggetto da elaborare dal codice. Ad esempio, in Python, il runtime converte un oggetto JSON in un dizionario Python e lo passa alla funzione come argomento di input. event
Quando l'evento viene generato da un altro Servizio AWS, il formato dell'evento dipende dal servizio che lo genera. Ad esempio, un evento Amazon S3 include il nome del bucket che ha attivato la funzione e informazioni sugli oggetti in quel bucket. Per ulteriori informazioni sul formato degli eventi generati da different Servizi AWS, consulta i capitoli pertinenti in. Richiamare Lambda con eventi di altri servizi AWS
Puoi anche richiamare una funzione Lambda direttamente utilizzando la console Lambda o uno dei AWS Software AWS CLI
Esempio evento Lambda personalizzato
{ "Location": "SEA", "WeatherData":{ "TemperaturesF":{ "MinTempF": 22, "MaxTempF": 78 }, "PressuresHPa":{ "MinPressureHPa": 1015, "MaxPressureHPa": 1027 } } }
Poiché il runtime Lambda converte l'evento in un oggetto, puoi assegnare facilmente i valori dell'evento alle variabili senza dover deserializzare il JSON. I seguenti frammenti di codice di esempio mostrano come assegnare il valore di temperatura minimo dell'evento di esempio precedente a una variabile utilizzando MinTemp
i runtime Python e Node.js. In entrambi i casi, l'oggetto evento viene passato alla funzione di gestione della funzione come argomento denominato. event
Esempio Frammento di codice Python
MinTemp = event['WeatherData']['TemperaturesF']['MinTempF']
Esempio Frammento di codice Node.js
let MinTemp = event.WeatherData.TemperaturesF.MinTempF;
Per un esempio di richiamo di una funzione Lambda con un evento personalizzato, consulta. Crea la tua prima funzione Lambda
Autorizzazioni Lambda
Per Lambda, è necessario configurare due tipi principali di autorizzazioni:
-
Autorizzazioni necessarie alla tua funzione per accedere ad altre Servizi AWS
-
Autorizzazioni necessarie ad altri utenti per accedere alla tua funzione Servizi AWS
Le sezioni seguenti descrivono entrambi questi tipi di autorizzazione e illustrano le migliori pratiche per applicare le autorizzazioni con privilegi minimi.
Autorizzazioni per le funzioni di accesso ad altre risorse AWS
Le funzioni Lambda spesso devono accedere ad altre AWS risorse ed eseguire azioni su di esse. Ad esempio, una funzione può leggere elementi da una tabella DynamoDB, archiviare un oggetto in un bucket S3 o scrivere in una coda Amazon SQS. Per concedere alle funzioni le autorizzazioni necessarie per eseguire queste azioni, si utilizza un ruolo di esecuzione.
Un ruolo di esecuzione Lambda è un tipo speciale di ruolo AWS Identity and Access Management (IAM), un'identità che crei nel tuo account a cui sono associate autorizzazioni specifiche definite in una policy.
Ogni funzione Lambda deve avere un ruolo di esecuzione e un singolo ruolo può essere utilizzato da più di una funzione. Quando viene richiamata una funzione, Lambda assume il ruolo di esecuzione della funzione e riceve l'autorizzazione a intraprendere le azioni definite nella politica del ruolo.
Quando crei una funzione nella console Lambda, Lambda crea automaticamente un ruolo di esecuzione per la tua funzione. La politica del ruolo fornisce alla tua funzione le autorizzazioni di base per scrivere output di log su Amazon CloudWatch Logs. Per autorizzare la funzione a eseguire azioni su altre AWS risorse, devi modificare il ruolo per aggiungere autorizzazioni aggiuntive. Il modo più semplice per aggiungere autorizzazioni consiste nell'utilizzare una policy AWS gestita. Le policy gestite vengono create e amministrate da AWS e forniscono autorizzazioni per molti casi d'uso comuni. Ad esempio, se la tua funzione esegue operazioni CRUD su una tabella DynamoDB, puoi aggiungere AmazonDynamoDBFullla politica di accesso al tuo ruolo.
Autorizzazioni per consentire ad altri utenti e risorse di accedere alla tua funzione
Per concedere altre Servizio AWS autorizzazioni per accedere alla funzione Lambda, si utilizza una politica basata sulle risorse. In IAM, le policy basate sulle risorse sono collegate a una risorsa (in questo caso, la funzione Lambda) e definiscono chi può accedere alla risorsa e quali azioni è consentito intraprendere.
Affinché un'altra Servizio AWS persona possa richiamare la tua funzione tramite un trigger, la policy basata sulle risorse della funzione deve concedere al servizio l'autorizzazione a utilizzare l'azione. lambda:InvokeFunction
Se crei il trigger utilizzando la console, Lambda aggiunge automaticamente questa autorizzazione per te.
Per concedere ad altri AWS utenti l'autorizzazione ad accedere alla tua funzione, puoi definirla nella politica basata sulle risorse della tua funzione esattamente come per un'altra risorsa. Servizio AWS Puoi anche utilizzare una politica basata sull'identità associata all'utente.
Procedure consigliate per le autorizzazioni Lambda
Quando si impostano le autorizzazioni utilizzando le policy IAM, la best practice di sicurezza consiste nel concedere solo le autorizzazioni necessarie per eseguire un'attività. Questo è noto come principio del privilegio minimo. Per iniziare a concedere le autorizzazioni per la tua funzione, puoi scegliere di utilizzare una AWS politica gestita. Le politiche gestite possono essere il modo più rapido e semplice per concedere le autorizzazioni per eseguire un'attività, ma possono includere anche altre autorizzazioni non necessarie. Mentre passi dallo sviluppo iniziale al test e alla produzione, ti consigliamo di ridurre le autorizzazioni solo a quelle necessarie definendo politiche personalizzate gestite dal cliente.
Lo stesso principio si applica quando si concedono le autorizzazioni per accedere a una funzione utilizzando una politica basata sulle risorse. Ad esempio, se desideri autorizzare Amazon S3 a richiamare la tua funzione, è consigliabile limitare l'accesso ai singoli bucket, o ai bucket in particolare Account AWS, anziché concedere autorizzazioni generali al servizio S3.