Testare e distribuire le tue API

Sviluppare applicazioni su AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code per sviluppatori

 

iac

  • Le app cloud native si distribuiscono con Infrastructure-as-Code (IaC).
  • Definisci le risorse cloud in file di configurazione.
  • Evita la configurazione manuale nella AWS Management Console (clickops).
Sviluppare applicazioni su AWS

AWS CloudFormation

 

cloudformation

  • Il servizio IaC fondamentale in AWS.
  • Definisci risorse AWS con template YAML o JSON.
Sviluppare applicazioni su AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK definisce l'IaC usando codice.
  • Scrivi in Python, TypeScript o Java invece di YAML o JSON.
  • Le app vengono sintetizzate in template CloudFormation al deploy.
Sviluppare applicazioni su AWS

AWS Serverless Application Model (SAM)

  • Estende CloudFormation.
  • Sintassi semplificata per risorse serverless e API.
  • Funziona come livello di trasformazione.
  • Converte la sintassi SAM in template CloudFormation completi.

 

sam

Sviluppare applicazioni su AWS

Funzionalità di SAM

  • Genera automaticamente ruoli IAM a privilegi minimi, con margine di affinamento.
  • Definisci la pipeline di deploy come configurazione.
  • Esegui packaging e deploy con sam build e sam deploy.
  • Intercetta errori nei template con sam validate.
  • Emula Lambda in locale con sam local start-lambda.
    • Fornisce un endpoint locale persistente

 

sam features

Sviluppare applicazioni su AWS

Test con SAM

  • Crea, invoca e testa app serverless in locale prima del deploy.
  • Testa funzioni Lambda e integrazioni API Gateway.
  • Invoca una funzione in locale con sam local invoke.
    • Invocazione one-shot
  • Emula API Gateway con sam local start-api.

 

testing with sam

Sviluppare applicazioni su AWS

Unit test

 

unit tests

  • Usa SAM con unit test per validare il comportamento di Lambda.
  • I test locali velocizzano i cicli di sviluppo.
  • Abbinalo a framework come pytest, JUnit o Jest.
Sviluppare applicazioni su AWS

Flusso di test

 

test workflow

  • Genera eventi di test con sam local generate-event.
  • Produce file di eventi JSON.
  • Invoca in locale con sam local invoke FunctionName -e event.json.
  • Aggiungi asserzioni del framework per verificare la risposta prima del deploy.
Sviluppare applicazioni su AWS

Mocking dei servizi AWS

 

mocking tests

  • Combina test locali con librerie di mocking come moto.
  • Interagisci con servizi AWS simulati, senza chiamate reali.
  • Migliora la velocità dei test.
  • Riduce i costi di test.
  • Valida scenari di errore come throttling o failure.
Sviluppare applicazioni su AWS

Continuous integration e continuous deployment (CI/CD)

  • Le app SAM si distribuiscono spesso con pipeline CI/CD.
  • Automatizza build, test, packaging e deploy.
  • AWS CodeCommit archivia codice e template SAM.
  • AWS CodeBuild esegue i test e sam build.
  • AWS CodePipeline orchestra il workflow.

 

cicd

Sviluppare applicazioni su AWS

Workflow CI/CD

  • Effettua il commit del codice sorgente e del template SAM in un repo.
  • Esegui test e validazioni automatici.
  • Esegui il packaging dell'app con sam build.
  • Distribuisci le risorse con sam deploy.
  • Monitora dopo il deploy con CloudWatch.

 

workflow

Sviluppare applicazioni su AWS

Risoluzione dei problemi nei deploy

  troubleshooting

  • Il troubleshooting è una competenza operativa chiave.
  • Errori comuni di deploy:
  • Problemi di permessi IAM.
  • Template SAM o CloudFormation non validi.
  • Packaging Lambda fallito o dipendenze mancanti.
  • Configurazioni errate di API Gateway.
Sviluppare applicazioni su AWS

Risoluzione dei problemi nei deploy

  troubleshooting

  • I deploy SAM girano su CloudFormation sotto il cofano.
  • Fornisce eventi dello stack e rollback automatico.
  • Aiuta a individuare i fallimenti di deploy.
  • Esegue il rollback per ripristinare lo stato precedente dell'ambiente.
Sviluppare applicazioni su AWS

Risoluzione dei problemi nei deploy

  troubleshooting

  • Risolvi i problemi usando:
  • CloudWatch Logs.
  • Log di esecuzione di API Gateway.
  • Log di Lambda.
  • Metriche CloudWatch.
Sviluppare applicazioni su AWS

Esercitiamoci!

Sviluppare applicazioni su AWS

Preparing Video For Download...