Desenvolvimento de API

Desenvolvendo Aplicações na AWS

Ricardo Sueiras

Principal Technologist

Integrações do API Gateway

 

Integrações do API Gateway

  • Várias opções de integração de back-end
  • HTTP: qualquer endpoint público roteável
  • APIs de serviços AWS como DynamoDB ou SNS
  • Funções Lambda
  • Recursos privados via links VPC
  • Respostas simuladas sem back-end real
Desenvolvendo Aplicações na AWS

Tipos de integração: proxy

 

Tipos de integração de API

  • O tipo de integração define o controle do API Gateway
  • Tipos proxy: AWS_PROXY e HTTP_PROXY
  • Toda a requisição HTTP vai direto ao back-end
  • API Gateway atua como passagem transparente
  • O back-end monta a resposta
Desenvolvendo Aplicações na AWS

Tipos de integração: não proxy

  • Tipos não proxy: AWS e HTTP
  • Você configura transformações de requisição e resposta
  • Guiadas por templates de mapeamento
  • Templates escritos em Velocity Template Language (VTL)

 

Tipos de integração de API

Desenvolvendo Aplicações na AWS

Validação de requisição

 

validação de requisição

  • Valide requisições antes de chegarem ao back-end
  • Detecta campos obrigatórios ausentes
  • Detecta JSON inválido
  • Detecta tipos de parâmetro incorretos
  • Falhas geralmente retornam 400 Bad Request
Desenvolvendo Aplicações na AWS

Validação de requisição

 

validação de requisição

  • A validação pode cobrir:
    • Headers
    • Parâmetros de query string
    • Corpo da requisição
    • Esquema JSON
Desenvolvendo Aplicações na AWS

Validação de requisição

 

validação de requisição

  • A validação compensa ao:
    • Reduzir requisições inválidas ao back-end
    • Diminuir o custo de execução do Lambda
    • Melhorar a confiabilidade da API
Desenvolvendo Aplicações na AWS

Transformações

  • Remodele requisições e respostas sem mexer no back-end
    • Mude a estrutura do payload
    • Renomeie campos
    • Transforme headers
    • Converta formatos de dados
    • Oculte detalhes de implementação
  • Impulsionado por templates de mapeamento VTL

 

Transformação de API

Desenvolvendo Aplicações na AWS

Tratamento de erros

 

Erros de API

  • Duas categorias de erro
    • Erros do gateway: gerados pelo API Gateway
    • Erros de integração: falhas do back-end
  • Erros comuns do gateway:
    • 400 Bad Request: validação de requisição falhou
    • 429 Too Many Requests: limite de throttling excedido
Desenvolvendo Aplicações na AWS

Tratamento de erros

 

Erros de API

  • Erros comuns de integração:
    • 502 Bad Gateway: resposta malformada ou inválida
    • 503 Service Unavailable: back-end indisponível ou sobrecarregado
    • 504 Gateway Timeout: excedeu o timeout de 29 s
    • REST APIs Regionais e Privadas podem ir além de 29 s
Desenvolvendo Aplicações na AWS

Registro em log

  • Logs de execução e métricas do CloudWatch são essenciais para diagnóstico
  • API Gateway integra com CloudWatch para:
    • Logs
    • Métricas
    • Rastreamento de execução

 

 

Observabilidade de API

Desenvolvendo Aplicações na AWS

Registro em log

  • Logs do CloudWatch ajudam a diagnosticar:
    • Integrações com falha
    • Erros de transformação
    • Falhas de autorização
    • Problemas de execução do Lambda

 

 

Observabilidade de API

Desenvolvendo Aplicações na AWS

Stages: gerenciando APIs entre ambientes

 

Stages

  • Uma definição de API atende vários ambientes
  • Stages são como o API Gateway gerencia esses ambientes
Desenvolvendo Aplicações na AWS

Stages: gerenciando APIs entre ambientes

 

Stages

  • Uma definição de API atende vários ambientes
  • Stages são como o API Gateway gerencia esses ambientes
  • Um stage é uma referência nomeada
  • Aponta para um snapshot de deployment da configuração da sua API
Desenvolvendo Aplicações na AWS

Stages: gerenciando APIs entre ambientes

 

Stages

  • Uma definição de API atende vários ambientes
  • Stages são como o API Gateway gerencia esses ambientes
  • Um stage é uma referência nomeada
  • Aponta para um snapshot de deployment da configuração da sua API
  • Nomes comuns de stages:
    • Dev
    • Test
    • QA e Prod
Desenvolvendo Aplicações na AWS

Stages: gerenciando APIs entre ambientes

 

Stages

  • Uma definição de API atende vários ambientes
  • Stages são como o API Gateway gerencia esses ambientes
  • Um stage é uma referência nomeada
  • Aponta para um snapshot de deployment da configuração da sua API
  • Nomes comuns de stages: Dev, Test, QA, Prod
  • A invoke URL reflete cada stage
Desenvolvendo Aplicações na AWS

Stages: gerenciando APIs entre ambientes

 

Stages

  • Uma definição de API atende vários ambientes
  • Stages são como o API Gateway gerencia esses ambientes
  • Um stage é uma referência nomeada
  • Aponta para um snapshot de deployment da configuração da sua API
  • Nomes comuns de stages: Dev, Test, QA, Prod
  • A invoke URL reflete cada stage
  • Vários stages podem apontar para um deployment para rollback instantâneo
Desenvolvendo Aplicações na AWS

Stages: gerenciando APIs entre ambientes

 

Stages

  • Mudanças entram no ar apenas quando implantadas em um stage
Desenvolvendo Aplicações na AWS

Recursos de stages

  • Cada stage é configurado de forma independente
  • A configuração inclui variáveis de stage
  • Variáveis de stage são pares chave-valor
  • Direcione um deployment para back-ends diferentes
  • Sem precisar reimplantar para mudanças de ambiente

 

stage

Desenvolvendo Aplicações na AWS

Recursos de stages

  • Deployments canário
    • Apenas para REST APIs
    • Envie uma porcentagem do tráfego para um novo deployment
    • Promova para release completa
    • Exclua o canário para reverter

 

stage

Desenvolvendo Aplicações na AWS

Recursos de stages

  • Throttling
    • Definido no nível do stage
    • Vale para todos os métodos, com exceções por método

 

stage

Desenvolvendo Aplicações na AWS

Recursos de stages

  • Throttling
    • Definido no nível do stage
    • Vale para todos os métodos, com exceções por método
  • Cache
    • Apenas para REST APIs
    • Armazena respostas do back-end no stage
    • Clientes ignoram com Cache-Control
    • TTL de 0 a 3600 s, padrão 300

 

stage

Desenvolvendo Aplicações na AWS

Recursos de stages

  • Logging oferece dois modos
    • Logs de acesso
    • Construídos com variáveis $context, enviados para um grupo de logs do CloudWatch
    • Logs de execução
    • Capturam detalhes completos de requisição e resposta

 

stage

Desenvolvendo Aplicações na AWS

Vamos praticar!

Desenvolvendo Aplicações na AWS

Preparing Video For Download...