SlideShare une entreprise Scribd logo
1  sur  41
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construyendo APIs Seguras y Escalables
Demostración usando Amazon API Gateway y AWS Lambda
Mauricio Muñoz
Enterprise Solutions Architect, LATAM
Abril, 2016
¿Qué vamos a ver en esta sesión?
1. Nuevo modelo de desarrollo: Completamente
gerenciado
2. Declarar APIs con Amazon API Gateway
3. Lógica de la aplicación en AWS Lambda
4. APIs de Login y Registro, utilizando Amazon Cognito
5. Autorización utilizando AWS IAM (STS)
6. Generación de SDK para cliente
Totalmente Gerenciado
API: Modelo Totalmente gerenciado
InternetMobile apps
Funciones
AWS Lambda
AWS
API Gateway
cache
Endpoints en
Amazon EC2
Cualquier otro
endpoint público
Amazon
CloudWatch
Amazon
CloudFront
API
Gateway
API Gateway
Otros
Servicios
AWS
Funciones
AWS Lambda
Puntos Principales
AWS Lambda + Amazon API Gateway =
0 (cero) infraestructura para administrar
Seguridad = Prioridad:
Aproveche la integración con AWS Identity and
Access Management
Swagger + client SDK = Automatización de workflows
Servicios que vamos a utilizar
Amazon API Gateway AWS Lambda Amazon Cognito Amazon DynamoDB
Publica las APIs y
enruta las llamadas
Ejecuta: Lógica de
autenticación y lógica
de la aplicación
Gerencia de
identidades y entrega
credenciales AWS
Almacén de datos:
Usuarios y Mascotas
Arquitectura de la aplicación:
Mascotas
No-Autenticadas
Flujo de las llamadas
Mobile apps
AWS Lambda lambdaHandler
Register (/user-POST)
Login (/login-POST)
API Gateway
Autenticadas
Mobile apps AWS Lambda lambdaHandler
ListPets (/pets – GET)
GetPet (/pets/{petId}-GET
API Gateway
Assume Role
CreatePet (/pets – POST)
Sigv4
Usando las
credenciales AWS
Invoca con las
credenciales AWS Autorizado por IAM
Recibe
credenciales AWS
APIs:
/user
/login
APIs:
/pets
/pets/{petId}
Table: petstoreapp-users
IdentityPool: PetStoreApp
Table:
petstoreapp-pets
¿Qué tiene de diferente este modelo?
“Serverless” – La aplicación puede usar muchos
servidores, pero no necesito administrar ninguno.
Autorización: Realizada por AWS, basada en Roles
Definición e implementación de APIs usando
Swagger
Parte I: APIs – Definición y
Publicación
Amazon API Gateway - Conceptos
Gerenciamiento de
implementaciones –
múltiples versiones y
ambientes (stages)
Definición y
Publicación de APIs
Usa las credenciales de
AWS IAM para el control
de acceso a sus recursos
(Como si fueran servicios
AWS)
Aprovecha los mecanismos
de Autorización de AWS
Gestión de tráfico de
red
Protección DDoS y
“Throttling”
Modelo de API: Recursos, Métodos e Integración
rest-api-id
resou
rce-id
ARN
Recursos y Métodos
• POST – Recibe usuario y
contraseña; registra (crea) el
nuevo usuario en DynamoDB
/users
• POST – Recibe usuario y
contraseña; autentica; solicita
credenciales AWS a cognito y las
retorna a la App
/login
• POST – Recibe los datos de la
mascota;los guarda en DynamoDB
• GET – Retorna una lista de
mascotas desde DynamoDB
/pets
• GET – Retorna la información de la
mascota, a partir de su petID/pets/{petId}
No Autenticado
Autenticado
rest-api-id
resou
rce-id
ARN
Usando Swagger para automatizar el proceso
Method Response
Integration
(Req. & Resp)
Method Request
Method
Usando Swagger para automatizar el proceso
/users:
post:
summary: Registers a new user
consumes:
- application/json
produces:
- application/json
parameters:
- name: NewUser
in: body
schema:
$ref: '#/definitions/User’
x-amazon-apigateway-integration:
type: aws
uri: arn:aws:apigateway:us-east-1:lambda:path/2015-03-31...
credentials: arn:aws:iam::964405213927:role/pet_store_lambda_invoke
...
responses:
200:
schema:
$ref: '#/definitions/RegisterUserResponse'
Usando Swagger para automatizar el proceso
Usando AWS CLIaws apigateway import-rest-api --body file://swagger.yaml
Usando la Consola
Beneficios de usar Swagger
• Las definiciones de las API permanecen en su
repositorio, con el resto del código de la aplicación.
• Pueden ser usadas en conjunto con otras utilidades de
Swagger (por ejemplo, generación de documentación).
• Las APIs pueden ser importadas e implementadas en
su propio script.
Parte II: Ejecución de la lógica de
la aplicación (Back-End)
Escalabilidad y Alto desempeño;
Eficiente y Económica
No hay infraestructura para
administrar
Pague solo por lo que use: Lambda
adecúa automáticamente la
capacidad para responder a los
volúmenes de solicitudes.
Use su propio código
Funciones Lambda : Ejecución de código basada en eventos, Stateless
Ejecute su código en una variedad
de lenguajes estándar. Use threads,
procesos, archivos y shell scripts, de
la forma usual.
Enfóquese en su lógica de negocio.
Cargue su código y AWS Lambda se
encarga del resto.
AWS Lambda - Conceptos
Lambda handler.
lambdaHandler
(en el código
Java)
Acción: Register
Acción: Login
Acción:
Create Pet
Acción:
Get Pet
Gestión de
identidades
Pet store
database
Amazon API
Gateway
Integration request
User
database
Excepciones mapeadas a HTTP Status.
Register action
Login action
Create Pet action
Get Pet action
BadRequestException
BAD_REQUEST +
Stack Trace
InternalErrorException
INTERNAL_ERROR +
Stack Trace
lambdaHandler
(en el código
Java)
Amazon API
Gateway
responses:
"default":
statusCode: "200"
"BAD.*":
statusCode: "400"
"INT.*":
statusCode: "500"
Mapping Template es una herramienta poderosa
Encuentre más acerca de nuestros ”mapping templates”:
http://amzn.to/1L1hSF5
Parte III: Gerenciando identidades
y autorizando accesos
Amazon Cognito - Conceptos
Gestión de usuarios
autenticados e invitados,
entre diferentes
proveedores de identidad
Gestión de Identidad
Sincroniza datos de los
usuarios entre dispositivos
y plataformas, via nube
Sincronización de
datos
Facilita el acceso seguro
a servicios AWS desde
plataformas y
dispositivos móviles
Acceso seguro a
recursos AWS
Definición de las APIs (No Autenticadas)
• POST
• Recibe un usuario y contraseña
• Encripta la contraseña (con salt) y registra la
cuenta del usuario en DynamoDB
• Hace una llamada a Cognito, para registrar
el usuario y generar las credenciales
• Retorna las informaciones de usuario y
credenciales temporales
/users
• POST
• Recibe un usuario y contraseña
• Autentica el usuario (contra la información
en DynamoDB)
• Si la autenticación es exitosa, hace una
llamada a Cognito para generar credenciales
• Retorna las credenciales temporales
/login
Recibiendo las credenciales temporales.
Llamada a la API
login
(sin autenticación)
Cliente API
Gateway
Backend
/login
Login
action
BD
Usuarios
Credenciales OK
Solicita OIDC
Obtiene el token
OpenID
Recibe las
credenciales
AWS para firmar
las llamadas API
Usando el token
OIDC, solicita
credenciales AWS
Genera las
credenciales AWS
Access key +
secret key +
session token
/login
1.
2.
3.
Roles (AuthZ) en Cognito
Autorización de las llamadas API
APIs /pets (necesitan AuthN y AuthZ)
• POST
• Recibe información de la mascota
(nombre, tipo)
• Graba en DynamoDB
• Retorna el petID creado
• GET
• Retorna la lista de mascotas almacenada
en DynamoDB (incluyendo el petID)
/pets
• GET
• Recibe (en el path) el petID
• Usando mapping templates, se pasa el
parámetro petID a la función Lambda
• Busca la información de la mascota en
DynamoDB
• Retorna la información de la mascota
/pets/{petId}
API Gateway protege las llamadas API
rest-api-id
resou
rce-id
ARN
API Gateway repasa las autorizaciones
credentials:
arn:aws:iam::*:user/*
En la consola En el archivo Swagger
El Rol IAM define la autorización
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Scan",
"lambda:InvokeFunction",
"execute-api:invoke"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:xxxxxx:table/test_pets",
"arn:aws:lambda:us-east-1:xxxxx:function:PetStore”,
"arn:aws:execute-api:us-east-1:xxxx:API_ID/*/POST/pets"
]
}
]
}
En este ejemplo, el rol permite
accesos a:
• DynamoDB
• API Gateway
• Lambda
Y permite definir acceso
solamente a recursos
específicos en esos servicios
Y todavía hay más: Fine-grained access permissions
Internet
Cliente
API
Gateway
Funciones
AWS Lambda
Amazon
CloudFront
DynamoDB
CognitoId2
…
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [”${cognito-
identity.amazonaws.com:sub}"],
"dynamodb:Attributes": [
"UserId","GameTitle","Wins","Losses",
"TopScore","TopScoreDateTime”
]
},
"StringEqualsIfExists": {
"dynamodb:Select": "SPECIFIC_ATTRIBUTES”
}
}
…
Ejecuta con el
rol definido
UserID Wins Losses
cognitoId1 3 2
cognitoId2 5 8
cognitoId3 2 3
Informaciones de contexto (Cognito ID) son repasadas …
Con eso, AWS Lambda & DynamoDB seguirán coherentemente la política de acceso
Flujo autenticado completo
Mobile apps AWS Lambda lambdaHandler
API Gateway
Sigv4
Usa los mismos
permisos de las
credenciales de
usuario
Llamadas a los
servicios son
autorizadas
usando un rol
IAM
Documentación acerca de FGAC:
http://amzn.to/1YkxcjR
DynamoDB
Beneficios de usar AWS IAM (AuthN & AuthZ)
• Separación de funciones – la estrategia de
autorización se delega a un servicio dedicado
• Gestión centralizada de acceso, a través de un
conjunto único de políticas
• Credenciales y Roles pueden ser modificadas o
deshabilitadas con una llamada API
Parte IV: Manejo de credenciales
AWS en el cliente
Generación de SDK desde la consola (1-click)
rest-api-id
El SDK de cliente declara todos los métodos
AWSCredentialsProvider.
Implementación de AWSCredentialsProvider
El método refresh() es llamado cuando el cliente necesite nuevas credenciales
Beneficios del SDK generado
El SDK de cliente contiene la lógica para:
• Firmar las llamadas API usando sigv4
• Manejar respuestas reguladas (throttled)
• Marshal/unmarshal solicitudes y respuestas en objetos
AWS Lambda + Amazon API Gateway =
0 (cero) infraestructura para administrar
Seguridad = Prioridad:
Aproveche la integración con AWS Identity and
Access Management
Swagger + client SDK = Automatización de workflows
¿Qué vimos hoy?
Este ejemplo está disponible en la cuenta GitHub AWSLabs
https://github.com/awslabs/api-gateway-secure-pet-store
¡Gracias !
Este ejemplo está disponible en la cuenta GitHub AWSLabs
https://github.com/awslabs/api-gateway-secure-pet-store

