Comenzando con los servicios móviles en AWS
-
Upload
amazon-web-services-latam -
Category
Technology
-
view
66 -
download
1
Transcript of Comenzando con los servicios móviles en AWS
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Jesus Bonequi, Arquitecto de soluciones AWS
Construyendo un App Móvil utilizando AWS
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en Dispositivos
Entrega de contenido
Almacene los datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
Administre usuarios y proveedores de identidadSincronice entre dispositivos
Acceso seguro a recursosde la nube
Realice pruebas en múltiplesdispositivos y sistemas operativos
Rastre el engagementde usuarios activos
Ejecute código personalizadosin necesidad de servidores
Almacene contenido generadopor los usuarios y compártelos
Entregue rápida y globalmente el contenido
Traiga nuevamente a los usuarios a su app Al enviar mensajes confiablemente
Guarde y consulte rápidamente datos NoSQL a través de usuarios y dispositivos
Registre logs de evento en tiempo realy tome acciones rápido
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en Dispositivos
Entrega de contenido
Almacene los datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
SDKs
Java Python (boto) PHP .NET Ruby Node.js
iOS Android AWS Toolkit for Visual
Studio
AWS Toolkit for Eclipse
AWS Tools for Windows
PowerShell
AWS CLI
JavaScript
AWS Mobile SDK
• SDKs para iOS y Android• Conectores para los servicios de
AWS
• SDK para Unity • Cross Platform Game
Development environment
• SDK para Xamarin• Cross-Platform App Development
Framework para C#
iOS Android
LISTOS… a construir un App
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en Dispositivos
Entrega de Contenido
Almacene los datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
• Autentica a sus usuarios• Facebook, Google,
Amazon,Twitter, OpenID• Anonymous
• Administra los usuarios y sincroniza los datos a través de múltiples dispositivos
• Permite la comunicación segura con otros servicios de AWS
Amazon Cognito
Amazon Cognito
Sincronice los datos a través de mutiles dispositivos con Cognito
SincroniceGame State
a través de SO ydispositivos
State Transition(ligue múltiples
cuentas)
Sincronice perfiles de usuariosa través de SO, dispositivos
y Web
Proveedores de Identidad
IdentidadesúnicasJose Ana Pedro
Any DeviceAny Platform
Any AWS Service
Ayuda a implementar las mejores practicas de seguridadAcceso seguro a cualquier servicios de AWS desde un dispositivo móvil. Interacción simplificada con AWS Identity and Access Management.
Soporta Múltiples proveedores Log-InFácilmente se integra con la mayoría de los proveedores de log-in para autenticación
Usuarios únicos vs. DispositivosAdministre identidades únicas. Automáticamente reconozca usuarios únicos a través de dispositivos y plataformas.
Amazon Cognito Identity
Amazon Mobile
Analytics
Amazon S3
Amazon DynamoDB
Amazon Kinesis
Amazon Cognito Flow(Cualquier OpenID Connect Token)
Amazon Cognito ID(Temp Credentials)
Amazon DynamoDB
End Users
Desarrollador
App with AWS Mobile
SDK
Accessto AWS
Services
Amazon Cognito Identity Broker
User Name Password
Amazon Cognito ID, Temp Credentials
Amazon S3
Amazon Mobile Analytics
Amazon Cognito Sync Store
AWS Management
Console
OIDC TokenPool ID
Role ARNs
User Authentication System
(Running on AWS or not)
OIDC Token
Amazon Cognito Flow(Cualquier OpenID Connect Token)
Amazon Cognito ID(Temp Credentials)
Amazon DynamoDB
End Users
Desarrollador
App with AWS Mobile
SDK
Accessto AWS
Services
Amazon Cognito Identity Broker
Get OpenID Token
User Name Password
Amazon Cognito ID, Temp Credentials
Amazon S3
Amazon Mobile Analytics
Amazon Cognito Sync Store
AWS Management
Console
OIDC TokenPool ID
Role ARNs
User Authentication System
(Running on AWS or not)OIDC Token
OIDC Token
Amazon Cognito Cloud Save & Sync
Datos de usuarioAlmacenaje ySincronización
CualquierPlataforma
iOS/Android/FireOS
Almacene App Data, Preferencias y estadoAlmacene datos y aplicaciones en la nube y después descárguelas a partir del login
Cross-Device Cross-OS Sync Sincronice los datos de usuarios y preferencias a través de dispositivos con una sola línea de código
Trabaje OfflineLos datos siempre se almacenan primero el la BD SQLite. Trabaja fácilmente cuando hay intermitencia o sin conectividad.
k/v data
Identity Pool
Sin Back EndCliente SDK sencillo que elimina la necesidad de código en el lado del servidor
Inicializamos el cliente de Cognito
CognitoCachingCredentialsProvider cognitoProvider = new CognitoCachingCredentialsProvider( myActivity.getContext(), // obtengo el contexto para la actividad "AWS_ACCOUNT_ID", "COGNITO_IDENTITY_POOL_ID", "arn:aws:iam::AWS_ACCOUNT_ID:role/UNAUTHENTICATED_ROLE", "arn:aws:iam::AWS_ACCOUNT_ID:role/AUTHENTICATED_ROLE", Regions.US_EAST_1 );
// Cree un service client con el proveedorAmazonDynamoDB client = new AmazonDynamoDBClient(cognitoProvider);
Almacenamos y sincronizamos los datos
CognitoSyncManager syncClient = new CognitoSyncManager(myActivity.getContext(), COGNITO_POOL_ID, Regions.YOUR_REGION, cognitoProvider);
Dataset dataset = client.openOrCreateDataset("myDataset");
dataset.put("myKey", "my value");String value = dataset.get("myKey");dataset.remove("myKey");
dataset.synchronizeOnConnectivity(this, syncCallback);
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en Dispositivos
Entrega de Contenido
Almacene los datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
Le permite controlar el acceso a sus recursos de AWS
• Cree usuarios, grupos y roles• Control granular de acceso a través de políticas de IAM
• Controle quien puede hacer que en su ambiente de AWS
• Permita acceso con identidades sociales o publicas • Fácilmente añada autenticación multi factor utilizando
tokens de hardware o apps de smartphone
Identity and Access Management (IAM)
{ "Effect":"Allow", "Action":["s3:*"], "Resource":"*"} { "Effect": "Allow", "Action": ["cognito-sync:*"], "Resource": "*"}
{ "Effect": "Deny", "Action": ["dynamodb:*"], "Resource": "*"}
AllowActions:
All S3Sync store Operations
Resource:All resources within these services
DenyActions:
All DDB OperationsResource:
All resources
Políticas de acceso para roles de IAM
AllowActions:
S3 Get/Put operationsResource:
Only to a specific part of bucket to that identity
{"Effect": "Allow”,"Action": ["s3:GetObject","s3:PutObject"],"Resource": ["arn:aws:s3:::
myBucket/amazon/myapp/${cognito-identity.amazonaws.com:sub}"]}
AllowActions:
DDB Get/Put operationsResource:
Only to a specific cells inthe database
{"Effect": "Allow”,"Action": ["dynamodb:GetItem", "dynamodb:PutItem"], "Resource" : [ "arn:aws:dynamodb:REGION:12345:table/TABLE_NAME”], "Condition": { "ForAllValues:StringEquals”:{ "dynamodb:LeadingKeys": ["${cognito-identity.amazonaws.com:sub}"], "dynamodb:Attributes”: ["Wins","Losses”,"TopScore",”DateTime" ] },}
Políticas de restricción de acceso (Policy Variables)
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en dispositivos
Entrega de contenido
Almacene datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
AWS Device Farm
• Pruebe su aplicación en dispositivos reales en la nube de AWS
• Plataforma de pruebas completamente administrada y escalable
• Múltiples y distintos modelos de smartphone y tabletas disponibles
• Full built-in test suite• Integración con custom frameworks
(ej. Appium, Calabash etc.)
AWS Device Farm
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Almacene contenido
Pruebas en dispositivos
Entrega de contenido
Almacene Datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envié Push Notifications
Amazon Mobile Analytics
• Le permite recolectar, visualizar y entender el uso de su aplicación móvil
• Escala fácilmente a billones de eventos por día
• Usted mantiene el control total y la propiedad de los datos
Amazon Mobile Analytics
Obtenga el detalle dentro de las acciones especias de la app que los usuarios realizanEjemplos
Rastree el numero de Likes/Shares en la
aplicación de noticias
Abort rates de los jugador por nivel
del juego
Numero de canciones ejecutadas en un app
de música
Compras In-app popularidad de ítems
Custom Events
Inicialice Mobile Analytics
// Dentro de la actividadprivate static MobileAnalyticsManager analytics;
// Dentro de la actividad onCreate()try { AnalyticsConfig options = new AnalyticsConfig(); options.withAllowsWANDelivery(true); analytics = MobileAnalyticsManager.getOrCreateInstance( getApplicationContext(), "YOU MOBILE ANALYTICS APP ID", Regions.US_EAST_1, cognitoProvider, // You need a Cognito credential provider options ); } catch(InitializationException ex) { Log.e(this.getClass().getName(), "Failed to initialize Amazon Mobile Analytics", ex); }
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Almacene el contenido
Pruebas en dispositivos
Entrega de contenido
Almacene Datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
AWS Lambda
Auto escalamiento
Foco en la lógica negocio y no en la
infraestructura.
Sin administración
Lambda escala la infraestructura
para igualar cualquier rango
de eventos
Tu propio código
“Ejecute su código en la nube en respuesta a eventos y escale sin servidores que administrar”
Escriba su código en JavaScript o Java
AWS Lambda
• Código Stateless denominado Lambda functions
• Invoque funciones Lambda directamente desde su app móvil
• Trigger functions por eventos (state transitions) en otros servicios:
• Un Nuevo archivo en su object storage• Un Nuevo ítem en su base de datos NoSQL• Un Nuevo mensaje en su servicio de notificaciones
Amazon Lambda
Añadiendo Backend Lambda en su App
Inicialice LambdaFactory y defina la interface para las funciones
Llame la sincronización del dataset
Cree la función Lambda
lambda = new LambdaInvokerFactory(context, Regions.US_WEST_2, provider);//interface@LambdaFunction(functionName="cloudFunction”)String localFunction(String nameInfo);
lambda.localFunction(“Hola desde “); // Esto tendrá de output “Hola desde Lambda”
exports.handler = function(event, context) {context.done(null, event + 'Lambda'); // SUCCESS with message
};
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
Amazon SNS Mobile Push
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en dispositivos
Entrega de contenido
Almacene datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Envíe Push Notifications
Amazon S3 y Amazon CloudFront
• Amazon S3• Un object storage altamente disponible• Diseñado para 99.999999999% de durabilidad• Ofrece endpoints HTTP / HTTPS a los objetos
• Amazon CloudFront• Red de Content Delivery con 53 ubicaciones
de frontera alrededor del mundo• Caches content en ubicaciones de frontera
para disminuir las latencias
Amazon S3
Amazon CloudFront
Amazon KinesisAWS
Mobile SDK
Mobile-Optimized Connectors (AWS Mobile SDK)
Amazon S3
Amazon Kinesis Recorder
Amazon DynamoDB Mapper
Amazon S3 Transfer Manager
No Back End Required
Integrated AWS Mobile SDK Optimized for native OS
Multipart upload mediaFault tolerant downloadAutomatic retriesPause, resume, cancel functionsGeneric batching systemhandles intermittent network connection Optimize battery utilization
Amazon DynamoDB
Amazon S3 Connector: Transfer Manager
S3 Connector
Multipart upload media (photos, videos, audio)Fault tolerant download (e.g. assets)No back end requiredAutomatic retriesPause, resume, cancel functionsOptimized for native OS
Amazon S3 Connector: Transfer Manager in Android
// Creating the transfer manager TransferManager = new TransferManager(credentialProvider);
// Upload image Upload upload = transferManager.upload(BUCKET_NAME, fileName, file); // Download image Download download = transferManager.download(BUCKET_NAME, mKey, file);
// Pause, and Resumetry { PersistableDownload = download.pause(); //do something if we didn’t abort} catch(PauseException e) { //do something if we aborted}download = transferManager.resumeDownload(persistableDownload);
Amazon S3 Connector: Transfer Manager in iOS
// Creating the transfer manager self.transferManager = [S3TransferManager new]; self.transferManager.s3 = s3client;
// Upload image [self.transferManager uploadFile:fileName bucket:bucketName key:objectName]; // Download image [self.transferManager downloadFile:fileName bucket:bucketName key:objectName];
// Pause, Resume, Cancel [self.transferManager pauseAllTransfers]; [self.transferManager resumeAllTransfers]; [self.transferManager cancelAllTransfers];
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon DynamoDB
Amazon Lambda
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en dispositivos
Entrega de contenido
Almacene datos
Registre eventos en tiempo real
Ejecute la lógica de negocio
Amazon SNS Mobile Push
Envíe Push Notifications
Amazon SNS Mobile Push Notifications
• Amazon SNS es una plataforma administrada, cross-platform mobile push intermediary service
• Completamente escala a millones de dispositivos
• Permite crear topics (ej. por geo, intereses, uso patrones, etc.)
Amazon SNS
Apple APNS
Google GCM
Amazon ADM
Windows WNS and MPNS
Baidu CP
Android Phones and Tablets
Apple iPhones and iPads
Kindle Fire Devices
Android Phones and Tablets in China
iOS
Windows Phone Devices
Amazon SNS
Amazon SNS
Mobile Apps
Apple APNS
Google GCM
Amazon ADM
Amazon SNS Mobile Push Notifications: Escalabilidad
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon Lambda
AWS Mobile SDK
Amazon Kinesis
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en dispositivos
Entrega de contenido
Registre eventos en tiempo real
Ejecute la lógica de negocio
Amazon SNS Mobile Push
Envíe Push Notifications
Amazon DynamoDB
Almacene datos
Amazon DynamoDB
Servicio administrado de base de datos NoSQL
• Modelo de datos Schemaless • Rendimiento Consistente y con baja latencia• Aprovisionamiento de throughput predecible• Escalabilidad transparente • Sin limite de almacenamiento • Altamente durable y disponible• Replicada en 3 ubicaciones • Altamente Administrada y bajo costo
DynamoDBtabla
ítemsatributos
@DynamoDBTable(tableName = ”Usuario")public static class Usuario { private String hash, alias, avatar; private int score;
@DynamoDBHashKey(attributeName = ”hash") public String getHash() { return hash; } public void setHash(String hash) { this.hash = hash; } @DynamoDBAttribute(attributeName=”alias") public String getalias() { return alias; } ...
hash alias avatar puntaje
abce64 Oli4 s3://mybucket/av1.jpg
1500
feru643 LoLZ s3://mybucket/lolz_56.jpg
800
4568c5 L33t s3://otherbucket/catface.png
750
Tabla: Usuario
Object Mapper Example - Class
// Create a user objectUsuario usuario = new Usuario();note.setHash(”abce64”);note.setAlias(”Oli4");note.setAvatar(”s3://mybucket/av1.jpg");note.setPuntaje(0);
// Save user object to DynamoDBmapper.save(usuario);
// Update score and save user againuser.setPuntaje(user.getPuntaje()+100);mapper.save(user);
// Load another userUser anotherUsuario = mapper.load(Usuario.class,”feru643”);
Object Mapper Example – Store and Update
Amazon Mobile Analytics
Amazon Device Farm
AWS IAM
Amazon Cognito Amazon S3
Amazon CloudFront
Amazon Lambda
AWS Mobile SDK
Autenticación y Sincr.
Autorización de acceso
Analice el comportamiento
Contenido de la tienda
Pruebas en dispositivos
Entrega de contenido
Ejecute la lógica de negocio
Amazon SNS Mobile Push
Envíe Push Notifications
Amazon DynamoDB
Almacene datos
Amazon Kinesis
Registre eventos en tiempo real
Stream en tiempo real: Amazon Kinesis
• Procesamiento de datos en tiempo real de stream distribuidos
• Capacidad elástico que permite escalar hasta millones de eventos por segundo
• Reaccione en tiempo real a eventos de streaming
• Almacenamiento confiable del stream replicado en 3 ubicaciones Amazon Kinesis
KinesisRecorder
String kinesisDirectory = "YOUR_UNIQUE_DIRECTORY";
KinesisRecorder recorder = new KinesisRecorder( cognitoProvider, Regions.US_WEST_2, getDir(kinesisDirectory, MODE_PRIVATE));
recorder.saveRecord("MyData".getBytes(),"MyStreamName");recorder.submitAllRecords();
¿Qué sucede si no quieren integrar el SDK en su app?
Amazon API Gateway
• Servicio de RESTful API Gateway completamente administrado y escalable
• Potenciado por nuestra red de content delivery vía nuestros 53 puntos de frontera
• Protección DDoS y capacidades de Throttling
Amazon API Gateway
Amazon API Gateway
• Ofrece todos los métodos comunes RESTful (GET, PUT, POST etc.)
• Múltiples API stages que se pueden definir(ej. dev, test, prod)
• Deployment sencillo entre stages
• AWS Lambda, Amazon’s Service APIs o su propia API como backend para el código que se ejecuta
Amazon Lambda
Amazon API Gateway
Amazon EC2
AWS API
On-Prem Server
Tiempo de demostración
Quieres hacerte socio de AWS
Amazon Partner Networkhttps://aws.amazon.com/partners/
Quieres hacerte socio de AWS
¡Muchas Gracias!
Jesus Bonequi, Arquitecto de soluciones de AWS@jesusbo