construindo apis com amazon api gateway e aws lambda

47
© 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

Upload: amazon-web-services-latam

Post on 20-Jan-2017

475 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Construindo APIs com Amazon API Gateway e AWS Lambda

© 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

Page 2: 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

Page 3: Construindo APIs com Amazon API Gateway e AWS Lambda

Aplicação rodando na AWS

Page 4: Construindo APIs com Amazon API Gateway e AWS Lambda

Aplicação rodando na AWS sem auto-scaling

Page 5: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 6: Construindo APIs com Amazon API Gateway e AWS Lambda

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!

Page 7: Construindo APIs com Amazon API Gateway e AWS Lambda

Aplicação rodando na AWS com Lambda

Page 8: Construindo APIs com Amazon API Gateway e AWS Lambda

AWS Lambda

Page 9: Construindo APIs com Amazon API Gateway e AWS Lambda

AWS Lambda

Serverless, event-driven compute service

microservice sem servidores

Page 10: Construindo APIs com Amazon API Gateway e AWS Lambda

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)

Page 11: Construindo APIs com Amazon API Gateway e AWS Lambda

Benefícios

EVENT-DRIVEN SCALESERVERLESS SUBSECOND BILLING

Page 12: Construindo APIs com Amazon API Gateway e AWS Lambda

Por que serverless AWS? Isso é barato…

Page 13: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 14: Construindo APIs com Amazon API Gateway e AWS Lambda

Integrações

Lambda Backend

SNS

Cognito

Kinesis

Dynamo

S3

SDKMobile, Alexa

API Gateway

SES

CloudWatch

CloudFormationAWS Config

Scheduled events

Page 15: Construindo APIs com Amazon API Gateway e AWS Lambda

Pontos de Atenção

Controle de Permissão Stateless

Logging e Monitoramento

Page 16: Construindo APIs com Amazon API Gateway e AWS Lambda

Casos de Uso - Tumbnail

Page 17: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 18: Construindo APIs com Amazon API Gateway e AWS Lambda

Casos de Uso - ETL

Page 19: Construindo APIs com Amazon API Gateway e AWS Lambda

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.

Page 20: Construindo APIs com Amazon API Gateway e AWS Lambda

Casos de Uso – Segurança

Page 21: Construindo APIs com Amazon API Gateway e AWS Lambda

AWS Lambda

Demo

Page 22: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 24: Construindo APIs com Amazon API Gateway e AWS Lambda

Amazon API Gateway

Page 25: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 26: Construindo APIs com Amazon API Gateway e AWS Lambda

Na AWS, nós rodamos muitas APIs

…Com o passar do tempo, nós aprendemos algumas lições

Page 27: Construindo APIs com Amazon API Gateway e AWS Lambda

Seu feedback

Gerenciar múltiplas versões e estágios de uma API é difícil.

Page 28: Construindo APIs com Amazon API Gateway e AWS Lambda

Seu feedback

Gerenciar múltiplas versões e estágios de uma API é difícil.

Monitorar acessos de desenvolvedores terceiros consome tempo.

Page 29: Construindo APIs com Amazon API Gateway e AWS Lambda

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.

Page 30: Construindo APIs com Amazon API Gateway e AWS Lambda

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.

Page 31: Construindo APIs com Amazon API Gateway e AWS Lambda

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?

Page 32: Construindo APIs com Amazon API Gateway e AWS Lambda

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!

Page 33: Construindo APIs com Amazon API Gateway e 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

Page 34: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 35: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 36: Construindo APIs com Amazon API Gateway e AWS Lambda

Gerencie múltiplos ambientes e versões de sua API

API 1 (v1)

Stage (dev)

Stage (prod)

API 2 (v2)

Stage (dev)

Page 37: Construindo APIs com Amazon API Gateway e AWS Lambda

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)

Page 38: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 39: Construindo APIs com Amazon API Gateway e AWS Lambda

Segurança – Custom Authorizer

Page 40: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 41: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 42: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 43: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 44: Construindo APIs com Amazon API Gateway e AWS Lambda

Outras Funcionalidades

Mock Integration

Importador de Swagger

Gere SDKs a partir de suas APIs

Custom Domain / HTTPS

Client-Side SSL Authentication

Link lambda version

Page 45: Construindo APIs com Amazon API Gateway e AWS Lambda

Amazon API Gateway

Demo

Page 46: Construindo APIs com Amazon API Gateway e AWS Lambda

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

Page 47: Construindo APIs com Amazon API Gateway e AWS Lambda