Contenu connexe

Tendances

Tendances (20)

AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
 
Application & Account Monitoring in AWS
Application & Account Monitoring in AWSApplication & Account Monitoring in AWS
Application & Account Monitoring in AWS
 
AWS EC2
AWS EC2AWS EC2
AWS EC2
 
AWS Simple Storage Service (s3)
AWS Simple Storage Service (s3) AWS Simple Storage Service (s3)
AWS Simple Storage Service (s3)
 
Amazon WorkSpaces: Desktop Computing in the Cloud (ENT104) | AWS re:Invent 2013
Amazon WorkSpaces: Desktop Computing in the Cloud (ENT104) | AWS re:Invent 2013Amazon WorkSpaces: Desktop Computing in the Cloud (ENT104) | AWS re:Invent 2013
Amazon WorkSpaces: Desktop Computing in the Cloud (ENT104) | AWS re:Invent 2013
 
Masterclass Webinar: Amazon Elastic MapReduce (EMR)
Masterclass Webinar: Amazon Elastic MapReduce (EMR)Masterclass Webinar: Amazon Elastic MapReduce (EMR)
Masterclass Webinar: Amazon Elastic MapReduce (EMR)
 
Introduction to Amazon Elastic File System (EFS)
Introduction to Amazon Elastic File System (EFS)Introduction to Amazon Elastic File System (EFS)
Introduction to Amazon Elastic File System (EFS)
 
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
 
