construindo apis com amazon api gateway e aws lambda
TRANSCRIPT
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Thiago Paulino, Arquiteto de Soluções
2016
Construindo APIs com Amazon API Gateway e AWS Lambda
O que esperar dessa sessão?
Introdução AWS Lambda• Benefícios• Como funciona?• Arquitetura de Referência• DemoIntrodução AWS API-Gateway• Benefícios• Como funciona?• Arquitetura de Referência• Demo
Aplicação rodando na AWS
Aplicação rodando na AWS sem auto-scaling
AWS Lambda
Um serviço de processamento o qual você não tem que pensar em:• Servidores• Alta ou baixa capacidade de recursos• Deploy de aplicações• Escalabilidade e tolerancia a falhas• Sistema operacional e atualizações• Metricas e log
AWS Lambda
…Agora tudo pode ser mais fácil.• Porte seu código para a AWS com bibliotecas nativas• Execute código em pararelo• Crie backends, execução baseada em eventos e processamento de dados
Nunca pague por algo parado!
Aplicação rodando na AWS com Lambda
AWS Lambda
AWS Lambda
Serverless, event-driven compute service
microservice sem servidores
O que é serverless AWS?
• Serverless = Não pense em servidores
• Lambda: Recursos computacionais baseado em eventos
• API Gateway: Contrua API’s rest com lambda
• Serverless AWS = Lambda + API Gateway
• “Lambda tem pontencial para ser o ponto focal da nuvem
AWS” – Janakiram MSV (janakiram.com)
Benefícios
EVENT-DRIVEN SCALESERVERLESS SUBSECOND BILLING
Por que serverless AWS? Isso é barato…
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
SDKMobile, 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
Procesamento de arquivos em tempo real
The Seattle Times utiliza AWS Lambda para redimensionar as imagens do seu site para diferentes dispositivos como: Computadores(Desktop e notebooks), tablets e smartphones
Casos de Uso - ETL
Encoding de arquivos
Os estudios de gravação enviam os arquivos para o Amazon S3. Após o envio uma função Lambda é executada para iniciar o processo de agregação desses arquivos, validação, identificação e publicação.
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
0
2000
4000
6000
8000
10000
12000
2418
10302
* 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
/login AWS Lambda fn_login
User accounts database
Credentials verified
Amazon Cognito developer
authenticated identities
Access and secret key
/loginReceives
credentials to sign API calls
Segurança – Custom Authorizer
Caching API responses
Requisição•Procura pelo item no cache
•Se encontrado, retorna o item
Verifica as configs de controle
• Verifica requests-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 suas APIs
Custom Domain / HTTPS
Client-Side SSL Authentication
Link lambda version
Amazon API Gateway
Demo
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