Cree una aplicación móvil React Native sin servidor con AWS Amplify - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cree una aplicación móvil React Native sin servidor con AWS Amplify

Creado por Deekshitulu Pentakota (AWS)

Resumen

Este patrón muestra cómo crear un backend sin servidor para una aplicación móvil React Native mediante AWS Amplify y los siguientes servicios de AWS:

  • AWS AppSync

  • Amazon Cognito

  • Amazon DynamoDB

Tras configurar e implementar el backend de la aplicación mediante Amplify, Amazon Cognito autentica a los usuarios y los autoriza a acceder a la aplicación. AppSync A continuación, AWS interactúa con la aplicación de interfaz y con una tabla de DynamoDB de backend para crear y obtener datos.

nota

Este patrón usa una simple aplicación «ToDoList» como ejemplo, pero puede usar un procedimiento similar para crear cualquier aplicación móvil de React Native.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Interfaz de la línea de comandos de Amplify (Amplify CLI) instalada y configurada

  • XCode (cualquier versión)

  • Microsoft Visual Studio (cualquier versión, cualquier editor de código, cualquier editor de texto)

  • Familiaridad con Amplify

  • Familiaridad con Amazon Cognito

  • Familiaridad con AWS AppSync

  • Familiaridad con DynamoDB

  • Familiaridad con Node.js

  • Familiarización con npm

  • Familiaridad con React y React Native

  • Familiaridad con JavaScript y ( ECMAScript 6) ES6

  • Familiaridad con GraphQL

Arquitectura

El siguiente diagrama muestra un ejemplo de arquitectura para ejecutar el backend de una aplicación móvil React Native en la nube de AWS:

Flujo de trabajo para ejecutar una aplicación móvil React Native con los servicios de AWS.

En el siguiente diagrama se muestra la arquitectura:

  1. Amazon Cognito autentica a los usuarios y los autoriza a acceder a la aplicación.

  2. Para crear y obtener datos, AWS AppSync utiliza una API de GraphQL para interactuar con la aplicación de frontend y una tabla de DynamoDB de backend.

Herramientas

Servicios de AWS

  • AWS Amplify es un conjunto de herramientas y funciones diseñadas específicamente que permiten a los desarrolladores web y móviles front-end crear aplicaciones de pila completa en AWS de manera rápida.

  • AWS AppSync proporciona una interfaz GraphQL escalable que ayuda a los desarrolladores de aplicaciones a combinar datos de varias fuentes, incluidas Amazon DynamoDB, AWS Lambda y HTTP. APIs

  • Amazon Cognito ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web.

  • Amazon DynamoDB es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.

Código

El código de la aplicación de muestra que se utiliza en este patrón está disponible en el repositorio -. GitHub aws-amplify-react-native ios-todo-app Para usar los archivos de ejemplo, siga las instrucciones de la sección Épica de este patrón.

Epics

TareaDescripciónHabilidades requeridas

Configure un entorno de desarrollo React Native.

Para obtener instrucciones, consulte Configurar el entorno de desarrollo en la documentación de React Native.

Desarrollador de aplicaciones

Cree y ejecute la aplicación móvil ToDoList React Native en el simulador de iOS.

  1. Cree un nuevo directorio de proyecto de aplicación móvil React Native en su entorno local ejecutando el siguiente comando en una nueva ventana de terminal:

    npx react-native init ToDoListAmplify

  2. Navegue hasta el directorio raíz del proyecto ejecutando el siguiente comando:

    cd ToDoListAmplify

  3. Ponga en marcha la aplicación ejecutando el siguiente comando:

    npx react-native run-ios

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Cree los servicios de backend necesarios para respaldar la aplicación en Amplify.

  1. En tu entorno local, ejecuta el siguiente comando desde el directorio raíz del proyecto (ToDoListAmplify):

    amplify init

  2. Aparecerá un mensaje solicitando información sobre la aplicación. Introduzca la información requerida en función del caso de uso. A continuación, pulse Intro.

Para la configuración de la ToDoList aplicación utilizada en este patrón, aplique el siguiente ejemplo de configuración.

Ejemplo de ajustes de configuración de aplicación React Native en Amplify