Intro to Amazon ECS
Intro to Amazon ECSIntro to Amazon ECS
Intro to Amazon ECS
 
Introduction to Amazon Aurora
Introduction to Amazon AuroraIntroduction to Amazon Aurora
Introduction to Amazon Aurora
 
Deploy, Scale and Manage your Application with AWS Elastic Beanstalk
Deploy, Scale and Manage your Application with AWS Elastic BeanstalkDeploy, Scale and Manage your Application with AWS Elastic Beanstalk
Deploy, Scale and Manage your Application with AWS Elastic Beanstalk
 
Elastic Load Balancing Deep Dive - AWS Online Tech Talk
Elastic  Load Balancing Deep Dive - AWS Online Tech TalkElastic  Load Balancing Deep Dive - AWS Online Tech Talk
Elastic Load Balancing Deep Dive - AWS Online Tech Talk
 
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
Introduction to Amazon EC2
Introduction to Amazon EC2Introduction to Amazon EC2
Introduction to Amazon EC2
 
DEV204_Debugging Modern Applications Introduction to AWS X-Ray
DEV204_Debugging Modern Applications Introduction to AWS X-RayDEV204_Debugging Modern Applications Introduction to AWS X-Ray
DEV204_Debugging Modern Applications Introduction to AWS X-Ray
 
AWS ELB
AWS ELBAWS ELB
AWS ELB
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech TalksDeep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
 
AWS Elastic Load Balancing for AWS Architect & SysOps Certification
AWS Elastic Load Balancing for AWS Architect & SysOps CertificationAWS Elastic Load Balancing for AWS Architect & SysOps Certification
AWS Elastic Load Balancing for AWS Architect & SysOps Certification
 
Cloud Computing and Amazon Web Services
Cloud Computing and Amazon Web ServicesCloud Computing and Amazon Web Services
Cloud Computing and Amazon Web Services
 

