Pubblicato il 22/06/2022 da alnao nella categoria AWS

Tipicamente la Lambda Function sono funzione studiate per dialogare con altri servizi AWS come le basi dati RDS, Dynamo o S3 oppure sono studiate per esporre API con il servizio di API Manager. Visto che di default i servizi AWS non hanno i permessi di dialogare tra loro, bisogna prevedere delle regole IAM per permettere le comunicazioni che possono essere create manualmente oppure usando il servizio di Lambda Application che lega le funzioni lambda con i servizi collegati. La creazione manuale è impossibile, di default la console presenta cinque opzioni

  • API Rest esposte con API manager sviluppate con NodeJS
  • Trigger su S3 per l’elaborazione di file
  • Job Schedulato su CloudWatch Events
  • Processo di notifiche basato sul servizio SNS
  • Elaborazioni di Code bastato sul servizio SQS

questi sono esempi di default ma è presente anche “AWS Serverless Application Repository” oppure è possibile creare una funzione da zero indicando i parametri. In ogni creazione oltre al nme e al runtime, si deve indicare un repository CloudCommit oppure un repository CodeStarCommit collegando il servizio GitHub. In un box quasi nascosto inoltre è necessario aggiungere la voce di “Crea ruoli e limiti delle autorizzazioni” per la configurazione delle solite regole IAM. Una volta creata una app, nel dettaglio si possono vedere tutte le componenti che vengono create, nell’esempio di API Rest i componenti creati sono:

  • un repository GIT nel servizio CodeCommit
  • un modello SAM visibile nella vista distribuzione
  • una tabella Dynamo visibile nel servizio dedicato
  • API Rest esposte con il servizio API Gateway con i metodi GET e POST

Da notare che nel servizio API Gateway sono create due fasi per produzione e staging, in questo caso si può usare l’endpoint esposto

https://<id-api>.execute-api.<region>.amazonaws.com/Prod

per caricare dati nella tabella Dynamo con il metodo POST e poi recuperare l’elenco con il metodo GET.
Da notare che nel servizio CloudCommit è stato creato un repository dove sono presenti il modello SAM in formato yaml e tutto il codice e tutto il codice NodeJS per la gestione delle API ed è stato creato un servizio di CloudPipeline per i rilasci automatici. Per maggiori informazioni riguardo a come CloudPipeline lavora con le Lambda Application si rimanda all’articolo dedicato in cui viene descritto come eseguire i deploy automatici di una Application tramite il repository GIT di CloudCommit.