Comenzando con los servicios móviles en AWS

54
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Jesus Bonequi, Arquitecto de soluciones AWS Construyendo un App Móvil utilizando AWS

Transcript of Comenzando con los servicios móviles en AWS

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

Page 2: Comenzando con los servicios móviles en 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

Page 3: Comenzando con los servicios móviles en AWS

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

Page 4: Comenzando con los servicios móviles en AWS

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

Page 5: Comenzando con los servicios móviles en AWS

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

Page 6: Comenzando con los servicios móviles en AWS

LISTOS… a construir un App

Page 7: Comenzando con los servicios móviles en AWS

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

Page 8: Comenzando con los servicios móviles en AWS

• 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

Page 9: Comenzando con los servicios móviles en AWS

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

Page 10: Comenzando con los servicios móviles en AWS

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

Page 11: Comenzando con los servicios móviles en AWS

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

Page 12: Comenzando con los servicios móviles en AWS

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

Page 13: Comenzando con los servicios móviles en AWS

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

Page 14: Comenzando con los servicios móviles en AWS

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);

Page 15: Comenzando con los servicios móviles en AWS

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);

Page 16: Comenzando con los servicios móviles en AWS

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

Page 17: Comenzando con los servicios móviles en AWS

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)

Page 18: Comenzando con los servicios móviles en AWS

{ "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

Page 19: Comenzando con los servicios móviles en AWS

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)

Page 20: Comenzando con los servicios móviles en AWS

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

Page 21: Comenzando con los servicios móviles en AWS

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

Page 22: Comenzando con los servicios móviles en AWS
Page 23: Comenzando con los servicios móviles en AWS

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

Page 24: Comenzando con los servicios móviles en AWS

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

Page 25: Comenzando con los servicios móviles en AWS
Page 26: Comenzando con los servicios móviles en AWS

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

Page 27: Comenzando con los servicios móviles en AWS

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); }

Page 28: Comenzando con los servicios móviles en AWS

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

Page 29: Comenzando con los servicios móviles en AWS

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

Page 30: Comenzando con los servicios móviles en AWS

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

Page 31: Comenzando con los servicios móviles en AWS

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

};

Page 32: Comenzando con los servicios móviles en AWS

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

Page 33: Comenzando con los servicios móviles en AWS

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

Page 34: Comenzando con los servicios móviles en AWS

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

Page 35: Comenzando con los servicios móviles en AWS

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

Page 36: Comenzando con los servicios móviles en AWS

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);

Page 37: Comenzando con los servicios móviles en AWS

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];

Page 38: Comenzando con los servicios móviles en AWS

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

Page 39: Comenzando con los servicios móviles en AWS

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

Page 40: Comenzando con los servicios móviles en AWS

Amazon SNS

Mobile Apps

Apple APNS

Google GCM

Amazon ADM

Amazon SNS Mobile Push Notifications: Escalabilidad

Page 41: Comenzando con los servicios móviles en AWS

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

Page 42: Comenzando con los servicios móviles en AWS

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

Page 43: Comenzando con los servicios móviles en AWS

@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

Page 44: Comenzando con los servicios móviles en AWS

// 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

Page 45: Comenzando con los servicios móviles en AWS

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

Page 46: Comenzando con los servicios móviles en AWS

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

Page 47: Comenzando con los servicios móviles en AWS

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();

Page 48: Comenzando con los servicios móviles en AWS

¿Qué sucede si no quieren integrar el SDK en su app?

Page 49: Comenzando con los servicios móviles en AWS

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

Page 50: Comenzando con los servicios móviles en AWS

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

Page 51: Comenzando con los servicios móviles en AWS

Tiempo de demostración

Page 52: Comenzando con los servicios móviles en AWS

Quieres hacerte socio de AWS

Amazon Partner Networkhttps://aws.amazon.com/partners/

Page 53: Comenzando con los servicios móviles en AWS

Quieres hacerte socio de AWS

Page 54: Comenzando con los servicios móviles en AWS

¡Muchas Gracias!

Jesus Bonequi, Arquitecto de soluciones de AWS@jesusbo