construindo apis com amazon api gateway e aws lambda

Post on 20-Jan-2017

476 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

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

top related