本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 行動應用程式後端的範例架構:
圖表顯示下列架構:
Amazon Cognito 會驗證應用程式使用者,並授權他們存取應用程式。
若要建立和擷取資料, AWS AppSync 會使用 GraphQL 與前端應用程式和後端 DynamoDB 資料表API互動。
AWS 服務
Code
此模式中使用的範例應用程式的程式碼可在 GitHub aws-amplify-react-native-ios-todo-app 儲存庫中使用。若要使用範例檔案,請遵循此模式的 Epics 區段中的指示。
史詩
任務 | 描述 | 所需的技能 |
---|
設定 React Native 開發環境。 | 如需指示,請參閱 React Native 文件中的設定開發環境。 | 應用程式開發人員 |
在 iOS Simulator 中建立和執行 ToDoList React Native 行動應用程式。 | 在本機環境中建立新的 React Native 行動應用程式專案目錄,方法是在新的終端機視窗中執行下列命令: npx react-native init ToDoListAmplify
透過執行下列命令,導覽至專案的根目錄: cd ToDoListAmplify
透過執行下列命令來執行應用程式: npx react-native run-ios
| 應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|
在 Amplify 中建立支援應用程式所需的後端服務。 | 在本機環境中,從專案的根目錄 () 執行下列命令ToDoListAmplify: amplify init
出現提示,要求您提供有關應用程式的資訊。根據您的使用案例輸入必要的資訊。然後按 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: | 應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|
建立 Amazon Cognito 身分驗證服務。 | 在本機環境中,從專案的根目錄 () 執行下列命令ToDoListAmplify: amplify add auth
出現提示,要求您提供有關身分驗證服務組態設定的資訊。根據您的使用案例輸入必要的資訊。然後按 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雲端。 | 從專案的根目錄中,執行下列 Amplify CLI命令: amplify push
出現確認部署的提示。輸入是 。然後按 Enter 鍵。
注意:若要查看專案中部署的服務,請執行下列命令,前往 Amplify 主控台: amplify console
| 應用程式開發人員 |
安裝 React Native 所需的 Amplify 程式庫和 iOS 的 CocoaPods 相依性。 | 從專案的根目錄執行下列命令,安裝所需的 Amplify 開放原始碼用戶端程式庫: npm install aws-amplify aws-amplify-react-native \
amazon-cognito-identity-js @react-native-community/netinfo \
@react-native-async-storage/async-storage
執行下列命令,安裝 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)。 | 注意: 只使用幾行程式碼,即可在應用程式中withAuthenticator HOC提供登入、註冊和忘記密碼工作流程。如需詳細資訊,請參閱 Amplify Dev Center 中的選項 1:使用預先建置的 UI 元件。此外,React 文件中的高階元件。 在應用程式的進入點檔案中 (例如 App.js ),輸入下列幾行程式碼withAuthenticator HOC來匯入 : import { withAuthenticator } from 'aws-amplify-react-native'
輸入下列程式碼以匯出 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 中,執行下列動作: 使用真正的電子郵件地址在應用程式中建立新帳戶。然後,驗證碼會傳送至已註冊的電子郵件。 使用您在驗證電子郵件中收到的程式碼來驗證帳戶設定。 輸入您建立的使用者名稱和密碼。然後,選擇登入 。會顯示歡迎畫面。
注意:您也可以開啟 Amazon Cognito 主控台,並檢查是否已在 Identity Pool 中建立新的使用者。 | 應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|
建立 AWS AppSync API和 DynamoDB 資料庫。 | 將 AWS AppSync API新增至您的應用程式,並從專案的根目錄執行下列 Amplify CLI命令,以自動佈建 DynamoDB 資料庫: amplify add api
出現提示,要求您提供有關 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。 | 在專案的根目錄中,執行下列 Amplify CLI命令: amplify push
出現提示,要求您提供有關 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 方法發佈和擷取資料
| 應用程式開發人員 |
相關資源