Domande generali

D: Cos'è AWS Lambda?

AWS Lambda consente di eseguire codice senza dover effettuare il provisioning né gestire server. Le tariffe sono calcolate in base ai tempi di elaborazione, perciò non viene addebitato alcun costo quando il codice non è in esecuzione. Con Lambda, puoi eseguire codice per qualsiasi tipo di applicazione o servizio di back-end, senza alcuna amministrazione. Una volta caricato il codice, Lambda si prende carico delle azioni necessarie per eseguirlo e ricalibrarne le risorse con la massima disponibilità. Puoi configurare il codice in modo che venga attivato automaticamente da altri servizi AWS oppure che venga richiamato direttamente da un qualsiasi app Web o mobile.

D: Che cos'è l'elaborazione serverless?

L'elaborazione serverless consente di creare build ed eseguire applicazioni e servizi senza dover gestire alcun server. In questa modalità, le applicazioni saranno comunque eseguite su server, la cui gestione sarà però a carico di AWS. Alla base dei servizi di elaborazione serverless c'è AWS Lambda, che permette di eseguire codice senza dover effettuare il provisioning o gestire i server. Per ulteriori informazioni sull'elaborazione serverless, consulta questa pagina.

D: Quali eventi possono attivare una funzione di AWS Lambda?

Per un elenco completo delle origini di evento, consulta la nostra documentazione.

D: In quali casi è più indicato utilizzare AWS Lambda o Amazon EC2?

Amazon Web Services offre un set di servizi di elaborazione per soddisfare un'ampia gamma di esigenze.

Amazon EC2 offre flessibilità grazie a un vasto assortimento di tipi di istanza e alla possibilità di personalizzare le impostazioni del sistema operativo, di rete e di sicurezza, nonché l'intero stack software, permettendoti di spostare nel cloud le applicazioni esistenti in tutta semplicità. Con Amazon EC2 sei responsabile del provisioning della capacità, del monitoraggio dello stato e delle prestazioni del parco istanze e della progettazione per tolleranza ai guasti e scalabilità. AWS Elastic Beanstalk offre un servizio di facile utilizzo per la distribuzione e il dimensionamento di applicazioni Web che ti permette di mantenere la proprietà e il controllo completo delle istanze EC2 sottostanti. Amazon EC2 Container Service è un servizio di gestione scalabile che supporta contenitori Docker e ti permette di eseguire con facilità applicazioni distribuite in un cluster gestito di istanze Amazon EC2.

AWS Lambda semplifica l'esecuzione del codice in risposta agli eventi, ad esempio le modifiche a bucket Amazon S3, gli aggiornamenti a una tabella Amazon DynamoDB o gli eventi personalizzati generati dalle applicazioni o dai dispositivi. Con Lambda non devi effettuare il provisioning delle tue istanze, perché questo servizio esegue automaticamente tutte le attività operative e amministrative, tra cui il provisioning della capacità, il monitoraggio dello stato del parco istanze, l'applicazione di patch di sicurezza alle risorse di elaborazione sottostanti, la distribuzione del codice, l'esecuzione di un front-end di servizi Web e il monitoraggio e la registrazione del codice. AWS Lambda offre semplice dimensionamento ed elevata disponibilità per il codice senza impegno aggiuntivo da parte tua.

D: Che tipo di codice può essere eseguito in AWS Lambda?

AWS Lambda offre un semplice metodo per svolgere molte attività nel cloud. Ad esempio, puoi usare AWS Lambda per la creazione di back-end per dispositivi mobili che recuperano e trasformano dati da Amazon DynamoDB e di gestori che comprimono o trasformano oggetti mentre vengono caricati in Amazon S3, per il controllo e la segnalazione delle chiamate API effettuate a qualsiasi soluzione Amazon Web Services e per l'elaborazione non basata su server di dati di streaming con Amazon Kinesis.

D: Quali sintassi supporta AWS Lambda?

AWS Lambda supporta codice scritto in Node.js (JavaScript), Python, Java (compatibile con Java 8) e C# (.NET Core). Il codice può includere librerie esistenti, anche native. Consulta la documentazione sull'uso di Node.js, Python, Java# e C#.

D: È possibile accedere all'infrastruttura su cui viene eseguito AWS Lambda?

No. AWS Lambda gestisce per te l'infrastruttura di elaborazione, alla quale permette di eseguire controlli dello stato, applicare patch di sicurezza e svolgere altre attività di manutenzione di routine.

D: In che modo AWS Lambda isola il codice?

Ogni funzione di AWS Lambda viene eseguita nel rispettivo ambiente isolato, con una visualizzazione del file system e risorse proprie. AWS Lambda usa le stesse tecniche di Amazon EC2 per offrire sicurezza e separazione a livello di infrastruttura e di esecuzione.

D: In che modo AWS Lambda protegge il codice?

AWS Lambda archivia il codice in Amazon S3 e lo crittografa su disco. AWS Lambda esegue controlli dell'integrità aggiuntivi mentre il codice è in uso.

Funzioni AWS Lambda

D: Che cos'è una funzione di AWS Lambda?

Il codice che esegui in AWS Lambda viene caricato come "funzione Lambda". A ogni funzione sono associate informazioni di configurazione, come nome, descrizione, punto di ingresso e requisiti in termini di risorse. Il codice deve essere scritto in stile "stateless", ovvero deve presupporre che non vi siano affinità con l'infrastruttura di elaborazione sottostante. L'accesso al file system locale, i processi figlio ed elementi simili possono non estendersi oltre il ciclo di vita della richiesta e qualsiasi stato persistente deve essere archiviato in Amazon S3, Amazon DynamoDB o un altro servizio di storage disponibile in Internet. Le funzioni Lambda possono includere librerie, anche native.

