construindo apis com amazon api gateway e aws lambda
TRANSCRIPT
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Heitor Vital, Arquiteto de Soluções - AWS Brasil
Cristiano Camilo, Gerente de Arquitetura - CVC
Junho 2016
Construindo APIs com Amazon API
Gateway e AWS Lambda
AWS
Lambda
AWS Lambda
Serverless, event-driven compute service
microservice sem servidores
Benefícios
EVENT-DRIVEN SCALESERVERLESS SUBSECOND BILLING
Como Funciona
1. Upload do código
2. Configure evento e
permissões
3. Lambda executa em
resposta a eventos
4. Pague somente quando
a fução for executada
Integrações
Lambda
Backend
SNS
Cognito
Kinesis
Dynamo
S3
SDK
Mobile, Alexa
…
API Gateway
SES
CloudWatch
CloudFormationAWS Config
Scheduled events
Pontos de Atenção
Controle de Permissão Stateless
Logging e Monitoramento
Casos de Uso - Tumbnail
Casos de Uso - ETL
Casos de Uso – Segurança
AWS
Lambda
Demo
Limites
Resource Limits
Duração máxima: 5 minutos
Heap máxima: 1.5 GB
Armazenamento temporário ("/tmp"): 512 MB
Número máximo de processos/threads : 1.024
Tamanho máximo do pacote da aplicação (zip/jar): 50 MB
Estendendo AWS Lambda
Use o /tmp como cache
Rode qualquer executável (independente de linguagem)
Use plugins do Grunt e Jenkins para deploys
Slack + Lambda
JAWS: The Server-less Application Framework
Amazon API Gateway
Proliferação de APIs
O número de APIs publicadas está crescendo rapidamente
2418
10302
0
2000
4000
6000
8000
10000
12000
jun
/05
no
v/0
5
ab
r/0
6
se
t/06
fev/0
7
jul/0
7
de
z/0
7
ma
i/08
ou
t/0
8
ma
r/09
ag
o/0
9
jan
/10
jun
/10
no
v/1
0
ab
r/11
se
t/11
fev/1
2
jul/12
de
z/1
2
ma
i/13
ou
t/13
* Dados do ProgrammableWeb
Na AWS, nós rodamos muitas APIs
…Com o passar do tempo, nós aprendemos algumas lições
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Autorizar acessos é desafiador.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Autorizar acessos é desafiador.
Picos de tráfego geram um peso operacional.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Autorizar acessos é desafiador.
Picos de tráfego geram um peso operacional.
E se eu não quiser nenhum servidor?
Amazon API Gateway
Hospede múltiplas versões e ambientes das suas APIs
Crie e distribua chaves de API para desenvolvedores
Beneficie-se da Sigv4/JTW/OAuth para autorizar acesso às APIs
Controle e monitore requisições para proteger o backend, Cache ..
Use AWS Lambda!
Fluxo de uma chamada API
Internet
Mobile
apps
Websites
Serviços
API
Gateway
Funções
AWS
Lambda
AWS
API
Gateway
cache
Endpoints
na Amazon
Qualquer outro
endpoint
acessível
Amazon
CloudWatc
h
Configuração da API
Você pode criar APIs
Definir recursos da API
Definir métodos para o recurso
• Métodos são recurso + HTTP verb
Pet Store
/pets
/pets/{petId}
• GET
• POST
• PUT
Deploy da API
Configuração da API pode ser implantado em
um ambiente (stage)
Stages são ambientes diferentes; por exemplo:
• Dev (e.g., example.com/dev)
• Beta (e.g., example.com/beta)
• Prod (e.g., example.com/prod)
Pet Store
dev
beta
gamma
prod
Gerencie múltiplos ambientes e versões de sua
API
API 1 (v1)
Stage (dev)
Stage (prod)
API 2 (v2)
Stage (dev)
Custom domain names
• Você pode configurar custom domain names
• Forneça API Gateway com um certificado HTTPS
• Custom domain names podem ser apontados para um estágio da API
• Aponte para uma API e ambiente (stage)
• Beta (e.g., yourapi.com/beta)
• Prod (e.g., yourapi.com/prod)
Segurança – Sigv4
Call login API, no
authentication
required
Cliente API Gateway Backend
/loginAWS
Lambda
fn_login
User
accounts
database
Credentials
verified
Amazon Cognito
developer
authenticated
identities
Access and
secret key/login
Receives
credentials to
sign API calls
Segurança – Custom Authorizer
Caching API responses
Requisição
•Procura peloitem no cache
•Se encontrado, retorna o item
Verifica as configs de controle
• Verificarequests-per-second rate
• Se acima, return 429
Executa back-end
Caching API responses
Você pode configurar a chave de cache e TTL da resposta
da API
Itens cacheados retornam sem chamar o backend
Um cache é dedicado para você, por estágio (stage)
0.5 GB a 237 GB de cache
API GatewayBack end
GET - /sayHelloAWS
Lambda
fn_sayHello
/sayHello
{
“message” : “hello world”
}
<xml>
<message>
Hello world
</message>
</xml>
#set($root = $input.path('$'))
<xml>
<message>
$root.message
</message>
</xml>
Input/output transforms
Input/output transforms
Filtrar resultados de output
• Remover dados privados ou desnecessários
• Filtrar o tamanho do dataset para melhorar a performance da API
GET para POST
• Leia os query string parameters de sua requisição GET e crie um corpo para
fazer requisições POST para seu back end
JSON para XML
• Receba um input JSON e transforme-o em XML para seu back end
• Receba um JSON de uma função AWS Lambda e transforme-o para XML
Outras Funcionalidades
Mock Integration
Importador de Swagger
Gere SDKs a partir de sua Your APIs
Custom Domain / HTTPS
Client-Side SSL Authentication
Link lambda version
Amazon API Gateway
Demo
“Headline 1 – sobre resultados gerais do projeto”
• Maior rede exclusiva de turismo do
Brasil, contando com mais de 1000
lojas próprias
• Mais de 7 milhões de clientes
embarcados em 2015
• Marca “Top of Mind” no segmento de
Turismo
• 44 anos de experiência no Mercado
“Com a combinação dos
mecanismos da AWS
Api Gateway, Elastic
Cache e Lambda
pudemos desenhar uma
arquitetura escalável e
de rápida
implementação.”
Cristiano Camilo
O Desafio
• Substituir arquitetura atual por outra
mais escalável, suportando assim
picos de acesso mais naturalmente
• Prover um melhor tempo de resposta
para o usuário final, sem a latência
dos atuais fornecedores
• Padronizar as APIS expostas e
garantir segurança de acesso as
mesmas
Solução
Amazon API GatewayRecapitulando
AWS Lambda
• Não há servidores para serem
gerenciados
• Escalabilidade contínua
• Medidor de sub-segundo
• Econômico e eficiente
• Desempenho em qualquer escala
• Monitore facilmente as atividades
das APIs
• Agilize o desenvolvimento de APIs
• Controles de segurança flexíveis
• Crie endpoints RESTful para
serviços existentes
• Execute suas APIs sem servidores