En vedette

Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...
Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...
Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...
Anibal Emiliano
 
Hofstede pdi 2012 ucv
Hofstede pdi 2012 ucvHofstede pdi 2012 ucv
Hofstede pdi 2012 ucv
knalesgroup
 
Taller de toxicomanìas
Taller de toxicomanìasTaller de toxicomanìas
Taller de toxicomanìas
ql1973
 

En vedette (20)

Servicios de Bases de Datos administradas en AWS
Servicios de Bases de Datos administradas en AWS Servicios de Bases de Datos administradas en AWS
Servicios de Bases de Datos administradas en AWS
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
 
Securing Serverless Workloads with Cognito and API Gateway Part I - AWS Secur...
Securing Serverless Workloads with Cognito and API Gateway Part I - AWS Secur...Securing Serverless Workloads with Cognito and API Gateway Part I - AWS Secur...
Securing Serverless Workloads with Cognito and API Gateway Part I - AWS Secur...
 
Ppt feria
Ppt feriaPpt feria
Ppt feria
 
Brief tcp febrero 2015
Brief tcp febrero 2015Brief tcp febrero 2015
Brief tcp febrero 2015
 
Sobre Blogger
Sobre BloggerSobre Blogger
Sobre Blogger
 
Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...
Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...
Desarrollo de capacidades de actuación en los estudiantes del i, ii y iii bac...
 
Ingreso Alumnos Padres 2013
Ingreso Alumnos Padres 2013 Ingreso Alumnos Padres 2013
Ingreso Alumnos Padres 2013
 
Hofstede pdi 2012 ucv
Hofstede pdi 2012 ucvHofstede pdi 2012 ucv
Hofstede pdi 2012 ucv
 
Poncho en forma de hojas
Poncho en forma de hojasPoncho en forma de hojas
Poncho en forma de hojas
 
Brief seminario internacional cierre de ventas octubre 2014
Brief seminario internacional cierre de ventas octubre 2014Brief seminario internacional cierre de ventas octubre 2014
Brief seminario internacional cierre de ventas octubre 2014
 
[T.A.V.] Las aventuras del hombre caja
[T.A.V.] Las aventuras del hombre caja[T.A.V.] Las aventuras del hombre caja
[T.A.V.] Las aventuras del hombre caja
 
Matenuevo
MatenuevoMatenuevo
Matenuevo
 
Taller de toxicomanìas
Taller de toxicomanìasTaller de toxicomanìas
Taller de toxicomanìas
 
Indicadores prod2
Indicadores prod2Indicadores prod2
Indicadores prod2
 
Seminario taller internacional servicio al cliente 2015
Seminario taller internacional servicio al cliente 2015Seminario taller internacional servicio al cliente 2015
Seminario taller internacional servicio al cliente 2015
 
Tp 3 seg
Tp 3 segTp 3 seg
Tp 3 seg
 
Manual NTV Tablet
Manual NTV TabletManual NTV Tablet
Manual NTV Tablet
 
Profesores 3
Profesores 3Profesores 3
Profesores 3
 
Entc
EntcEntc
Entc
 

Similaire à Construyendo APIs Seguras y Escalables

Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)
Neo Humano
 

Similaire à Construyendo APIs Seguras y Escalables (20)

Comenzando con los servicios móviles en AWS
Comenzando con los servicios móviles en AWSComenzando con los servicios móviles en AWS
Comenzando con los servicios móviles en AWS
 
Construya APIs seguras y escalables
Construya APIs seguras y escalables Construya APIs seguras y escalables
Construya APIs seguras y escalables
 