D: AWS Lambda riutilizza le istanze di funzione?

Per offrire prestazioni migliori, AWS Lambda può mantenere un'istanza della tua funzione e riutilizzarla per gestire una richiesta successiva, invece di creare una nuova copia. Per ulteriori informazioni su come Lambda riutilizza le istanze di funzione, consulta la documentazione. Questo comportamento non deve essere dato sempre per scontato dal codice.

D: È possibile ottenere spazio su disco per una funzione AWS Lambda?

Ogni funzione Lambda riceve 500 MB di spazio su disco non persistente nella rispettiva directory /tmp.

D: Perché le funzioni AWS Lambda devono essere stateless?

Se una funzione è stateless, AWS Lambda può avviarne rapidamente tutte le copie necessarie in base alla frequenza degli eventi in entrata. Anche se il modello di programmazione di AWS Lambda è stateless, il codice può accedere a dati stateful chiamando altri servizi Web, come Amazon S3 o Amazon DynamoDB.

D: È possibile usare thread e processi nel codice di una funzione di AWS Lambda?

Sì. AWS Lambda ti permette di usare le normali caratteristiche del linguaggio e del sistema operativo, come la creazione di thread e processi aggiuntivi. Le risorse allocate alla funzione Lambda, inclusi tempo di esecuzione, memoria, disco e utilizzo della rete, devono essere condivise tra tutti i thread/processi usati. Puoi avviare processi usando qualsiasi linguaggio supportato da Amazon Linux.

D: Sono previste restrizioni al codice delle funzioni AWS Lambda?

Lambda tenta di imporre meno limitazioni possibili alle normali attività di sintassi e sistema operativo, ma alcune attività sono disabilitate: le connessioni di rete in entrata vengono bloccate da AWS Lambda, e per le connessioni in uscita sono supportati solo i socket TCP/IP, mentre le chiamate del sistema (di debug) ptrace sono bloccate. Il traffico TCP della porta 25 è anch'esso bloccato come misura contro lo spam.

D: In che modo è possibile creare una funzione usando la console di AWS Lambda?

Se la sintassi in uso è Node.js o Python, è possibile compilare il codice della funzione utilizzando l'editor di codice di cui è dotata la console di AWS Lambda, che permette di scrivere e testare le funzioni e visualizzarne i risultati in un ambiente di tipo IDE. Accedi alla console per iniziare.

Puoi anche creare un pacchetto del codice (e di qualsiasi libreria dipendente) come file ZIP e caricarlo usando la console di AWS Lambda dall'ambiente locale oppure specificare una posizione in Amazon S3 in cui si trova il file ZIP. I caricamenti non devono avere dimensioni maggiori di 50 MB (file compressi). Puoi usare il plug-in AWS per Eclipse per creare e distribuire funzioni Lambda in Java. Puoi usare il plug-in per Visual Studio per creare e distribuire funzioni Lambda in C# e Node.js.

D: In che modo è possibile creare una funzione usando l'interfaccia a riga di comando di Lambda?

Puoi creare un pacchetto di codice (e di eventuali librerie dipendenti) in formato ZIP e caricarlo usando l'interfaccia a riga di comando di AWS dall'ambiente locale oppure specificare la posizione in Amazon S3 in cui si trova il file ZIP. Le dimensioni del file da caricare non possono superare i 50 MB (già compressi). Per iniziare, consulta il documento Lambda Getting Started guide.

D: AWS Lambda supporta le variabili di ambiente?

Sì. Puoi creare e modificare variabili di ambiente tramite la console, l'interfaccia a riga di comando o i kit SDK di AWS Lambda. Per ulteriori informazioni sulle variabili di ambiente, consulta la documentazione.

D: È possibile memorizzare informazioni sensibili in variabili di ambiente?

Per informazioni sensibili quali le password di database, consigliamo di utilizzare crittografia lato cliente tramite AWS Key Management Service e memorizzare i valori risultanti come testo crittografato nella variabile di ambiente. Sarà necessario includere nel codice della funzione AWS Lambda la logica necessaria per decrittografare tali valori.

D: Come si gestiscono le funzioni AWS Lambda?

Puoi elencare, eliminare, aggiornare e monitorare con facilità le tue funzioni Lambda usando il pannello di controllo nella console di AWS Lambda. Per gestire le funzioni Lambda, puoi usare anche l'interfaccia a riga di comando di AWS e l'SDK AWS. Per ulteriori informazioni, consulta il documento AWS Lambda Developer Guide.

D: In che modo è possibile monitorare una funzione di AWS Lambda?

Le funzioni sono monitorate automaticamente da AWS Lambda, comunicando i parametri in tempo reale tramite Amazon CloudWatch, ad esempio richieste totali, utilizzo simultaneo a livello di account e di funzione, latenza, percentuale di errori e richieste respinte a causa delle limitazioni. È anche possibile visualizzare le statistiche per ogni singola funzione Lambda tramite la console di Amazon CloudWatch o la console di AWS Lambda. Inoltre, è possibile richiamare API di monitoraggio di terze parti in una funzione Lambda.

Per ulteriori informazioni, visita la pagina sulla risoluzione dei problemi dei parametri di CloudWatch. Per l'uso dei parametri integrati di Lambda vengono applicate le tariffe standard di AWS Lambda.

D: Come si correggono gli errori in una funzione di AWS Lambda?

