Erstellen Sie mithilfe AWS von Amplify eine serverlose mobile React Native-App - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie mithilfe AWS von Amplify eine serverlose mobile React Native-App

Erstellt von Deekshitulu Pentakota () AWS

Code-Repository aws-amplify-react-native: - ios-todo-app

Umgebung: Produktion

Quelle: NA

Ziel: AWS Amplify, Amazon Cognito AWS AppSync, Amazon DynamoDB

R-Typ: Re-Architect

Arbeitsaufwand: Open Source

Technologien: Serverlos; Web- und mobile Apps

AWSDienste: AWS Amplify; Amazon Cognito AWS AppSync; Amazon DynamoDB

Übersicht

Dieses Muster zeigt, wie Sie mithilfe von AWS Amplify und den folgenden Diensten ein serverloses Backend für eine mobile React Native-App erstellen: AWS

  • AWS AppSync

  • Amazon Cognito

  • Amazon-DynamoDB

Nachdem Sie das Backend der App mithilfe von Amplify konfiguriert und bereitgestellt haben, authentifiziert Amazon Cognito App-Benutzer und autorisiert sie für den Zugriff auf die App. AWS AppSync interagiert dann mit der Frontend-App und mit einer DynamoDB-Backend-Tabelle, um Daten zu erstellen und abzurufen.

Hinweis: Dieses Muster verwendet eine einfache App „ToDoList“ als Beispiel, aber Sie können ein ähnliches Verfahren verwenden, um jede beliebige mobile React Native-App zu erstellen.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS Konto

  • Amplify Command Line Interface (AmplifyCLI), installiert und konfiguriert

  • XCode (jede Version)

  • Microsoft Visual Studio (jede Version, jeder Code-Editor, jeder Texteditor)

  • Vertrautheit mit Amplify

  • Vertrautheit mit Amazon Cognito

  • Vertrautheit mit AWS AppSync

  • Vertrautheit mit DynamoDB

  • Vertrautheit mit Node.js

  • Vertrautheit mit npm

  • Vertrautheit mit React und React Native

  • Vertrautheit mit JavaScript und ECMAScript 6 () ES6

  • Vertrautheit mit GraphQL

Architektur

Das folgende Diagramm zeigt eine Beispielarchitektur für den Betrieb des Backends einer mobilen React Native-App in der Cloud: AWS

Arbeitsablauf für die Ausführung einer mobilen React Native-App mit AWS Diensten.

Das Diagramm zeigt die folgende Architektur:

  1. Amazon Cognito authentifiziert App-Benutzer und autorisiert sie, auf die App zuzugreifen.

  2. Zum Erstellen und Abrufen von Daten AWS AppSync verwendet GraphQL API zur Interaktion mit der Frontend-App und einer Backend-DynamoDB-Tabelle.

Tools

AWSDienste

  • AWSAmplify ist eine Reihe von speziell entwickelten Tools und Funktionen, mit denen Frontend-Web- und Mobilentwickler schnell Full-Stack-Anwendungen erstellen können. AWS

  • AWS AppSyncbietet eine skalierbare GraphQL-Schnittstelle, mit der Anwendungsentwickler Daten aus mehreren Quellen kombinieren können, darunter Amazon DynamoDB, AWS Lambda und. HTTP APIs

  • Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.

  • Amazon DynamoDB ist ein vollständig verwalteter Service ohne SQL Datenbank, der eine schnelle, vorhersehbare und skalierbare Leistung bietet.

Code

Der Code für die Beispielanwendung, die in diesem Muster verwendet wird, ist im Repository GitHub aws-amplify-react-native- ios-todo-app verfügbar. Um die Beispieldateien zu verwenden, folgen Sie den Anweisungen im Abschnitt Epics dieses Musters.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie eine React Native-Entwicklungsumgebung ein.

Anweisungen finden Sie unter Einrichten der Entwicklungsumgebung in der React Native-Dokumentation.

App-Developer

