AWS LAMBDA

Lambda è il principale servizio di AWS per l’esecuzione serverless di codice. E’ un servizio di calcolo basato su eventi serverless che permette di eseguire codici per qualsiasi tipo di applicazione o servizio back-end senza effettuare il provisioning o gestire server. E’ possibile attivare Lambda da oltre 200 servizi AWS ed applicazioni di software come servizio (SaaS), e paghi solo quello che usi.

Aws Lambda Delivery
Lambda

È possibile utilizzare AWS Lambda per estendere altri servizi AWS con logica personalizzata, oppure per creare propri servizi di back-end in grado di sfruttare la scalabilità, le prestazioni e la sicurezza di AWS. AWS Lambda può eseguire automaticamente il codice in risposta a eventi multipli, come richieste HTTP tramite Amazon API Gateway, modifiche agli oggetti in bucket Amazon Simple Storage Service (Amazon S3), l’aggiornamento di tabelle in Amazon DynamoDB e le transizioni di stato in AWS Step Functions.

Lambda esegue il tuo codice su un’infrastruttura di calcolo ad elevata disponibilità ed esegue tutte le attività di amministrazione delle risorse di calcolo. Tra queste, la manutenzione del server e del sistema operativo, il provisioning della capacità e la scalabilità automatica, l’implementazione di codici e patch di sicurezza e il monitoraggio e la registrazione di codici. Tutto quello che devi fare è fornire il codice. Queste ed altre caratteristiche rendono Lambda particolare adatto ai seguenti casi d’uso:

  1. Elaborazione di dati su vasta scala: Esegui codici alla capacità di cui hai bisogno nel modo in cui ne hai bisogno. Ridimensiona per adattare automaticamente al tuo volume di dati ed abilita attivazioni di eventi personalizzate.
  2. Esecuzione di backend interattivi Web e per dispositivi mobili: Combina AWS Lambda con altri servizi AWS per creare esperienze online sicure, stabili e scalabili.
  3. Abilita importanti informazioni dettagliate di ML: Preelabora i dati prima di inviarli al modello di machine learning (ML). Con l’accesso di Amazon Elastic File System (EFS) ed S3, AWS Lambda gestisce l’infrastruttura ed il provisioning per semplificare il dimensionamento.
  4. Crea applicazioni basate su eventi: Costruzione di funzioni basate su eventi per una comunicazione facile fra servizi slegati.

Le nostre best practice per la sicurezza di Lambda

AWS Lambda è un servizio piuttosto potente e ampiamente utilizzato. E poiché il servizio viene eseguito su AWS, è intrinsecamente molto sicuro grazie all’architettura di alta qualità di Amazon.

E’ importante tenere ben presente che la CPU per Lambda è assegnata proporzionalmente alla memoria assegnata alla funzione lambda. Pertanto a volte l’assegnazione di più memoria aiuta una funzione a essere eseguita più velocemente e a ridurre i costi.

Questo può essere complicato in quanto aumenta la memoria e aumentano anche i costi ed è importante notare che dopo un certo livello la riduzione dell’esecuzione diventa molto meno significativa rispetto all’aumento dei costi e chiaramente rappresentata nel grafico sottostante. Pertanto, è molto importante trovare il giusto equilibrio tra memoria e tempo di esecuzione per assicurarsi che lambda operi in un ambiente ottimizzato.

L’approccio di CriticalCase è proprio quello di studiare il giusto equilibrio nella pre-allocazione delle risorse, sia in fase di disegno della soluzione Serverless, sia nelle fasi successive di monitoring e fine-tuning della soluzione nel tempo.

Allocazione della memoria rispetto al tempo di esecuzione in una funzione Lambda

Allocazione della memoria rispetto al tempo di esecuzione in una funzione Lambda

Detto questo, ci sono alcune considerazioni speciali che devono essere prese per proteggere AWS Lambda. Ecco alcune best practice per la sicurezza di AWS Lambda da considerare:

  • Tieni separate le tue Lambda