AWS Lambda si integra automaticamente con i log di Amazon CloudWatch, creando un gruppo di log per ogni funzione Lambda e offrendo voci di log degli eventi del ciclo di vita delle applicazioni, tra cui la registrazione delle risorse utilizzate per ogni funzione. Puoi inserire istruzioni di registrazione aggiuntive nel tuo codice. Puoi anche chiamare API di registrazione di terza parte nella tua funzione Lambda. Per ulteriori informazioni, visita la pagina sulla risoluzione dei problemi delle funzioni Lambda. Vengono applicate le tariffe dei log di Amazon CloudWatch.

D: In che modo è possibile ricalibrare le risorse di una funzione AWS Lambda?

Non devi dimensionare le tue funzioni, perché questa operazione viene eseguita automaticamente da AWS Lambda. A ogni ricezione della notifica di un evento per la tua funzione, AWS Lambda individua rapidamente la capacità disponibile nel proprio parco istanze di calcolo ed esegue il codice. Poiché il codice è stateless, AWS Lambda può avviare tutte le copie necessarie della funzione senza distribuzioni prolungate o ritardi di configurazione. Il dimensionamento di una funzione è praticamente illimitato. AWS Lambda alloca dinamicamente la capacità in base alla frequenza degli eventi in entrata.

D: In che modo le risorse di elaborazione vengono assegnate a una funzione AWS Lambda?

Nel modello di risorsa di AWS Lambda puoi scegliere la quantità di memoria desiderata per la tua funzione perché potenza della CPU e altre risorse vengano allocate in modo proporzionale. Se ad esempio scegli 256 MB di memoria, alla tua funzione Lambda verrà allocato circa il doppio di potenza della CPU rispetto a quanto otterresti richiedendo 128 MB di memoria e circa la metà di potenza della CPU rispetto a una richiesta di 512 MB di memoria. La memoria può essere configurata a incrementi di 64 MB, da 128 MB a 3 GB.

D: Qual è la durata massima di esecuzione di una funzione AWS Lambda?

L'esecuzione di tutte le chiamate effettuate ad AWS Lambda deve essere completata entro 300 secondi. Il timeout predefinito è 3 secondi, ma puoi impostarlo su qualsiasi valore compreso tra 1 e 300 secondi.

D: Quali sono i costi addebitati per l'uso di funzioni AWS Lambda?

Le tariffe di AWS Lambda vengono addebitate in base all'uso. Per ulteriori informazioni, visita la pagina Prezzi di AWS Lambda.

D: AWS Lambda supporta la funzione Versioni multiple?

Sì. Per impostazione predefinita, a ogni funzione AWS Lambda è associata un'unica versione del codice. I client della funzione Lambda possono richiamare una versione specifica o ottenere l'implementazione più recente. Consulta la documentazione sulla funzione Versioni multiple delle funzioni Lambda.

D: Dopo quanto tempo una funzione AWS Lambda è pronta per l'esecuzione dopo che ne è stato caricato il codice?

I tempi di distribuzione possono variare a seconda delle dimensioni del codice, ma le funzioni AWS Lambda sono in genere pronte per la chiamata a pochi secondi dal caricamento.

D: È possibile usare una versione personale di una libreria supportata?

