使用 AWS Amplify 建置無伺服器 React Native 行動應用程式 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS Amplify 建置無伺服器 React Native 行動應用程式

由 Deekshitulu Pentakota 建立 (AWS)

程式碼儲存庫:aws-amplify-react-native-ios-todo-app

環境:生產

來源:NA

目標:AWSAmplify、AWS AppSync、Amazon CognitoAmazon DynamoDB

R 類型:重新架構

工作負載:開放原始碼

技術:無伺服器;Web 和行動應用程式

AWS 服務:AWSAmplify;AWS AppSync;Amazon CognitoAmazon DynamoDB

Summary

此模式說明如何使用 AWS Amplify 和下列AWS服務,為 React Native 行動應用程式建立無伺服器後端:

  • AWS AppSync

  • Amazon Cognito

  • Amazon DynamoDB

使用 Amplify 設定和部署應用程式後端後,Amazon Cognito 會驗證應用程式使用者,並授權他們存取應用程式。AWS AppSync 然後與前端應用程式和後端 DynamoDB 資料表互動,以建立和擷取資料。

注意:此模式使用簡單的「ToDoList」應用程式作為範例,但您可以使用類似的程序來建立任何 React Native 行動應用程式。

先決條件和限制

先決條件

  • 作用中AWS帳戶

  • Amplify Command Line Interface (Amplify CLI),已安裝和設定

  • XCode (任何版本)

  • Microsoft Visual Studio (任何版本、任何程式碼編輯器、任何文字編輯器)

  • 熟悉 Amplify

  • 熟悉 Amazon Cognito

  • 熟悉 AWS AppSync

  • 熟悉 DynamoDB

  • 熟悉 Node.js

  • 熟悉 npm

  • 熟悉 React 和 React Native

  • 熟悉 JavaScript 和 ECMAScript 6 (ES6)

  • 熟悉 GraphQL

架構

下圖顯示在 AWS Cloud 中執行 React Native 行動應用程式後端的範例架構:

使用 AWS服務執行 React Native 行動應用程式的工作流程。

圖表顯示下列架構:

  1. Amazon Cognito 會驗證應用程式使用者,並授權他們存取應用程式。

  2. 若要建立和擷取資料, AWS AppSync 會使用 GraphQL 與前端應用程式和後端 DynamoDB 資料表API互動。

工具

AWS 服務

  • AWS Amplify 是一組專用工具和功能,可協助前端 Web 和行動開發人員快速在 上建置完整堆疊應用程式AWS。

  • AWS AppSync 提供可擴展的 GraphQL 介面,可協助應用程式開發人員合併來自多個來源的資料,包括 Amazon DynamoDB 、AWSLambda 和 HTTP APIs。

  • Amazon Cognito 提供 Web 和行動應用程式的身分驗證、授權和使用者管理。

  • Amazon DynamoDB 是完全受管的無SQL資料庫服務,可提供快速、可預測且可擴展的效能。

Code

此模式中使用的範例應用程式的程式碼可在 GitHub aws-amplify-react-native-ios-todo-app 儲存庫中使用。若要使用範例檔案,請遵循此模式的 Epics 區段中的指示。

史詩

任務描述所需的技能

設定 React Native 開發環境。

如需指示,請參閱 React Native 文件中的設定開發環境

應用程式開發人員

在 iOS Simulator 中建立和執行 ToDoList React Native 行動應用程式。

  1. 在本機環境中建立新的 React Native 行動應用程式專案目錄,方法是在新的終端機視窗中執行下列命令:

    npx react-native init ToDoListAmplify

  2. 透過執行下列命令,導覽至專案的根目錄:

    cd ToDoListAmplify

  3. 透過執行下列命令來執行應用程式:

    npx react-native run-ios

應用程式開發人員
任務描述所需的技能

在 Amplify 中建立支援應用程式所需的後端服務。

  1. 在本機環境中,從專案的根目錄 () 執行下列命令ToDoListAmplify

    amplify init

  2. 出現提示,要求您提供有關應用程式的資訊。根據您的使用案例輸入必要的資訊。然後按 Enter 鍵。

對於此模式中使用的 ToDoList 應用程式設定,請套用下列範例組態。

React Native 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

如需詳細資訊,請參閱 Amplify 開發中心文件中建立新的 Amplify 後端

