Projetando APIs na AWS

Desenvolvendo Aplicações na AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

O que são APIs

 

  • Amazon API Gateway: serviço gerenciado para criar APIs.
  • Projete, implemente, gerencie e proteja suas APIs.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos de API

  • Implemente diferentes tipos de API.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos de API

  • Implemente diferentes tipos de API.
  • Integre com serviços de backend.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos do API Gateway

  • Implemente diferentes tipos de API.
  • Integre com serviços de backend.
  • Proteja o acesso às APIs.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos do API Gateway

  • Implemente diferentes tipos de API.
  • Integre com serviços de backend.
  • Proteja o acesso às APIs.
  • Controle taxa para proteger backends.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos do API Gateway

  • Implemente diferentes tipos de API.
  • Integre com serviços de backend.
  • Proteja o acesso às APIs.
  • Controle taxa para proteger backends.
  • Transforme cargas de requisição e resposta.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos do API Gateway

  • Implemente diferentes tipos de API.
  • Integre com serviços de backend.
  • Proteja o acesso às APIs.
  • Controle taxa para proteger backends.
  • Transforme cargas de requisição e resposta.
  • Publique APIs para consumidores.
Desenvolvendo Aplicações na AWS

Recursos do Amazon API Gateway

 

Recursos do API Gateway

  • Implemente diferentes tipos de API.
  • Integre com serviços de backend.
  • Proteja o acesso às APIs.
  • Controle taxa para proteger backends.
  • Transforme cargas de requisição e resposta.
  • Publique APIs para consumidores.
  • Gerencie o ciclo de vida: versionamento, deploy, aliases.
Desenvolvendo Aplicações na AWS

Tipos de API

  • O API Gateway tem três tipos de API:
    • REST APIs
    • HTTP APIs
    • WebSocket APIs

 

Tipos de API

Desenvolvendo Aplicações na AWS

Endpoints do API Gateway

  • Endpoints controlam como clientes acessam sua API.
  • Edge-optimized: CloudFront gerenciado pela AWS para baixa latência global.
  • Regional: implantado em uma Região AWS específica.
  • Private: acessível apenas via AWS PrivateLink.
  • Endpoints privados ficam fora da internet pública.

 

Endpoints

Desenvolvendo Aplicações na AWS

REST APIs

  • Oferta do API Gateway mais completa em recursos.
  • Baseada em modelo síncrono de requisição/resposta.

 

REST APIs

Desenvolvendo Aplicações na AWS

Casos de uso de REST API

 

Casos de uso de API REST

  • APIs corporativas que exigem gestão de ciclo de vida completa.
  • APIs com controles avançados de segurança.
  • Ecossistemas de desenvolvedores externos com chaves de API e planos de uso.
  • Integrações diretas com serviços AWS sem Lambda.
Desenvolvendo Aplicações na AWS

Suporte do API Gateway a REST API

 

Suporte a REST API

  • Validação de requisições.
  • Chaves de API.
  • Planos de uso e controle de taxa.
  • Cache de respostas com TTL configurável.
  • Transformação de requisição/resposta via templates VTL.
  • Autenticação IAM (Signature V4).
  • Autorizadores Lambda, pools de usuários Cognito.
Desenvolvendo Aplicações na AWS

Suporte do API Gateway a REST API

 

 

Suporte a REST API

  • Três tipos de endpoint suportados:
    • Edge-optimized
    • Regional
    • Private
  • Proteção contra exploits web com AWS WAF.
  • Deploys canário.
  • Observabilidade com AWS X-Ray e logs do CloudWatch.
Desenvolvendo Aplicações na AWS

Trade-offs de REST APIs

  • Mais caro que HTTP APIs.
  • Latência um pouco maior.

 

Trade-offs de REST

Desenvolvendo Aplicações na AWS

HTTP APIs

  • Otimizado para desempenho e custo em vez de muitos recursos:
    • Desempenho
    • Custo

 

HTTP APIs

Desenvolvendo Aplicações na AWS