AWS Summits América Latina 2015-Mejores Prácticas de Seguridad para IAM (Iden...
AWS Summits América Latina 2015-Mejores Prácticas de Seguridad para IAM (Iden...AWS Summits América Latina 2015-Mejores Prácticas de Seguridad para IAM (Iden...
AWS Summits América Latina 2015-Mejores Prácticas de Seguridad para IAM (Iden...
 
Comenzando con los servicios móviles en AWS
Comenzando con los servicios móviles en AWSComenzando con los servicios móviles en AWS
Comenzando con los servicios móviles en AWS
 
AWS para desarrolladores
AWS para desarrolladoresAWS para desarrolladores
AWS para desarrolladores
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Seguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developerSeguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developer
 
RAML
RAMLRAML
RAML
 
Asegurando los datos de sus clientes desde el Día 1
Asegurando los datos de sus clientes desde el Día 1Asegurando los datos de sus clientes desde el Día 1
Asegurando los datos de sus clientes desde el Día 1
 
Inicie un viaje seguro a la nube
Inicie un viaje seguro a la nubeInicie un viaje seguro a la nube
Inicie un viaje seguro a la nube
 
04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam
 
Comenzando con los servicios móviles en AWS
Comenzando con los servicios móviles en AWSComenzando con los servicios móviles en AWS
Comenzando con los servicios móviles en AWS
 
OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)
 
Servicios web
Servicios webServicios web
Servicios web
 
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
 
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 

Plus de Amazon Web Services LATAM

Plus de Amazon Web Services LATAM (20)

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
 
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSLos beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWS
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

Construyendo APIs Seguras y Escalables

  • 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Construyendo APIs Seguras y Escalables Demostración usando Amazon API Gateway y AWS Lambda Mauricio Muñoz Enterprise Solutions Architect, LATAM Abril, 2016
  • 2. ¿Qué vamos a ver en esta sesión? 1. Nuevo modelo de desarrollo: Completamente gerenciado 2. Declarar APIs con Amazon API Gateway 3. Lógica de la aplicación en AWS Lambda 4. APIs de Login y Registro, utilizando Amazon Cognito 5. Autorización utilizando AWS IAM (STS) 6. Generación de SDK para cliente
  • 3. Totalmente Gerenciado API: Modelo Totalmente gerenciado InternetMobile apps Funciones AWS Lambda AWS API Gateway cache Endpoints en Amazon EC2 Cualquier otro endpoint público Amazon CloudWatch Amazon CloudFront API Gateway API Gateway Otros Servicios AWS Funciones AWS Lambda
  • 4. Puntos Principales AWS Lambda + Amazon API Gateway = 0 (cero) infraestructura para administrar Seguridad = Prioridad: Aproveche la integración con AWS Identity and Access Management Swagger + client SDK = Automatización de workflows
  • 5. Servicios que vamos a utilizar Amazon API Gateway AWS Lambda Amazon Cognito Amazon DynamoDB Publica las APIs y enruta las llamadas Ejecuta: Lógica de autenticación y lógica de la aplicación Gerencia de identidades y entrega credenciales AWS Almacén de datos: Usuarios y Mascotas
  • 6. Arquitectura de la aplicación: Mascotas
  • 7. No-Autenticadas Flujo de las llamadas Mobile apps AWS Lambda lambdaHandler Register (/user-POST) Login (/login-POST) API Gateway Autenticadas Mobile apps AWS Lambda lambdaHandler ListPets (/pets – GET) GetPet (/pets/{petId}-GET API Gateway Assume Role CreatePet (/pets – POST) Sigv4 Usando las credenciales AWS Invoca con las credenciales AWS Autorizado por IAM Recibe credenciales AWS APIs: /user /login APIs: /pets /pets/{petId} Table: petstoreapp-users IdentityPool: PetStoreApp Table: petstoreapp-pets
  • 8. ¿Qué tiene de diferente este modelo? “Serverless” – La aplicación puede usar muchos servidores, pero no necesito administrar ninguno. Autorización: Realizada por AWS, basada en Roles Definición e implementación de APIs usando Swagger
  • 9. Parte I: APIs – Definición y Publicación
  • 10. Amazon API Gateway - Conceptos Gerenciamiento de implementaciones – múltiples versiones y ambientes (stages) Definición y Publicación de APIs Usa las credenciales de AWS IAM para el control de acceso a sus recursos (Como si fueran servicios AWS) Aprovecha los mecanismos de Autorización de AWS Gestión de tráfico de red Protección DDoS y “Throttling”
  • 11. Modelo de API: Recursos, Métodos e Integración rest-api-id resou rce-id ARN
  • 12. Recursos y Métodos • POST – Recibe usuario y contraseña; registra (crea) el nuevo usuario en DynamoDB /users • POST – Recibe usuario y contraseña; autentica; solicita credenciales AWS a cognito y las retorna a la App /login • POST – Recibe los datos de la mascota;los guarda en DynamoDB • GET – Retorna una lista de mascotas desde DynamoDB /pets • GET – Retorna la información de la mascota, a partir de su petID/pets/{petId} No Autenticado Autenticado
  • 14. Method Response Integration (Req. & Resp) Method Request Method Usando Swagger para automatizar el proceso /users: post: summary: Registers a new user consumes: - application/json produces: - application/json parameters: - name: NewUser in: body schema: $ref: '#/definitions/User’ x-amazon-apigateway-integration: type: aws uri: arn:aws:apigateway:us-east-1:lambda:path/2015-03-31... credentials: arn:aws:iam::964405213927:role/pet_store_lambda_invoke ... responses: 200: schema: $ref: '#/definitions/RegisterUserResponse'
  • 15. Usando Swagger para automatizar el proceso Usando AWS CLIaws apigateway import-rest-api --body file://swagger.yaml Usando la Consola
  • 16. Beneficios de usar Swagger • Las definiciones de las API permanecen en su repositorio, con el resto del código de la aplicación. • Pueden ser usadas en conjunto con otras utilidades de Swagger (por ejemplo, generación de documentación). • Las APIs pueden ser importadas e implementadas en su propio script.
  • 17. Parte II: Ejecución de la lógica de la aplicación (Back-End)
  • 18. Escalabilidad y Alto desempeño; Eficiente y Económica No hay infraestructura para administrar Pague solo por lo que use: Lambda adecúa automáticamente la capacidad para responder a los volúmenes de solicitudes. Use su propio código Funciones Lambda : Ejecución de código basada en eventos, Stateless Ejecute su código en una variedad de lenguajes estándar. Use threads, procesos, archivos y shell scripts, de la forma usual. Enfóquese en su lógica de negocio. Cargue su código y AWS Lambda se encarga del resto. AWS Lambda - Conceptos
  • 19. Lambda handler. lambdaHandler (en el código Java) Acción: Register Acción: Login Acción: Create Pet Acción: Get Pet Gestión de identidades Pet store database Amazon API Gateway Integration request User database
  • 20. Excepciones mapeadas a HTTP Status. Register action Login action Create Pet action Get Pet action BadRequestException BAD_REQUEST + Stack Trace InternalErrorException INTERNAL_ERROR + Stack Trace lambdaHandler (en el código Java) Amazon API Gateway responses: "default": statusCode: "200" "BAD.*": statusCode: "400" "INT.*": statusCode: "500"
  • 21. Mapping Template es una herramienta poderosa Encuentre más acerca de nuestros ”mapping templates”: http://amzn.to/1L1hSF5
  • 22. Parte III: Gerenciando identidades y autorizando accesos
  • 23. Amazon Cognito - Conceptos Gestión de usuarios autenticados e invitados, entre diferentes proveedores de identidad Gestión de Identidad Sincroniza datos de los usuarios entre dispositivos y plataformas, via nube Sincronización de datos Facilita el acceso seguro a servicios AWS desde plataformas y dispositivos móviles Acceso seguro a recursos AWS
  • 24. Definición de las APIs (No Autenticadas) • POST • Recibe un usuario y contraseña • Encripta la contraseña (con salt) y registra la cuenta del usuario en DynamoDB • Hace una llamada a Cognito, para registrar el usuario y generar las credenciales • Retorna las informaciones de usuario y credenciales temporales /users • POST • Recibe un usuario y contraseña • Autentica el usuario (contra la información en DynamoDB) • Si la autenticación es exitosa, hace una llamada a Cognito para generar credenciales • Retorna las credenciales temporales /login
  • 25. Recibiendo las credenciales temporales. Llamada a la API login (sin autenticación) Cliente API Gateway Backend /login Login action BD Usuarios Credenciales OK Solicita OIDC Obtiene el token OpenID Recibe las credenciales AWS para firmar las llamadas API Usando el token OIDC, solicita credenciales AWS Genera las credenciales AWS Access key + secret key + session token /login 1. 2. 3.
  • 26. Roles (AuthZ) en Cognito
  • 27. Autorización de las llamadas API
  • 28. APIs /pets (necesitan AuthN y AuthZ) • POST • Recibe información de la mascota (nombre, tipo) • Graba en DynamoDB • Retorna el petID creado • GET • Retorna la lista de mascotas almacenada en DynamoDB (incluyendo el petID) /pets • GET • Recibe (en el path) el petID • Usando mapping templates, se pasa el parámetro petID a la función Lambda • Busca la información de la mascota en DynamoDB • Retorna la información de la mascota /pets/{petId}
  • 29. API Gateway protege las llamadas API rest-api-id resou rce-id ARN
  • 30. API Gateway repasa las autorizaciones credentials: arn:aws:iam::*:user/* En la consola En el archivo Swagger
  • 31. El Rol IAM define la autorización { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "lambda:InvokeFunction", "execute-api:invoke" ], "Resource": [ "arn:aws:dynamodb:us-east-1:xxxxxx:table/test_pets", "arn:aws:lambda:us-east-1:xxxxx:function:PetStore”, "arn:aws:execute-api:us-east-1:xxxx:API_ID/*/POST/pets" ] } ] } En este ejemplo, el rol permite accesos a: • DynamoDB • API Gateway • Lambda Y permite definir acceso solamente a recursos específicos en esos servicios
  • 32. Y todavía hay más: Fine-grained access permissions Internet Cliente API Gateway Funciones AWS Lambda Amazon CloudFront DynamoDB CognitoId2 … "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": [”${cognito- identity.amazonaws.com:sub}"], "dynamodb:Attributes": [ "UserId","GameTitle","Wins","Losses", "TopScore","TopScoreDateTime” ] }, "StringEqualsIfExists": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES” } } … Ejecuta con el rol definido UserID Wins Losses cognitoId1 3 2 cognitoId2 5 8 cognitoId3 2 3 Informaciones de contexto (Cognito ID) son repasadas … Con eso, AWS Lambda & DynamoDB seguirán coherentemente la política de acceso
  • 33. Flujo autenticado completo Mobile apps AWS Lambda lambdaHandler API Gateway Sigv4 Usa los mismos permisos de las credenciales de usuario Llamadas a los servicios son autorizadas usando un rol IAM Documentación acerca de FGAC: http://amzn.to/1YkxcjR DynamoDB
  • 34. Beneficios de usar AWS IAM (AuthN & AuthZ) • Separación de funciones – la estrategia de autorización se delega a un servicio dedicado • Gestión centralizada de acceso, a través de un conjunto único de políticas • Credenciales y Roles pueden ser modificadas o deshabilitadas con una llamada API
  • 35. Parte IV: Manejo de credenciales AWS en el cliente
  • 36. Generación de SDK desde la consola (1-click) rest-api-id
  • 37. El SDK de cliente declara todos los métodos
  • 38. AWSCredentialsProvider. Implementación de AWSCredentialsProvider El método refresh() es llamado cuando el cliente necesite nuevas credenciales
  • 39. Beneficios del SDK generado El SDK de cliente contiene la lógica para: • Firmar las llamadas API usando sigv4 • Manejar respuestas reguladas (throttled) • Marshal/unmarshal solicitudes y respuestas en objetos
  • 40. AWS Lambda + Amazon API Gateway = 0 (cero) infraestructura para administrar Seguridad = Prioridad: Aproveche la integración con AWS Identity and Access Management Swagger + client SDK = Automatización de workflows ¿Qué vimos hoy? Este ejemplo está disponible en la cuenta GitHub AWSLabs https://github.com/awslabs/api-gateway-secure-pet-store
  • 41. ¡Gracias ! Este ejemplo está disponible en la cuenta GitHub AWSLabs https://github.com/awslabs/api-gateway-secure-pet-store

Notes de l'éditeur

  1. ¿ ¡
  2. A new, fully-managed development model : Model where AWS takes care of the infrastructure. And, how the Amazon API Gateway integrates with other services: Declare an API with Amazon API Gateway Application logic in AWS Lambda Register and login API with Amazon Cognito Authorization with AWS IAM Generate and connect the Client SDK
  3. The first thing we want to look at is the standard flow of an API call, including all components in the system First, a request comes in from a client, this could be a mobile device, a web application or a backend service The requests arrives at one of our CloudFront PoP locations, it’s accepted and routed through to the API Gateway in the customer’s region The API Gateway receives the request, then checks for records in the dedicated cache (if it is configured). If there are no cached records available then it will forward the request to the backend for processing The backend can be a Lambda function, a web service running on Amazon EC2, or any other publicly accessible web service Once the backend has processed the request the API call metrics are logged in Amazon CloudWatch and the content is returned to the client
  4. First understand what has driven the decision to build API Gateway, from customer feedback to wider strategic decisions and market forces Next, look at how the service works, and helps customers with their API services Finally, open it out for Q&A at the end Key Takeaways AWS Lambda + Amazon API Gateway means no infrastructure to manage – we scale for you Security is important, and complex – make the most of AWS Identity and Access Management. Security is a priority, take advantage of Authentication (Cognito) and Authorization (IAM) integration with API Gateway. Swagger import and client SDK – we can automate most workflows
  5. API Gateway: Host the API and route API calls AWS Lambda: Execute our app’s business logic Amazon Cognito: Generate temporary AWS credentials Amazon DynamoDB: Data store
  6. It is not serverless, it is just that the application can use lots of servers, and I don’t need to manage a single one. Authorization of API calls is delegated to AWS. We just need to focus on our IAM roles. Deployment of the API is automated using Swagger.
  7. API definition and Swagger
  8. API Gateway offers an “abstraction” of API or Backend logic. Interface for developers (like a FrontEnd). You can keep the FrontEnd while doing modifications/improvements to the backend logic. Define and host APIs: Manage deployments to multiple versions and environments Manage network traffic: We have learnt a lot about manage network traffic throughout the years. DDoS protection and request throttling to safeguard your back end. (Layer 7/App (Scaling) and Layer 3 (syn flood)) Leverage AWS Auth: Leverage Identity and Access Management to authorize access to your cloud resources. Convert your API as if it were an AWS Service!!!! (every API method receives an ARN)
  9. Left side: Public-side vs Right side: Integration with backend.
  10. Demo 0: Show the User App Start with the reset app, to create a new user Then: login and Get pets) Show the Cloudwatch logs, showing the /login and the /pets calls Show the tables in DynamoDB
  11. Left side: Public-side vs Right side: Integration with backend. API Gateway handles resources as typed objects. Resources can have models associated with them. Models are simply the JSON schema representation of the request and response data models If the API Gateway is aware of the request and response models it can Generate SDKs that include actual objects for each request and response rather than generic (JSON Object) Allow JSON traversal of requests and responses in the data transformation engine
  12. aws apigateway import-rest-api --body file://swagger.yaml Map the API definition with the swagger file. Show the swagger.yaml file. - Show the credentials for auth and no-auth calls. - Swagger normally defines only the user-facing details of an API - We have extended it to also specify how the API processes a request and interacts with the backend A single file allows you to create the entire API http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html x-amazon-apigateway-auth Object x-amazon-apigateway-authorizer Object x-amazon-apigateway-authtype Property x-amazon-apigateway-integration Object x-amazon-apigateway-integration.requestTemplates Object x-amazon-apigateway-integration.requestParameters Object x-amazon-apigateway-integration.responses Object x-amazon-apigateway-integration.response Object x-amazon-apigateway-integration.responseTemplates Object x-amazon-apigateway-integration.responseParameters Object
  13. aws apigateway import-rest-api --body file://swagger.yaml
  14. We recommend to use some definition file (like Swagger), so you can ”own” the definition (create, document, version, etc) and the API Gateway is just the tool to implement the API. API definitions live in our source repository with the rest of the app. They can be used with other utilities in the Swagger toolset (for example, documentation generation). API can be imported and deployed in our build script.
  15. Request routing and exceptions
  16. No Infrastructure to manage: Focus on business logic, not infrastructure. You upload code; AWS Lambda handles everything else. High performance at any scale; Cost-effective and efficient: Pay only for what you use: Lambda automatically matches capacity to your request rate. Purchase compute in 100ms increments. Bring Your Own Code: Run code in a choice of standard languages. Use threads, processes, files, and shell scripts normally.
  17. Show the transformation in the APIGW console Show the Java Code (lambdaHandler) – RequestRouter.java Show the actions code Demo 2: Start the App. List the pets Show DynamoDB, CloudWatch Demo 3: Create a new pet Show DynamoDB, CloudWatch
  18. Demo 4: Login with an existing user, using CURL Show CloudWatch Demo 5: Login with a non-existing user, using CURL Notice the message and the status code: 400 Show CloudWatch Show the code: RequestRouter.java (line 48) LoginDemoAction.java (line 75) exception/BadRequestException.java (line 20) configuration/ExceptionMessages.java (line 19) Show API Gateway (mapping integration response)
  19. Mapping templates are a powerful tool Talk about variables ($input (json path, body, json, params), $context, $util (encode, decode, parsing, escape), $stageVariables) Allows natively to use Apache Velocity Template Language (VTL) – use $util and $input.path to obtain an object representation (to use VTL on top of). http://amzn.to/1L1hSF5 http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
  20. Cognito: Identity Management Service (not an authentication service) Identity management: Manage authenticated and guest users across identity providers (by assigning a unique identifier for each identity) Secure AWS access: Securely access AWS services from mobile devices and platforms Data synchronization: Synchronize users’ data across devices and platforms via the cloud
  21. Demo 1: Create a user using CURL Show Cognito, DynamoDB, CloudWatch
  22. We’ll go through a use case that leverage AWS Lambda and Amazon Cognito to retrieve temporary credentials for a particular end user and authorize access to the APIs As discussed before the API Gateway helps customers leverage AWS Sigv4 – only one open API is required and then we can verify signatures on all other calls. Show the code for LoginDemoAction.java - Explain UserIdentity and UserCredentials objects (lines 85 and 86) - Look at the code in provider/CognitoCredentialsProvider (UserIdentity in line 103 and UserCredentials in line 61) Demo 4. Login with an existing user (via CURL)
  23. Demo 2: Open the App in the simulator (to do a query on the whole pet list) Show CloudWatch logs. Demo 2a: Inside the App, look for the info on one of the pets Show CloudWatch logs
  24. We’ll go through a use case that leverage AWS Lambda and Amazon Cognito to retrieve temporary credentials for a particular end user and authorize access to the APIs As discussed before the API Gateway helps customers leverage AWS Sigv4 – only one open API is required and then we can verify signatures on all other calls.
  25. We’ll go through a use case that leverage AWS Lambda and Amazon Cognito to retrieve temporary credentials for a particular end user and authorize access to the APIs As discussed before the API Gateway helps customers leverage AWS Sigv4 – only one open API is required and then we can verify signatures on all other calls. See: http://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html Not-related sample of a FGAC policy (just to compare): { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1461416614573", "Action": [ "dynamodb:DeleteItem" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "dynamodb:LeadingKeys": "pet123” } } } ] }
  26. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/FGAC_DDB.html
  27. API Gateway can generate client SDKs based on a customer’s API definition. Simply select the deployment the SDK should target, the platform, and setup a couple of parameters and the API Gateway generates an SDK and makes it available to download through an API or the management console SDK are model-aware and also come with the built-in AWS core that allows them to handle throttling responses and sign requests using AWS Credentials
  28. Show APIGSessionCredentialsProvider.m (line 58) Developer just needs to provide username + password, and the method will return the credentials The method lazily load the credentials (the SDK just call the method when there is no valid stored credentials) Show the code: AppDelegate.m (line 78)
  29. The generated client SDK knows how to: Sign API calls using AWS signature version 4 Handle-throttled responses with exponential back-off Marshal and unmarshal requests and responses to model objects
  30. First understand what has driven the decision to build API Gateway, from customer feedback to wider strategic decisions and market forces Next, look at how the service works, and helps customers with their API services Finally, open it out for Q&A at the end Key Takeaways AWS Lambda + Amazon API Gateway means no infrastructure to manage – we scale for you Security is important, and complex – make the most of AWS Identity and Access Management. Security is a priority, take advantage of Authentication (Cognito) and Authorization (IAM) integration with API Gateway. Swagger import and client SDK – we can automate most workflows