? Name: ToDoListAmplify ? Environment: dev ? Default editor: Visual Studio Code ? App type: javascript ? Javascript framework: react-native ? Source Directory Path: src ? Distribution Directory Path: / ? Build Command: npm run-script build ? Start Command: npm run-script start ? Select the authentication method you want to use: AWS profile ? Please choose the profile you want to use: default

Para obtener más información, consulte Crear un nuevo backend de Amplify en la documentación de Amplify Dev Center.

nota

El amplify init comando aprovisiona los siguientes recursos mediante AWS CloudFormation

  • Roles de AWS Identity and Access Management (IAM) para usuarios autenticados y no autenticados (rol Auth y rol Unauth)

  • Un bucket de Amazon Simple Storage Service (Amazon S3) para implementación (para la aplicación de ejemplo de este patrón, Amplify-meta.json.

  • Un entorno de backend en Amplify Hosting

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Cree un servicio de autenticación de Amazon Cognito.

  1. En su entorno local, ejecute el siguiente comando desde el directorio raíz del proyecto (ToDoListAmplify):

    amplify add auth

  2. Aparecerá un mensaje solicitando información sobre los ajustes de configuración del servicio de autenticación. Introduzca la información requerida en función del caso de uso. A continuación, pulse Intro.

Para la configuración de la ToDoList aplicación utilizada en este patrón, aplique el siguiente ejemplo de configuración.

Ejemplo de ajustes de configuración del servicio de autenticación

? Do you want to use the default authentication and security configuration? \ Default configuration ? How do you want users to be able to sign in? \ Username ? Do you want to configure advanced settings? \ No, I am done
nota

El amplify add auth comando crea las carpetas, los archivos y los archivos de dependencia necesarios en una carpeta local (amplifica) dentro del directorio raíz del proyecto. Para la configuración de la ToDoList aplicación utilizada en este patrón, se crea el archivo aws-exports.js con este fin.

Desarrollador de aplicaciones

Implemente el servicio de Amazon Cognito en la nube de AWS.

  1. Desde el directorio raíz del proyecto, ejecute el siguiente comando en la CLI de Amplify:

    amplify push

  2. Aparecerá un mensaje para confirmar la implementación. Introduzca . A continuación, pulse Intro.

nota

Para ver los servicios desplegados en su proyecto, vaya a la consola de Amplify ejecutando el siguiente comando:

amplify console

Desarrollador de aplicaciones

Instala las bibliotecas Amplify necesarias para React Native y las CocoaPods dependencias para iOS.

  1. Instale las bibliotecas cliente de código abierto de Amplify necesarias ejecutando el siguiente comando desde el directorio raíz del proyecto:

    npm install aws-amplify aws-amplify-react-native \ amazon-cognito-identity-js @react-native-community/netinfo \ @react-native-async-storage/async-storage

  2. Instala CocoaPods las dependencias necesarias para iOS ejecutando el siguiente comando:

    npx pod-install

Desarrollador de aplicaciones

Importe y configure el servicio Amplify.

En el archivo de punto de entrada de la aplicación (por ejemplo, App.js), importe y cargue el archivo de configuración del servicio Amplify introduciendo las siguientes líneas de código:

import Amplify from 'aws-amplify' import config from './src/aws-exports' Amplify.configure(config)
nota

Si recibes un error después de importar el servicio Amplify en el archivo de punto de entrada de la aplicación, deténgala. A continuación, abre XCode y selecciona el ToDoListAmplifyarchivo.xcworkspace de la carpeta iOS del proyecto y ejecuta la aplicación.

Desarrollador de aplicaciones

Actualice el archivo de punto de entrada de la aplicación para usar el componente de orden superior (HOC) withAuthenticator.

nota

El withAuthenticator HOC proporciona flujos de trabajo para iniciar sesión, registrarse y olvidar la contraseña en tu aplicación utilizando solo unas pocas líneas de código. Para obtener más información, consulte Opción 1: usar componentes de interfaz de usuario precompilados en Amplify Dev Center. También puede consultar Componentes de orden superior en la documentación de React.

  1. En el archivo de punto de entrada de la aplicación (por ejemplo,App.js), importe el HOC withAuthenticator introduciendo las siguientes líneas de código:

    import { withAuthenticator } from 'aws-amplify-react-native'

  2. Exporte el HOC withAuthenticator introduciendo el siguiente código:

    export default withAuthenticator(App)

Ejemplo de código de HOC withAuthenticator

import Amplify from 'aws-amplify' import config from './src/aws-exports' Amplify.configure(config) import { withAuthenticator } from 'aws-amplify-react-native'; const App = () => { return null; }; export default withAuthenticator(App);
nota

En el simulador de iOS, la aplicación muestra la pantalla de inicio de sesión proporcionada por el servicio Amazon Cognito.

Desarrollador de aplicaciones

Pruebe la configuración del servicio de autenticación.

En el simulador de iOS, haga lo siguiente:

  1. Cree una cuenta nueva en la aplicación con una dirección de correo electrónico real. Se enviará un código de verificación al correo electrónico registrado.

  2. Verifique la cuenta configurada con el código que ha recibido en el correo electrónico de verificación.

  3. Introduzca el nombre de usuario y la contraseña que ha creado. A continuación, seleccione Iniciar sesión. Aparecerá una pantalla de bienvenida.  

nota

También puede abrir la consola de Amazon Cognito y comprobar si se ha creado un nuevo usuario en el grupo de identidades o no.

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Cree una AppSync API de AWS y una base de datos de DynamoDB.

  1. Añada una AppSync API de AWS a su aplicación y aprovisione automáticamente una base de datos de DynamoDB mediante la ejecución del siguiente comando de Amplify CLI desde el directorio raíz del proyecto:

    amplify add api

  2. Aparecerá un aviso que le pedirá información sobre la API y los ajustes de configuración de la base de datos. Introduzca la información requerida en función del caso de uso. A continuación, pulse Intro. La CLI de Amplify abre el archivo de esquema de GraphQL en su editor de texto.

Para la configuración de la ToDoList aplicación utilizada en este patrón, aplique la siguiente configuración de ejemplo.

Ejemplo de ajustes de configuración de API y base de datos

? Please select from one of the below mentioned services: \ GraphQL ? Provide API name: todolistamplify ? Choose the default authorization type for the API \ Amazon Cognito User Pool Do you want to use the default authentication and security configuration ? Default configuration How do you want users to be able to sign in? \ Username Do you want to configure advanced settings? \ No, I am done. ? Do you want to configure advanced settings for the GraphQL API \ No, I am done. ? Do you have an annotated GraphQL schema? \ No ? Choose a schema template: \ Single object with fields (e.g., “Todo” with ID, name, description) ? Do you want to edit the schema now? \ Yes

Ejemplo de esquema de GraphQL

type Todo @model { id: ID! name: String! description: String }
Desarrollador de aplicaciones

Implemente la AppSync API de AWS.

  1. Desde el directorio raíz del proyecto, ejecute el siguiente comando en la CLI de Amplify:

    amplify push

  2. Aparecerá un aviso que le pedirá más información sobre la API y los ajustes de configuración de la base de datos. Introduzca la información requerida en función del caso de uso. A continuación, pulse Intro. Su aplicación ahora puede interactuar con la AppSync API de AWS. 

Para la configuración de la ToDoList aplicación utilizada en este patrón, aplique la siguiente configuración de ejemplo.

Ejemplo de ajustes de configuración AppSync de la API de AWS

nota

La siguiente configuración crea la API GraphQL en AWS AppSync y una tabla Todo en Dynamo DB.

? Are you sure you want to continue? Yes ? Do you want to generate code for your newly created GraphQL API Yes ? Choose the code generation language target javascript ? Enter the file name pattern of graphql queries, mutations and subscriptions src/graphql/**/*.js ? Do you want to generate/update all possible GraphQL operations - \ queries, mutations and subscriptions Yes ? Enter maximum statement depth \ [increase from default if your schema is deeply nested] 2
Desarrollador de aplicaciones

Conecta la interfaz de la aplicación a la AppSync API de AWS.

Para usar la ToDoList aplicación de ejemplo que se proporciona en este patrón, copie el código del archivo App.js del ios-todo-app GitHub repositorio aws-amplify-react-native-. A continuación, integre el código de ejemplo en su entorno local.

El código de ejemplo proporcionado en el archivo App.js del repositorio hace lo siguiente:

  • Muestra el formulario para crear un ToDo elemento con los campos de título y descripción

  • Muestra la lista de tareas pendientes (Título y Descripción)

  • Publica y recupera datos mediante métodos de aws-amplify

Desarrollador de aplicaciones

Recursos relacionados