注意: amplify init命令使用 佈建下列資源AWS CloudFormation: 

  • AWS 已驗證和未驗證使用者的身分和存取管理 (IAM) 角色 (驗證角色未驗證角色

  • 用於部署的 Amazon Simple Storage Service (Amazon S3) 儲存貯體 (此模式的範例應用程式 Amplify-meta.json)

  • Amplify Hosting 中的後端環境

應用程式開發人員
任務描述所需的技能

建立 Amazon Cognito 身分驗證服務。

  1. 在本機環境中,從專案的根目錄 () 執行下列命令ToDoListAmplify

    amplify add auth

  2. 出現提示,要求您提供有關身分驗證服務組態設定的資訊。根據您的使用案例輸入必要的資訊。然後按 Enter 鍵。

對於此模式中使用的 ToDoList 應用程式設定,請套用下列範例組態。

驗證服務組態設定範例

? 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

注意:amplify add auth命令會在專案根目錄內的本機資料夾 (放大 ) 中建立必要的資料夾、檔案和相依性檔案。對於此模式中使用的 ToDoList 應用程式設定,會為此目的建立 aws-exports.js

應用程式開發人員

將 Amazon Cognito 服務部署至AWS雲端。

  1. 從專案的根目錄中,執行下列 Amplify CLI命令:

    amplify push

  2. 出現確認部署的提示。輸入。然後按 Enter 鍵。

注意:若要查看專案中部署的服務,請執行下列命令,前往 Amplify 主控台:

amplify console

應用程式開發人員

安裝 React Native 所需的 Amplify 程式庫和 iOS 的 CocoaPods 相依性。

  1. 從專案的根目錄執行下列命令,安裝所需的 Amplify 開放原始碼用戶端程式庫:

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

  2. 執行下列命令,安裝 iOS 所需的 CocoaPods 相依性:

    npx pod-install

應用程式開發人員

匯入並設定 Amplify 服務。

在應用程式的進入點檔案中 (例如 App.js ),輸入下列幾行程式碼匯入和載入 Amplify 服務的組態檔案:

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

注意:如果您在應用程式的入口檔案中匯入 Amplify 服務後收到錯誤,請停止應用程式。然後,從專案的 iOS 資料夾開啟XCode並選取 ToDoListAmplify.xcworkspace,然後執行應用程式。

應用程式開發人員

更新應用程式的進入點檔案以使用 withAuthenticator 高階元件 (HOC)。

注意: 只使用幾行程式碼,即可在應用程式中withAuthenticatorHOC提供登入、註冊和忘記密碼工作流程。如需詳細資訊,請參閱 Amplify Dev Center 中的選項 1:使用預先建置的 UI 元件。此外,React 文件中的高階元件

  1. 在應用程式的進入點檔案中 (例如 App.js ),輸入下列幾行程式碼withAuthenticatorHOC來匯入 :

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

  2. 輸入下列程式碼以匯出 withAuthenticator HOC:

    export default withAuthenticator(App)

withAuthenticator HOC 程式碼範例

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

注意:在 iOS Simulator 中,應用程式會顯示 Amazon Cognito 服務提供的登入畫面。

應用程式開發人員

測試身分驗證服務設定。

在 iOS Simulator 中,執行下列動作:

  1. 使用真正的電子郵件地址在應用程式中建立新帳戶。然後,驗證碼會傳送至已註冊的電子郵件。

  2. 使用您在驗證電子郵件中收到的程式碼來驗證帳戶設定。

  3. 輸入您建立的使用者名稱和密碼。然後,選擇登入 。會顯示歡迎畫面。 

注意:您也可以開啟 Amazon Cognito 主控台,並檢查是否已在 Identity Pool 中建立新的使用者。

應用程式開發人員
任務描述所需的技能

建立 AWS AppSync API和 DynamoDB 資料庫。

  1. 將 AWS AppSync API新增至您的應用程式,並從專案的根目錄執行下列 Amplify CLI命令,以自動佈建 DynamoDB 資料庫:

    amplify add api

  2. 出現提示,要求您提供有關 API和資料庫組態設定的資訊。根據您的使用案例輸入必要的資訊。然後按 Enter 鍵。Amplify 會在文字編輯器中CLI開啟 GraphQL 結構描述檔案。

對於此模式中使用的 ToDoList 應用程式設定,請套用下列範例組態。

範例API和資料庫組態設定

? 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

GraphQL 結構描述範例

type Todo @model { id: ID! name: String! description: String }
應用程式開發人員

部署 AWS AppSync API。

  1. 在專案的根目錄中,執行下列 Amplify CLI命令:

    amplify push

  2. 出現提示,要求您提供有關 API和資料庫組態設定的詳細資訊。根據您的使用案例輸入必要的資訊。然後按 Enter 鍵。您的應用程式現在可以與 互動AWS AppSync API。 

對於此模式中使用的 ToDoList 應用程式設定,請套用下列範例組態。

AWS AppSync API組態設定範例

注意:下列組態會在 Dynamo DB API 中建立 GraphQL AWS AppSync 和 Todo 資料表。

? 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
應用程式開發人員

將應用程式的前端連接至 AWS AppSync API。

若要使用此模式提供的範例 ToDoList 應用程式,請從 aws-amplify-react-native-ios-todo-app GitHub 儲存庫中的 App.js 檔案複製程式碼。然後,將範例程式碼整合到您的本機環境。

在儲存庫的 App.js 檔案中提供的範例程式碼執行下列動作:

  • 顯示建立具有標題描述欄位之ToDo 項目的表單

  • 顯示待辦事項項目清單 (標題描述

  • 使用 aws-amplify 方法發佈和擷取資料

應用程式開發人員

相關資源