Progettare API su AWS

Sviluppare applicazioni su AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

Cosa sono le API

 

  • Amazon API Gateway: servizio gestito per creare API.
  • Progetta, distribuisci, gestisci e proteggi le tue API.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità API

  • Implementa diversi tipi di API.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità API

  • Implementa diversi tipi di API.
  • Integra con servizi backend.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità di API Gateway

  • Implementa diversi tipi di API.
  • Integra con servizi backend.
  • Proteggi l'accesso alle API.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità di API Gateway

  • Implementa diversi tipi di API.
  • Integra con servizi backend.
  • Proteggi l'accesso alle API.
  • Limita le richieste per proteggere i backend.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità di API Gateway

  • Implementa diversi tipi di API.
  • Integra con servizi backend.
  • Proteggi l'accesso alle API.
  • Limita le richieste per proteggere i backend.
  • Trasforma i payload di richiesta e risposta.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità di API Gateway

  • Implementa diversi tipi di API.
  • Integra con servizi backend.
  • Proteggi l'accesso alle API.
  • Limita le richieste per proteggere i backend.
  • Trasforma i payload di richiesta e risposta.
  • Pubblica API per i consumer.
Sviluppare applicazioni su AWS

Funzionalità di Amazon API Gateway

 

Funzionalità di API Gateway

  • Implementa diversi tipi di API.
  • Integra con servizi backend.
  • Proteggi l'accesso alle API.
  • Limita le richieste per proteggere i backend.
  • Trasforma i payload di richiesta e risposta.
  • Pubblica API per i consumer.
  • Gestisci il ciclo di vita: versioni, deployment, alias.
Sviluppare applicazioni su AWS

Tipi di API

  • API Gateway supporta tre tipi di API:
    • REST API
    • HTTP API
    • WebSocket API

 

Tipi di API

Sviluppare applicazioni su AWS

Endpoint di API Gateway

  • Gli endpoint controllano come i client raggiungono la tua API.
  • Edge-optimized: CloudFront gestito da AWS per bassa latenza globale.
  • Regional: distribuiti in una specifica Regione AWS.
  • Private: raggiungibili solo via AWS PrivateLink.
  • Gli endpoint privati restano fuori da internet pubblica.

 

Endpoint

Sviluppare applicazioni su AWS

REST API

  • Offerta API Gateway più ricca di funzionalità.
  • Basata su modello sincrono richiesta/risposta.

 

REST API

Sviluppare applicazioni su AWS

Casi d'uso delle REST API

 

Casi d'uso REST API

  • API enterprise che richiedono gestione completa del ciclo di vita.
  • API con controlli di sicurezza avanzati.
  • Ecosistemi di sviluppatori terzi con API key e piani d'uso.
  • Integrazioni dirette con servizi AWS senza Lambda.
Sviluppare applicazioni su AWS

Supporto REST API di API Gateway

 

Supporto REST API

  • Validazione delle richieste.
  • API key.
  • Piani d'uso e throttling.
  • Cache delle risposte con TTL configurabile.
  • Trasformazioni richiesta/risposta via template VTL.
  • Autenticazione IAM (Signature V4).
  • Lambda authorizer, pool utenti Cognito.
Sviluppare applicazioni su AWS

Supporto REST API di API Gateway

 

 

Supporto REST API

  • Tre tipi di endpoint supportati:
    • Edge-optimized
    • Regional
    • Private
  • Protezione dagli exploit web con AWS WAF.
  • Deployment canary.
  • Observability con AWS X-Ray e log CloudWatch.
Sviluppare applicazioni su AWS

Compromessi delle REST API

  • Più costose delle HTTP API.
  • Latenza leggermente superiore.

 

Compromessi REST

Sviluppare applicazioni su AWS

HTTP API

  • Ottimizzate per prestazioni e costi rispetto all'ampiezza delle feature:
    • Prestazioni
    • Costi

 

HTTP API

Sviluppare applicazioni su AWS