Erstellen Sie die mobile ToDoList React Native-App und führen Sie sie im iOS-Simulator aus.

  1. Erstellen Sie ein neues React Native-Projektverzeichnis für mobile Apps in Ihrer lokalen Umgebung, indem Sie den folgenden Befehl in einem neuen Terminalfenster ausführen:

    npx react-native init ToDoListAmplify

  2. Navigieren Sie zum Stammverzeichnis des Projekts, indem Sie den folgenden Befehl ausführen:

    cd ToDoListAmplify

  3. Führen Sie die App aus, indem Sie den folgenden Befehl ausführen:

    npx react-native run-ios

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die Backend-Dienste, die zur Unterstützung der App in Amplify erforderlich sind.

  1. Führen Sie in Ihrer lokalen Umgebung den folgenden Befehl im Stammverzeichnis des Projekts aus () ToDoListAmplifyaus:

    amplify init

  2. Es wird eine Aufforderung angezeigt, in der Sie aufgefordert werden, Informationen zur App anzugeben. Geben Sie die erforderlichen Informationen basierend auf Ihrem Anwendungsfall ein. Drücken Sie anschließend die Eingabetaste.

Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.

Beispiel für die Konfiguration der React Native Amplify App

? 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

Weitere Informationen finden Sie unter Erstellen eines neuen Amplify-Backends in der Amplify Dev Center-Dokumentation.

Hinweis: Der amplify init Befehl stellt die folgenden Ressourcen bereit, indem er verwendet: AWS CloudFormation 

  • AWSIdentity and Access Management (IAM) -Rollen für authentifizierte und nicht authentifizierte Benutzer (Auth Role und Unauth Role)

  • Ein Amazon Simple Storage Service (Amazon S3) -Bucket für die Bereitstellung (für die Beispiel-App dieses Musters, Amplify-Meta.json)

  • Eine Backend-Umgebung in Amplify Hosting

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Amazon Cognito Cognito-Authentifizierungsservice.

  1. Führen Sie in Ihrer lokalen Umgebung den folgenden Befehl im Stammverzeichnis des Projekts aus (ToDoListAmplify) aus:

    amplify add auth

  2. Es wird eine Aufforderung angezeigt, in der Sie aufgefordert werden, Informationen zu den Konfigurationseinstellungen des Authentifizierungsdienstes einzugeben. Geben Sie die erforderlichen Informationen basierend auf Ihrem Anwendungsfall ein. Drücken Sie anschließend die Eingabetaste.

Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.

Beispiel für Konfigurationseinstellungen für den Authentifizierungsdienst

? 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

Hinweis: Der amplify add auth Befehl erstellt die erforderlichen Ordner, Dateien und Abhängigkeitsdateien in einem lokalen Ordner (Amplify) im Stammverzeichnis des Projekts. Für das in diesem Muster verwendete ToDoList App-Setup wird die Datei aws-exports.js zu diesem Zweck erstellt.

App-Developer

Stellen Sie den Amazon Cognito-Service in der AWS Cloud bereit.

  1. Führen Sie im Stammverzeichnis des Projekts den folgenden CLI Amplify-Befehl aus:

    amplify push

  2. Eine Aufforderung zur Bestätigung der Bereitstellung wird angezeigt. Geben Sie Ja ein. Drücken Sie anschließend die Eingabetaste.

Hinweis: Um die in Ihrem Projekt bereitgestellten Dienste zu sehen, rufen Sie die Amplify-Konsole auf, indem Sie den folgenden Befehl ausführen:

amplify console

App-Developer

Installieren Sie die erforderlichen Amplify-Bibliotheken für React Native und die CocoaPods Abhängigkeiten für iOS.

  1. Installieren Sie die erforderlichen Amplify-Open-Source-Clientbibliotheken, indem Sie den folgenden Befehl im Stammverzeichnis des Projekts ausführen:

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

  2. Installieren Sie die erforderlichen CocoaPods Abhängigkeiten für iOS, indem Sie den folgenden Befehl ausführen:

    npx pod-install

App-Developer

Importieren und konfigurieren Sie den Amplify-Dienst.

Importieren und laden Sie in der Einstiegspunktdatei der App (z. B. App.js) die Konfigurationsdatei des Amplify-Dienstes, indem Sie die folgenden Codezeilen eingeben:

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

Hinweis: Wenn Sie nach dem Import des Amplify-Dienstes in die Einstiegspunktdatei der App eine Fehlermeldung erhalten, beenden Sie die App. Öffnen XCode Sie dann die ToDoListAmplifyDatei .xcworkspace aus dem iOS-Ordner des Projekts, wählen Sie sie aus und führen Sie die App aus.

App-Developer

Aktualisieren Sie die Einstiegspunktdatei Ihrer App, um die Komponente withAuthenticator höherer Ordnung () zu verwenden. HOC