Sì. Puoi includere la tua copia di una libreria (incluso l'SDK AWS) per usare una versione diversa rispetto a quella predefinita fornita da AWS Lambda.

Uso di AWS Lambda per l'elaborazione di eventi AWS

D: Che cos'è un'origine di evento?

Un'origine di evento è un servizio AWS o un'applicazione creata da uno sviluppatore che produce eventi che a loro volta attivano l'esecuzione di una funzione di AWS Lambda. Alcuni servizi pubblicano questi eventi in Lambda richiamando direttamente la funzione cloud, ad esempio Amazon S3. Lambda può anche eseguire il polling delle risorse in altri servizi che non pubblicano eventi in Lambda. Ad esempio, Lambda può estrarre record da un flusso Kinesis ed eseguire una funzione Lambda per ogni messaggio nel flusso.

Molti altri servizi, ad esempio AWS CloudTrail, possono operare come origini di evento tramite la semplice registrazione in Amazon S3 e l'uso di notifiche dei bucket S3 per attivare funzioni di AWS Lambda.

D: Quali origini di evento è possibile usare AWS Lambda?

Per un elenco completo delle origini di evento, consulta la nostra documentazione.

D: Come vengono rappresentati gli eventi in AWS Lambda?

Gli eventi vengono passati a una funzione Lambda come parametro di input di evento. Per le origini di evento quando gli eventi arrivano in batch, ad esempio nel caso di flussi Amazon Kinesis e Amazon DynamoDB, il parametro di evento può contenere più eventi in una singola chiamata, in base alle dimensioni del batch richieste. Per ulteriori informazioni sulle notifiche degli eventi di Amazon S3, visita la pagina sulla configurazione delle notifiche per eventi di Amazon S3. Per ulteriori informazioni sui flussi Amazon DynamoDB, visita la guida per sviluppatori di flussi DynamoDB. Per ulteriori informazioni su come richiamare funzioni Lambda con Amazon SNS, consulta il documento Amazon SNS Developer Guide. Per ulteriori informazioni sugli eventi di Amazon Cognito, visita la pagina Amazon Cognito. Per ulteriori informazioni sui log di AWS CloudTrail e le chiamate API di controllo tra servizi AWS, visita la pagina AWS CloudTrail.

D: In che modo è possibile configurare una funzione AWS Lambda perché risponda alle modifiche in un bucket Amazon S3?

Dalla console di AWS Lambda puoi selezionare una funzione e associarla alle notifiche provenienti da un bucket Amazon S3. In alternativa, puoi usare la console di Amazon S3 e configurare le notifiche del bucket per l'invio alla funzione di AWS Lambda. Questa stessa funzionalità è disponibile anche tramite l'SDK AWS e l'interfaccia a riga di comando di AWS.

D: In che modo è possibile configurare una funzione AWS Lambda perché risponda agli aggiornamenti di una tabella Amazon DynamoDB?

Puoi attivare una funzione Lambda per gli aggiornamenti di una tabella DynamoDB registrando la funzione Lambda nel flusso DynamoDB associato alla tabella. Puoi associare un flusso DynamoDB a una funzione Lambda usando la console di Amazon DynamoDB, la console di AWS Lambda o l'API registerEventSource di Lambda.

D: Come si usa una funzione AWS Lambda per elaborare record in un flusso Amazon Kinesis?

Dalla console di AWS Lambda puoi selezionare una funzione Lambda e associarla a un flusso Amazon Kinesis di proprietà dello stesso account. La stessa funzionalità è disponibile anche tramite il kit SDK AWS e l'interfaccia a riga di comando.

D: In che modo AWS Lambda elabora i dati da flussi Amazon Kinesis e flussi Amazon DynamoDB?

I record dei flussi Amazon Kinesis e DynamoDB inviati alla tua funzione di AWS Lambda vengono serializzati con rigore, per ogni shard. Di conseguenza, se inserisci due record nello stesso shard, Lambda garantisce che la funzione Lambda venga richiamata correttamente con il primo record prima di venire richiamata con il secondo. In caso di timeout della chiamata per un record o se la chiamata è limitata o restituisce qualsiasi altro errore, Lambda riprova fino a quando la chiamata non riesce (o il record non raggiunge la scadenza di 24 ore) prima di passare al secondo record. L'ordine dei record tra shard diversi non è garantito e l'elaborazione di ogni shard avviene in parallelo.

D: Come si usa una funzione AWS Lambda per rispondere alle notifiche inviate da Amazon Simple Notification Service (SNS)?

Dalla console di AWS Lambda puoi selezionare una funzione Lambda e associarla a un argomento Amazon SNS. Questa stessa funzionalità è disponibile anche tramite l'SDK AWS e l'interfaccia a riga di comando di AWS.

D: Come si usa una funzione AWS Lambda per rispondere alle e-mail inviate da Amazon Simple Email Service (SES)?

Dalla console di Amazon SES puoi configurare la regola di ricezione in modo che Amazon SES recapiti i messaggi a una funzione di AWS Lambda. Questa stessa funzionalità è disponibile tramite l'SDK AWS e l'interfaccia a riga di comando di AWS.

D: Come si usa una funzione AWS Lambda per rispondere ad allarmi di Amazon CloudWatch?

Prima di tutto, configura l'allarme per l'invio di notifiche di Amazon SNS. Dalla console di AWS Lambda seleziona quindi una funzione Lambda e associala all'argomento di Amazon SNS. Per ulteriori informazioni sulla configurazione degli allarmi di Amazon CloudWatch, consulta il documento Amazon CloudWatch Developer Guide.

D: Come si usa una funzione AWS Lambda per rispondere alle modifiche apportate a dati degli utenti o dei dispositivi gestiti da Amazon Cognito?

È possibile selezionare nella console di AWS Lambda una funzione da attivare quando viene sincronizzato qualsiasi set di dati associato a un pool di identità di Amazon Cognito. La stessa funzionalità è disponibile anche tramite il kit SDK AWS e l'interfaccia a riga di comando. Per ulteriori informazioni su come usare Amazon Cognito per condividere e sincronizzare i dati tra i dispositivi di un utente, visita la pagina dedicata a questo servizio.

D: In che modo un'applicazione può attivare una funzione di AWS Lambda direttamente?

Puoi richiamare una funzione Lambda usando un evento personalizzato tramite l'API di chiamata di AWS Lambda. La funzione può essere richiamata solo dal suo proprietario o da un altro account AWS a cui il proprietario abbia concesso il permesso. Per ulteriori informazioni, consulta il documento AWS Lambda Developer Guide.

D: Qual è la latenza della chiamata di una funzione di AWS Lambda in risposta a un evento?

Il servizio AWS Lambda è progettato per elaborare eventi in pochi millisecondi. La latenza sarà maggiore immediatamente dopo la creazione o l'aggiornamento di una funzione Lambda o se la funzione non viene usata per un certo periodo di tempo.

D: Come si crea un back-end per dispositivi mobili con AWS Lambda?

Carica il codice che deve essere eseguito da AWS Lambda e quindi richiamalo dall'app mobile usando l'SDK AWS Lambda incluso nell'SDK AWS Mobile. Puoi effettuare sia chiamate dirette (sincrone) per recuperare o controllare i dati in tempo reale sia chiamate asincrone. Puoi anche definire un'API personalizzata tramite Amazon API Gateway e richiamare le funzioni Lambda tramite qualsiasi client compatibile con REST. Per ulteriori informazioni sull'SDK AWS Mobile, visita la pagina SDK AWS Mobile. Per ulteriori informazioni su Amazon API Gateway, visita la pagina Amazon API Gateway.

D: Come si richiama una funzione di AWS Lambda tramite HTTPS?

Puoi richiamare una funzione Lambda tramite HTTPS definendo un'API RESTful personalizzata con Amazon API Gateway. In questo modo ottieni un endpoint per la funzione che può rispondere a chiamate REST, come GET, PUT e POST. Consulta le informazioni sull'uso di AWS Lambda con Amazon API Gateway.

D: In che modo è possibile configurare una funzione AWS Lambda in modo che abbia comportamenti differenti a seconda del dispositivo e dell'app che effettuano la richiesta?

Quando vengono chiamate tramite l'SDK AWS Mobile, le funzioni di AWS Lambda sono in grado di acquisire automaticamente informazioni approfondite sul dispositivo e sull'applicazione che hanno effettuato la chiamata tramite l'oggetto "context".

D: In che modo è possibile configurare una funzione AWS Lambda in modo che abbia comportamenti differenti a seconda dell'identità dell'utente finale di un'applicazione?

Quando l'app usa l'identità di Amazon Cognito, gli utenti finali possono effettuare l'autenticazione tramite un'ampia gamma di provider di accesso pubblico come Amazon, Facebook, Google e altri servizi compatibili con OpenID Connect. L'identità utente viene quindi presentata in modo automatico e protetto alla funzione Lambda in forma di ID Amazon Cognito, tramite cui può accedere ai dati utente da Amazon Cognito, oppure come chiave per archiviare e recuperare dati in Amazon DynamoDB o in altri servizi Web.

D: Come si crea una competenza Alexa con AWS Lambda?

AWS Lambda è integrato in Alexa Skills Kit, una raccolta di API self-service, strumenti, documentazione ed esempi di codice che semplificano la creazione di funzionalità vocali (o "competenze") per Alexa. Una volta caricato il codice della funzione Lambda per la nuova competenza Alexa che desideri creare, AWS Lambda si occupi del resto, eseguendo il codice in risposta alle interazioni vocali di Alexa e gestendo automaticamente le risorse del computer per te. Per ulteriori informazioni, consulta la documentazione di Alexa Skills Kit.

D: Che cosa accade in caso di errori della funzione durante l'elaborazione di un evento?

Per le notifiche dei bucket Amazon S3 e gli eventi personalizzati, AWS Lambda tenta l'esecuzione della funzione per tre volte nel caso di una condizione di errore nel codice o quando superi il limite di un servizio o di una risorsa. Per origini di evento ordinate di cui AWS Lambda esegue il polling automaticamente, come i flussi Amazon DynamoDB e i flussi Amazon Kinesis, Lambda continua a tentare l'esecuzione nel caso di un errore del codice dello sviluppatore fino alla scadenza dei dati. Puoi monitorare l'avanzamento tramite le console di Amazon Kinesis e Amazon DynamoDB e tramite i parametri di Amazon CloudWatch generati da AWS Lambda per la tua funzione. Puoi anche impostare allarmi di Amazon CloudWatch in base alla frequenza di throttling dell'esecuzione e degli errori.

Uso di AWS Lambda per build di applicazioni

D: Cos'è un'applicazione serverless?

Le applicazioni basate su Lambda, o semplicemente applicazioni serverless, sono costituite da funzioni attivate da eventi. Un'applicazione serverless, in genere, è composta da una o più funzioni attivate da eventi, ad esempio il caricamento di oggetti in Amazon S3, una notifica di Amazon SNS o operazioni API. Queste funzioni possono essere autonome o basarsi su altre risorse, ad esempio tabelle DynamoDB o bucket Amazon S3. Le applicazioni serverless più semplici sono composte da una sola funzione.

D: In che modo è possibile distribuire e gestire un'applicazione serverless?

Per distribuire e gestire applicazioni serverless è possibile usare AWS Serverless Application Model (AWS SAM). AWS SAM è una specifica che stabilisce le regole per il funzionamento di applicazioni serverless in AWS. Questa specifica si adatta alla sintassi utilizzata da AWS CloudFormation e ne è supportata nativamente come set di tipi di risorsa (o "risorse serverless"). Grazie a queste risorse è più semplice per i clienti di AWS utilizzare CloudFormation per configurare e distribuire applicazioni serverless utilizzando le API di CloudFormation esistenti.

D: In che modo è possibile individuare applicazioni serverless esistenti sviluppate dalla community di AWS?

AWS Serverless Application Repository offre una raccolta di applicazioni serverless pubblicate da sviluppatori, aziende e partner nella community di AWS. Dopo aver selezionato un'applicazione, è sufficiente configurarla e distribuirla servendosi direttamente la console di Lambda.

D: In che modo è possibile automatizzare la distribuzione di un'applicazione serverless?

È possibile automatizzare il processo di rilascio di applicazioni serverless utilizzando AWS CodePipeline e AWS CodeDeploy. CodePipeline è un servizio di distribuzione continua che consente modellizzazione, visualizzazione e automatizzazione delle fasi necessarie al rilascio delle applicazioni serverless. CodeDeploy offre un motore di automatizzazione delle distribuzioni per le applicazioni basate su Lambda. Questo servizio permette di orchestrare le distribuzioni secondo best-practice consolidate, ad esempio distribuzioni canary o lineari, e aiuta a costruire barriere per verificare che codice appena distribuito sia sicuro, stabile e pronto per andare in produzione.

Per ulteriori informazioni integrazione e distribuzione continue serverless, consulta la documentazione.

D: Come si inizia a creare build di applicazioni serverless?

Per iniziare, visita la console di AWS Lambda e scarica uno dei nostri blueprint. Il download conterrà un file SAM (che definisce le risorse AWS nell'applicazione) e un file .ZIP (che include il codice dell'applicazione). Potrai usare i comandi di AWS CloudFormation per creare pacchetti e distribuire l'applicazione serverless scaricata. Per ulteriori informazioni, consulta la nostra documentazione.

D: In che modo è possibile coordinare le chiamate tra più funzioni AWS Lambda?

È possibile utilizzare AWS Step Functions per coordinare una serie di funzioni di AWS Lambda in un ordine specifico. È possibile richiamare più funzioni Lambda in ordine sequenziale, trasferire il risultato dall’una all’altra e/o in parallelo; Step Functions manterrà lo stato durante le esecuzioni per conto dell’utente.

D: In che modo viene eseguita la risoluzione dei problemi di un'applicazione serverless?

È possibile abilitare il tracciamento di una funzione Lambda utilizzando AWS X-Ray; è sufficiente aggiungere le autorizzazioni per X-Ray nel ruolo di esecuzione della funzione Lambda e modificare il parametro "tracing mode" della funzione in "active". Quando X-Ray è abilitato per la funzione Lambda, AWS Lambda inoltrerà ad X-Ray le informazioni riguardanti le operazioni del servizio al momento dell'invocazione della funzione. Sarà pertanto possibile ottenere informazioni approfondite tra cui il carico del servizio Lambda nonché i tempi di inizializzazione e di esecuzione della funzione. Inoltre, sarà possibile il kit SDK X-Ray al pacchetto di distribuzione di Lambda per creare segmenti di tracciatura personalizzati, annotare le tracce o visualizzare i segmenti per le chiamate a valle effettuate dalla funzione lambda. I kit SDK X-Ray sono attualmente disponibili per Node.js e Java. Consulta il documento Troubleshooting Lambda-based applications per ulteriori informazioni. Saranno applicate le tariffe di AWS X-Ray.

D: Come funziona la licenza di AWS SAM?

La specifica è open source sotto licenza Apache 2.0, perciò è possibile utilizzare e integrare AWS SAM in strumenti per creazione di build, sviluppo, monitoraggio e gestione con una licenza commercial-friendly. Puoi accedere al repository AWS SAM in GitHub in questa pagina.

Lambda@Edge

D: Cos'è Lambda@Edge?

Lambda@Edge permette di eseguire codice sulle location AWS in tutto il mondo dover allocare o gestire i server, inviando le risposte agli utenti finali alla latenza di rete più bassa possibile. È sufficiente caricare il codice Node.js su AWS Lambda e configurare la funzione da attivare in risposta alle richieste di Amazon CloudFront (ad esempio quando viene servita una richiesta di visualizzazione, quando viene inoltrata o ricevuta una richiesta dal server di origine e prima della risposta all'utente finale). Il codice è quindi pronto per essere eseguito in qualsiasi edge location AWS da cui è stata ricevuta la richiesta, ridimensionando le risorse in base al volume di richieste di CloudFront globali. Per ulteriori informazioni, consulta la documentazione.

D: Come si usa Lambda@Edge?

Per utilizzare Lambda@Edge è sufficiente caricare il codice su AWS Lambda e associare una versione della funzione da attivare in risposta alle richieste di Amazon CloudFront. Il codice deve soddisfare le limitazioni di servizio di Lambda@Edge. Al momento, Lambda@Edge supporta solo codice Node.js per le chiamate globali da parte di eventi CloudFront. Per ulteriori informazioni, consulta la documentazione.

D: In quali casi è indicato usare Lambda@Edge?

Lambda@Edge è ottimizzato per i casi d'uso sensibili alla latenza in cui i visualizzatori finali sono distribuiti a livello globale. Idealmente, tutte le informazioni necessarie per prendere una decisione sono disponibili sull'edge CloudFront, all'interno della funzione e della richiesta. Ciò significa che i casi d'uso che si cercano per prendere decisioni su come distribuire contenuti in base alle caratteristiche degli utenti (ad es. ubicazione, dispositivo client, ecc.) possono ora essere eseguiti e distribuiti direttamente dall'edge in Node.js-6.10 senza dover essere reindirizzati a un server centralizzato.

D: È possibile distribuire le funzioni Lambda esistenti per chiamate globali?

È possibile associare le funzioni Lambda Node.js-6.10 esistenti ad eventi CloudFront per le chiamate globali se la funzione soddisfa i limiti di servizio di Lambda@Edge. Per informazioni su come aggiornare le proprietà della funzione, leggi qui.

D: Quali eventi Amazon CloudFront è possibile utilizzare per attivare una funzione?

Le funzioni disponibili si attiveranno automaticamente in risposta ai seguenti eventi di Amazon CloudFront:

  • Richiesta visualizzatore – Questo evento si verifica quando un utente finale o un dispositivo di Internet invia una richiesta HTTP(S) a CloudFront e la richiesta arriva alla edge location più vicina a quell’utente.
  • Risposta visualizzatore – Questo evento si verifica quando il server di CloudFront nella edge location è pronto per rispondere all’utente finale o al dispositivo che ha inviato la richiesta.
  • Richiesta origine – Questo evento si verifica quando il server edge di CloudFront non contiene già l’oggetto richiesto nella propria cache e la richiesta del visualizzatore è pronta per essere inviata al server Web di origine del back-end (per es. Amazon EC2 o Application Load Balancer o Amazon S3).
  • Risposta origine – Questo evento si verifica quando il server di CloudFront della edge location riceve una risposta dal server Web di origine del back-end.

D: Quali sono le differenze tra AWS Lambda@Edge e AWS Lambda protetto da Amazon API Gateway?

La differenza è nella portata: API Gateway e Lambda sono servizi regionali. Con Lambda@Edge e Amazon CloudFront, è possibile eseguire operazioni in diverse strutture AWS in base alla posizione degli utenti e alla propria.

Scalabilità e disponibilità

D: Qual è il livello di disponibilità offerto dalle funzioni AWS Lambda?

AWS Lambda è progettato per usare la replica e la ridondanza in modo da offrire elevata disponibilità per il servizio stesso e per le funzioni Lambda da esso gestite. Né il servizio né le funzioni Lambda sono soggetti a tempi di inattività pianificati o a finestre di manutenzione.

D: Le funzioni AWS Lambda conservano la disponibilità anche dopo eventuali modifiche a codice o configurazione?

Sì. Quando aggiorni una funzione Lambda, esiste un breve periodo di tempo, in genere inferiore a un minuto, in cui le richieste possono essere gestite dalla versione precedente della funzione o da quella nuova.

D: È previsto un limite al numero di funzioni AWS Lambda che è possibile eseguire contemporaneamente?

No. AWS Lambda è progettato per l'esecuzione in parallelo di molte istanze delle tue funzioni. AWS Lambda impone tuttavia un limite di sicurezza predefinito di esecuzioni simultanee per account per ogni regione; consulta questa pagina per ulteriori informazioni sui limiti di sicurezza predefiniti. È anche possibile controllare il numero massimo di esecuzioni simultanee per singole funzioni AWS Lambda per cui riservare un sottoinsieme del limite, ad esempio per le funzioni più importanti o per porre un tetto al tasso di traffico verso le risorse a valle.

Per inviare una richiesta di aumento del limite di esecuzioni simultanee, apri il Centro di supporto, seleziona l'opzione per l'apertura di un nuovo caso e compila la relativa richiesta.

D: Cosa accade se un account supera il limite predefinito di esecuzioni simultanee?

Una volta superato il limite, le funzioni di AWS Lambda richiamate in modo sincrono restituiscono un errore di throttling (codice di errore 429). Le funzioni Lambda richiamate in modo asincrono possono assorbire notevoli aumenti di traffico per circa 15-30 minuti, dopo i quali gli eventi in entrata vengono rifiutati come limitati. Se la funzione Lambda viene richiamata in risposta a eventi di Amazon S3, gli eventi rifiutati da AWS Lambda possono essere mantenuti e ritentati da S3 per 24 ore. Gli eventi provenienti da flussi Amazon Kinesis e flussi Amazon DynamoDB vengono ritentati fino a quando la funzione Lambda non riesce o fino allo scadere dei dati. I flussi Amazon Kinesis e Amazon DynamoDB mantengono i dati per 24 ore.

D: Il limite predefinito viene applicato a livello di funzione?

No, il limite predefinito viene applicato solo a livello di account.

D: Che cosa accade in caso di errori della funzione Lambda durante l'elaborazione di un evento?

In caso di errore, le funzioni Lambda richiamate in modo sincrono rispondono con un'eccezione. Le funzioni Lambda richiamate in modo asincrono vengono ritentate almeno tre volte. Gli eventi provenienti da flussi Amazon Kinesis e flussi Amazon DynamoDB vengono ritentati fino a quando la funzione Lambda non riesce o fino allo scadere dei dati. I flussi Kinesis e DynamoDB mantengono i dati per almeno 24 ore.

D: Che cosa succede se le chiamate a una funzione Lambda superano i limiti stabiliti nelle policy?

Se si supera la policy di ripetizione tentativi per le invocazioni asincrone, è possibile configurare una “coda DLQ” all’interno della quale verrà inserito l’evento; in assenza di una coda DLQ configurata, l’evento potrebbe essere rifiutato. Se si supera la policy di ripetizione tentativi per le invocazioni basate sui flussi, i dati sarebbero già scaduti e pertanto rifiutati.

D: Quali risorse è possibile configurare come coda DLQ per una funzione Lambda?

Come coda DLQ è possibile configurare una coda Amazon SQS o un argomento Amazon SNS.

Sicurezza e controllo degli accessi

D: Come si permette a una funzione di AWS Lambda di accedere ad altre risorse AWS?

Puoi concedere alla tua funzione Lambda i permessi necessari per accedere ad altre risorse usando un ruolo IAM. AWS Lambda assume il ruolo durante l'esecuzione della funzione Lambda, assicurandoti sempre il controllo completo e sicuro esattamente su tutte le risorse AWS che possono essere usate dalla funzione. Per ulteriori informazioni sui ruoli, visita la pagina sulla configurazione di AWS Lambda.

D: Come si controllano i bucket Amazon S3 che possono chiamare determinate funzioni di AWS Lambda?

Quando configuri un bucket Amazon S3 per l'invio di messaggi a una funzione di AWS Lambda, viene creata una regola di policy per le risorse per la concessione dell'accesso. Per ulteriori informazioni sulle policy per le risorse e i controlli degli accessi per le funzioni Lambda, consulta il documento AWS Lambda Developer Guide.

D: Come si controlla la tabella Amazon DynamoDB o il flusso Amazon Kinesis di cui una funzione di AWS Lambda può eseguire il polling?

I controlli degli accessi vengono gestiti tramite il ruolo della funzione Lambda. Il ruolo assegnato alla funzione Lambda determina anche le risorse di cui AWS Lambda può eseguire il polling per conto della funzione. Per ulteriori informazioni, consulta il documento AWS Lambda Developer Guide.

D: È possibile accedere alle risorse in Amazon VPC con una funzione di AWS Lambda?

Sì. Puoi accedere alle risorse in Amazon VPC.

D: In che modo è possibile abilitare e disabilitare il supporto per VPC di una funzione Lambda?

Per abilitare il supporto per VPC, è necessario specificare una o più sottoreti in un singolo cloud privato virtuale e un gruppo di sicurezza durante la configurazione della funzione. Per disabilitare il supporto per VPC, devi aggiornare la configurazione della funzione e specificare un elenco vuoto per la sottorete e il gruppo di sicurezza. Puoi modificare queste impostazioni usando le API di AWS, l'interfaccia a riga di comando o la console di gestione di AWS Lambda.

D: Può una singola funzione Lambda accedere a più istanze VPC?

No. Le funzioni Lambda forniscono l'accesso a un solo VPC. Se sono specificate più sottoreti, devono trovarsi tutte nello stesso VPC. Puoi connetterti ad altri VPC tramite connessioni peer ai VPC.

D: Le funzioni Lambda in un cloud privato virtuale possono accedere anche a Internet e a endpoint di servizi AWS?

Le funzioni Lambda configurate per accedere alle risorse in un cloud privato virtuale specifico non hanno di default accesso a Internet. Se occorre accedere a endpoint esterni, è necessario creare un processo NAT nel cloud privato virtuale per inoltrare il traffico e configurare il gruppo di sicurezza in modo da consentirlo in uscita.

Funzioni AWS Lambda in Java

D: Come si compila il codice Java di una funzione AWS Lambda?

Per compilare una funzione Lambda, è possibile avvalersi di strumenti come Maven o Gradle. Il processo di compilazione deve simulare lo stesso processo che useresti per compilare qualsiasi codice Java che dipende dall'SDK AWS. Esegui il compilatore Java nei file di origine e includi l'SDK AWS versione 1.9 o successiva con dipendenze transitive dal classpath. Per ulteriori informazioni, consulta la nostra documentazione.

D: Quale ambiente JVM viene usato da Lambda per l'esecuzione di una funzione?

Lambda offre la build Amazon Linux 1.8 di openjdk.

Funzioni AWS Lambda in Node.js

D: È possibile usare pacchetti con AWS Lambda?

Sì. Puoi usare pacchetti NPM e pacchetti personalizzati. Per ulteriori informazioni, fai clic qui.

D: È possibile eseguire altri programmi a partire da una funzione AWS Lambda compilata in Node.js?

Sì. La sandbox integrata di Lambda ti permette di eseguire script in batch ("shell"), runtime di altri linguaggi, routine di utility ed eseguibili. Per ulteriori informazioni, fai clic qui.

D: È possibile usare moduli nativi con funzioni AWS Lambda compilate in Node.js?

Sì. Tutti i moduli nativi a collegamento statico, nonché tutti i moduli a collegamento dinamico compilati con un percorso rpath che punta alla directory root della funzione Lambda, possono essere inclusi nel file ZIP caricato. Per ulteriori informazioni, fai clic qui.

D: È possibile eseguire file binari con AWS Lambda compilati in Node.js?

Sì. Puoi usare il comando child_process di Node.js per eseguire un file binario incluso nella funzione o qualsiasi eseguibile di Amazon Linux visibile per la funzione. In alternativa, sono disponibili diversi pacchetti NPM che includono file binari per la riga di comando, ad esempio node-ffmpeg. Per ulteriori informazioni, fai clic qui.

D: In che modo è possibile distribuire il codice di una funzione AWS Lambda compilata in Node.js?

Per distribuire una funzione Lambda compilata in Node.js è sufficiente creare un pacchetto in formato ZIP che includa il codice JavaScript e le librerie dipendenti. Puoi caricare il file ZIP dall'ambiente locale oppure specificare una posizione in Amazon S3 in cui si trova il file ZIP. Per ulteriori informazioni, consulta la nostra documentazione.

Funzioni AWS Lambda in Python

D: È possibile usare pacchetti Python con AWS Lambda?

Sì. Puoi usare il comando pip per installare pacchetti Python.

Funzioni AWS Lambda in C#

D: In che modo è possibile includere in pacchetti e distribuire una funzione AWS Lambda in C#?

È possibile creare una funzione Lambda in C# utilizzando IDE Visual Studio e selezionando "Publish to AWS Lambda" nello strumento di esplorazione delle soluzioni. In alternativa, è possibile eseguire direttamente il comando "dotnet lambda publish" dalla CLI dotnet sulla quale è installato [# Lambda CLI tools patch], che crea uno ZIP del codice di origine in C# insieme a tutte le dipendenze NuGet, oltre agli assembly DLL pubblicati di proprietà e li carica automaticamente su AWS Lambda utilizzando il paramento di runtime “dotnetcore1.0”

Altri argomenti

D: Quali versioni di Amazon Linux, Node.js, Python, JDK, .NET Core, SDK e altre librerie supporta AWS Lambda?

È possibile visualizzare l'elenco delle versioni supportate in questa pagina.

D: È possibile modificare la versione di Amazon Linux o di un runtime di sintassi?

No. AWS Lambda offre un'unica versione del sistema operativo e del runtime del linguaggio per tutti gli utenti del servizio.

D: In che modo è possibile registrare ed eseguire audit delle chiamate effettuate all'API AWS Lambda?

AWS Lambda si integra con AWS CloudTrail. AWS CloudTrail può registrare e distribuire file di log in un bucket Amazon S3 per memorizzare l'utilizzo dell'API nell'account.

D: In che modo è possibile coordinare le chiamate tra più funzioni Lambda?

È possibile utilizzare Amazon Step Functions per coordinare più funzioni di richiamo Lambda. È possibile richiamare più funzioni Lambda in ordine seriale, trasferire il risultato dall’una all’altra o in parallelo. Per ulteriori informazioni, consulta la documentazione.

Ulteriori informazioni sui prezzi di AWS Lambda

Visita la pagina dei prezzi
Sei pronto per iniziare?
Registrati
Hai domande?
Contattaci