Casi d'uso delle HTTP API

  • Workload serverless e API con backend Lambda.
  • Microservizi e API proxy leggere.
  • Applicazioni sensibili alla latenza.
  • API con autenticazione OAuth 2.0 / OIDC.

 

Casi d'uso HTTP API

Sviluppare applicazioni su AWS

Supporto HTTP API di API Gateway

 

Funzionalità HTTP API

  • Integrazioni e authorizer Lambda proxy.
  • Autorizzazione JWT/OIDC nativa (Cognito, Auth0, Okta).
  • Configurazione CORS integrata a livello di API.
  • Integrazioni VPC private tramite VPC Link.
  • Mapping base dei parametri per header, query string e path.
Sviluppare applicazioni su AWS

Compromessi delle HTTP API

 

Limitazioni HTTP API

  • Le HTTP API NON supportano:

    • API key
    • Piani d'uso
    • Validazione delle richieste
    • Cache delle risposte
    • Tracing con AWS X-Ray
    • Trasformazione payload VTL

    • Supportano solo:

      • Endpoint edge o privati (solo regional)
Sviluppare applicazioni su AWS

WebSocket API

 

WebSocket API

  • Comunicazione bidirezionale tra client e server.
  • La connessione resta aperta, a differenza di REST e HTTP API.
  • I server possono inviare dati ai client connessi.
Sviluppare applicazioni su AWS

Casi d'uso delle WebSocket API

  • App di chat.
  • Notifiche in tempo reale.
  • Dashboard in tempo reale.

 

casi d'uso

Sviluppare applicazioni su AWS

Supporto WebSocket API di API Gateway

  • Trasformazioni dei payload.
  • Validazione delle richieste.
  • Route speciali integrate:
    • $connect: il client stabilisce una connessione
    • $disconnect: il client si disconnette
    • $default: nessuna route corrispondente trovata

 

Funzionalità WebSocket API

Sviluppare applicazioni su AWS

Cache API

  • Mettere in cache le risposte riduce il carico sul backend.
  • Migliora le prestazioni dell'API.
  • Casi d'uso tipici:
    • Dati richiesti spesso
    • API con molte letture
    • Ridurre le invocazioni Lambda

 

Cache API

Sviluppare applicazioni su AWS

Cache API

 

Risposta in cache API

  • Le risposte in cache scadono dopo un TTL configurabile.
  • Gestisci i dati obsoleti:
    • Impostando la scadenza della cache
    • Svuotando la cache
Sviluppare applicazioni su AWS

Best practice di design API: nomi risorsa chiari

 

Progettazione API - sostantivi

  • I path devono rappresentare risorse, non azioni.
  • Usa sostantivi, non verbi.
  • Bene:
    • GET /orders/123
  • Evita:
    • GET /getOrder/123
Sviluppare applicazioni su AWS

Best practice di design API: versionare le API

 

Versionamento API

  • Versiona le API per farle evolvere in sicurezza nel tempo.
  • Evita di rompere i client esistenti.
  • Approcci comuni:
    • Versione nella URI: GET /v1/orders
    • Query parameter: GET /orders?version=1
    • Header HTTP: Accept-Version: v1
Sviluppare applicazioni su AWS

Portali per sviluppatori API

  • Pubblica e condividi REST API tramite un portale web.
  • Fornisci documentazione ai consumer delle API.
  • Funzionalità chiave:
    • Documentazione API (file Swagger)
    • Onboarding dei consumer
    • Download SDK
    • Registrazione API key e flussi di sottoscrizione

 

portale api gateway

Sviluppare applicazioni su AWS

Specifiche OpenAPI

  • OpenAPI (Swagger): lo standard per descrivere le REST API.
  • API Gateway può importare ed esportare specifiche OpenAPI.

 

Supporto Swagger in API Gateway

Sviluppare applicazioni su AWS

Esercitiamoci!

Sviluppare applicazioni su AWS

Preparing Video For Download...