Hinweis: Die withAuthenticator HOC bietet Workflows zum Anmelden, Registrieren und Vergessen von Passwörtern in Ihrer App, wobei nur ein paar Codezeilen verwendet werden. Weitere Informationen finden Sie unter Option 1: Verwenden Sie vorgefertigte UI-Komponenten im Amplify Dev Center. Außerdem Komponenten höherer Ordnung in der React-Dokumentation.

  1. Importieren Sie in der Einstiegspunktdatei der App (z. B. App.js) die, withAuthenticator HOC indem Sie die folgenden Codezeilen eingeben:

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

  2. Exportieren Sie die, withAuthenticator HOC indem Sie den folgenden Code eingeben:

    export default withAuthenticator(App)

withAuthenticator HOCCode-Beispiel

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

Hinweis: In iOS Simulator zeigt die App den Anmeldebildschirm an, der vom Amazon Cognito-Service bereitgestellt wird.

App-Developer

Testen Sie die Einrichtung des Authentifizierungsdienstes.

Gehen Sie im iOS-Simulator wie folgt vor:

  1. Erstellen Sie ein neues Konto in der App, indem Sie eine echte E-Mail-Adresse verwenden. Ein Bestätigungscode wird dann an die registrierte E-Mail gesendet.

  2. Überprüfen Sie das eingerichtete Konto mithilfe des Codes, den Sie in der Bestätigungs-E-Mail erhalten.

  3. Geben Sie den Benutzernamen und das Passwort ein, die Sie erstellt haben. Wählen Sie dann Anmelden. Ein Willkommensbildschirm wird angezeigt.  

Hinweis: Sie können auch die Amazon Cognito Cognito-Konsole öffnen und überprüfen, ob ein neuer Benutzer im Identity Pool erstellt wurde oder nicht.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine AWS AppSync API DynamoDB-Datenbank.

  1. Fügen Sie Ihrer App eine AWS AppSync API hinzu und stellen Sie automatisch eine DynamoDB-Datenbank bereit, indem Sie den folgenden CLI Amplify-Befehl im Stammverzeichnis des Projekts ausführen:

    amplify add api

  2. Es wird eine Aufforderung angezeigt, in der Sie aufgefordert werden, Informationen zu den Einstellungen API und zur Datenbankkonfiguration anzugeben. Geben Sie die erforderlichen Informationen basierend auf Ihrem Anwendungsfall ein. Drücken Sie anschließend die Eingabetaste. Das Amplify CLI öffnet die GraphQL-Schemadatei in Ihrem Texteditor.

Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.

Einstellungen für Beispiel API und Datenbankkonfiguration

? 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

Beispiel für ein GraphQL-Schema

type Todo @model { id: ID! name: String! description: String }
App-Developer

Stellen Sie das AWS AppSync API bereit.

  1. Führen Sie im Stammverzeichnis des Projekts den folgenden CLI Amplify-Befehl aus:

    amplify push

  2. Es wird eine Aufforderung angezeigt, in der Sie aufgefordert werden, weitere Informationen zu den Einstellungen API und zur Datenbankkonfiguration anzugeben. Geben Sie die erforderlichen Informationen basierend auf Ihrem Anwendungsfall ein. Drücken Sie anschließend die Eingabetaste. Ihre App kann jetzt mit dem interagieren AWS AppSync API. 

Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.

AWS AppSync APIBeispielkonfigurationseinstellungen

Hinweis: Die folgende Konfiguration erstellt GraphQL API in AWS AppSync und eine Todo-Tabelle in 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
App-Developer

Connect das Frontend der App mit dem AWS AppSync API.

Um die in diesem Muster bereitgestellte ToDoList Beispiel-App zu verwenden, kopieren Sie den Code aus der Datei App.js im ios-todo-app GitHub Repository aws-amplify-react-native-. Integrieren Sie dann den Beispielcode in Ihre lokale Umgebung.

Der in der Datei App.js des Repositorys enthaltene Beispielcode bewirkt Folgendes:

  • Zeigt das Formular zum Erstellen eines ToDo Elements mit den Feldern Titel und Beschreibung

  • Zeigt die Liste der zu erledigenden Aufgaben an (Titel und Beschreibung)

  • Postet Daten mithilfe von Methoden und ruft sie ab aws-amplify

App-Developer

Zugehörige Ressourcen