Casos de uso de HTTP API

  • Cargas serverless e APIs com Lambda.
  • Microsserviços e APIs proxy leves.
  • Aplicações sensíveis à latência.
  • APIs com autenticação OAuth 2.0 / OIDC.

 

Casos de uso de HTTP APIs

Desenvolvendo Aplicações na AWS

Suporte do API Gateway a HTTP API

 

Recursos de HTTP API

  • Integrações e autorizadores Lambda proxy.
  • Autorização JWT/OIDC nativa (Cognito, Auth0, Okta).
  • Configuração CORS embutida no nível da API.
  • Integrações privadas de VPC via VPC Link.
  • Mapeamento básico de parâmetros para headers, query strings e paths.
Desenvolvendo Aplicações na AWS

Trade-offs de HTTP API

 

Limitações de HTTP API

  • HTTP APIs NÃO oferecem suporte a:

    • Chaves de API
    • Planos de uso
    • Validação de requisições
    • Cache de respostas
    • Tracing com AWS X-Ray
    • Transformação de payload com VTL

    • Suportam apenas:

      • Endpoints edge ou privados (somente regionais)
Desenvolvendo Aplicações na AWS

WebSocket APIs

 

WebSocket APIs

  • Comunicação bidirecional entre clientes e servidores.
  • Conexão permanece aberta, diferente de REST e HTTP APIs.
  • Servidores podem enviar dados para clientes conectados.
Desenvolvendo Aplicações na AWS

Casos de uso de WebSocket API

  • Aplicativos de chat.
  • Notificações em tempo real.
  • Dashboards em tempo real.

 

casos de uso

Desenvolvendo Aplicações na AWS

Suporte do API Gateway a WebSocket API

  • Transformações de dados do payload.
  • Validação de requisições.
  • Rotas especiais embutidas:
    • $connect: cliente estabelece conexão
    • $disconnect: cliente desconecta
    • $default: nenhuma rota correspondente encontrada

 

Recursos de WebSocket API

Desenvolvendo Aplicações na AWS

Cache de API

  • Cachear respostas reduz carga no backend.
  • Melhora o desempenho da API.
  • Casos típicos:
    • Dados frequentemente solicitados
    • APIs com muitas leituras
    • Reduzir invocações do Lambda

 

Cache de API

Desenvolvendo Aplicações na AWS

Cache de API

 

Resposta em cache da API

  • Respostas em cache expiram após um TTL configurável.
  • Gerencie dados obsoletos:
    • Definindo expiração do cache
    • Limpando o cache
Desenvolvendo Aplicações na AWS

Boas práticas de design de API: nomeie recursos com clareza

 

Design de API - substantivos

  • Paths devem representar recursos, não ações.
  • Use substantivos, não verbos.
  • Bom:
    • GET /orders/123
  • Evite:
    • GET /getOrder/123
Desenvolvendo Aplicações na AWS

Boas práticas de design de API: versionamento

 

Versionando APIs

  • Versione APIs para evoluí-las com segurança ao longo do tempo.
  • Evite quebrar clientes existentes.
  • Abordagens comuns:
    • Versão na URI: GET /v1/orders
    • Parâmetro de consulta: GET /orders?version=1
    • Header HTTP: Accept-Version: v1
Desenvolvendo Aplicações na AWS

Portais para desenvolvedores de API

  • Publique e compartilhe REST APIs via um portal web.
  • Forneça documentação aos consumidores da API.
  • Principais recursos:
    • Documentação da API (arquivos Swagger)
    • Onboarding de consumidores
    • Downloads de SDK
    • Registro de chaves de API e fluxos de assinatura

 

portal do api gateway

Desenvolvendo Aplicações na AWS

Especificações OpenAPI

  • OpenAPI (Swagger): padrão para descrever REST APIs.
  • O API Gateway pode importar e exportar especificações OpenAPI.

 

Suporte a Swagger no API Gateway

Desenvolvendo Aplicações na AWS

Vamos praticar!

Desenvolvendo Aplicações na AWS

Preparing Video For Download...