Per evitare fughe di dati, AWS consiglia di non archiviare dati utente, eventi e altri dati con implicazioni sulla sicurezza nell’ambiente di esecuzione. Il nostro consiglio è di creare funzioni separate e versioni di funzioni separate per ciascun utente, per funzioni che si basano su uno stato mutabile che non può essere archiviato in memoria all’interno del gestore.

  • Usa un gateway API

L’uso di un gateway API per richiamare le Lambda functions è fortemente consigliato, inoltre è un servizio AWS fortemente integrato. Un API gateway può fungere da porta d’ingresso per la funzione Lambda, assicurando che solo le identità autorizzate vi accedano. Amazon offre il proprio API gateway per creare e documentare API Web che instradano le richieste a specifiche funzioni Lambda.Utilizzando API Gateway, puoi proteggere l’accesso a ciascuna funzione Lambda e mantenere un’autenticazione di autorizzazione rigorosa. Per ulteriori informazioni su come utilizzare AWS Lambda con il gateway API Amazon, leggi i documenti.

  • Usa una governance IAM rigorosa

AWS Identity and Access Management (IAM) consente agli amministratori di controllare l’accesso alle risorse AWS. Questo servizio consente agli amministratori di controllare chi è autenticato e autorizzato a utilizzare le risorse Lambda, nonché di configurare ciò che gli stessi lambda hanno il privilegio di fare.

Continuous Integration/Continuous Delivery (CI/CD)

Il nostro consiglio è di gestire in modo programmatico tutte le distribuzioni serverless tramite pipeline CI/CD. Perché la velocità di sviluppo con un’architettura serverless sarà molto più frequente. La creazione di distribuzioni e aggiornamenti manuali insieme alla necessità di distribuzioni più frequenti può causare colli di bottiglia ed errori.

Continuous Integration/Continuous Delivery

Il nostro consiglio è di utilizzare la suite di strumenti per la configurazione di una pipeline CI/CD, messa a disposizione direttamente da AWS:

  • AWS CodeCommit: CodeCommit è l’equivalente di AWS a GitHub o BitBucket. Fornire repository Git privati ​​e la possibilità di creare branch. Consentire le migliori pratiche di gestione del codice con un controllo degli accessi a grana fine.
  • AWS Code Pipeline: CodePipeline automatizza le fasi di compilazione, test e distribuzione del processo di rilascio ogni volta che viene apportata una modifica al codice. CodePipeline si integra con CodeCommit o altri servizi di terze parti come GitHub.
  • AWS CodeBuild: CodeBuild può essere utilizzato per la fase di compilazione della pipeline. Puoi usarlo per eseguire unit test e creare un nuovo pacchetto di codice Lambda. Integrandolo con AWS SAM per inviare il codice ad Amazon S3 e inviare i nuovi pacchetti a Lambda tramite CodeDeploy.
  • AWS CodeDeploy: CodeDeploy viene utilizzato per automatizzare le distribuzioni di nuovo codice nelle funzioni Lambda, eliminando la necessità di operazioni manuali soggette a errori. CodeDeploy ha diverse preferenze di distribuzione che puoi utilizzare a seconda delle tue esigenze. Ad esempio, puoi creare una distribuzione “Linear10PercentEvery1Minute”, trasferendo il 10% del traffico delle tue funzioni alla nuova versione della funzione ogni minuto per 10 minuti.
  • AWS CodeStar: CodeStar è un’interfaccia utente unificata che consente di creare una nuova applicazione con le migliori pratiche già implementate. Quando crei un progetto CodeStar, crea una pipeline CI/CD completamente implementata dall’inizio con i test già definiti. CodeStar è il modo più semplice per iniziare a creare un’applicazione.

Richiedi la tua prova gratuita

Ehi! Stai già andando via?

Iscriviti alla nostra newsletter per restare aggiornato sulle novità dell’universo Criticalcase