使用 AWS Amplify 构建全栈 React 应用
学习如何使用 AWS Amplify 构建全栈 React 应用程序,并充分利用云技术。.

使用 AWS Amplify 构建全栈 React 应用

本文将介绍如何使用 AWS Amplify 轻松构建全栈 React 应用程序,从初始设置到部署和优化。.
0 股票
0
0
0
0

 

路线概要

本指南将一步一步地引导您完成应用程序的构建过程。 全栈 基于 React 的使用 AWS Amplify 整个流程包括准备开发环境、创建前端、使用 Amplify 添加后端、将前端连接到服务、部署、连接域和 CDN,以及配置安全和监控。.

 

工具的前提条件和安装(本地)

开发机上必备物品:

  • Node.js (>=14) 和 npm 或 yarn
  • Git
  • Amplify CLI

安装 Amplify CLI 的示例命令:

npm install -g @aws-amplify/cli
# or
yarn global add @aws-amplify/cli

初始配置:

amplify configure

 

创建一个 React 应用程序

要启动一个 React 项目,您可以使用 Create React App 或 Vite。以下是使用 Create React App 的示例:

npx create-react-app my-amplify-app
cd my-amplify-app
git init
git add .
git commit -m "initial commit"

在项目中安装 Amplify 库:

npm install aws-amplify @aws-amplify/ui-react

 

使用 Amplify 添加后端

在项目文件夹中,首先初始化 Amplify:

amplify init

重要参数 放大初始化 包括环境名称(例如: 开发)、编辑器、框架(javascript、react)、src 和构建路径以及构建/启动命令。.

1)身份验证(Auth)

添加身份验证:

amplify add auth

功能:默认配置(用户名)、为社交提供商(Google、Facebook)手动配置或与 Cognito 身份池联合。.

2) API(GraphQL 或 REST)

对于 GraphQL:

amplify add api

选择 GraphQL 和示例模式:

type Todo @model {
  id: ID!
  title: String!
  completed: Boolean!
}

对于 REST(API 网关 + Lambda):

amplify add api
# choose REST
# then add function for endpoint

3)Lambda 函数

对于繁重的处理任务或 Webhook:

amplify add function

语言:Node.js 或 Python。类型:Lambda 函数(CRUD,处理程序)。.

4) 文件存储(存储)

要将 S3 添加到文件上传:

amplify add storage

类型:内容(图像、文件)。.

添加所需服务后,应用更改:

amplify push

此命令会创建 Cognito、AppSync、Lambda、S3 等云资源,并将配置文件保存到指定位置。 src/aws-exports.js 它放置。.

 

连接前端和后端

在文件中 src/index.js 或者 App.js 添加 Amplify 配置:

import Amplify from "aws-amplify";
import awsExports from "./aws-exports";
Amplify.configure(awsExports);

Auth 使用示例:

import { Auth } from "aws-amplify";
// Sign up
await Auth.signUp({ username, password, attributes: { email } });
// Sign in
await Auth.signIn(username, password);

GraphQL 使用示例:

import { API, graphqlOperation } from "aws-amplify";
import { listTodos } from "./graphql/queries";
const result = await API.graphql(graphqlOperation(listTodos));

 

安全提示和最佳实践

重要安全提示:

  • 原则 最小特权 注意:仅授予 IAM 角色必要的权限。.
  • 使用 AWS Secrets Manager 或者 系统管理器参数存储 保守秘密。.
  • 对拥有敏感访问权限的身份和访问管理 (IAM) 用户启用多因素身份验证 (MFA)。.
  • 启用 HTTPS 和 HSTS,并使用 WAF 和速率限制来防御第 7 层攻击。.
  • 对服务的静态数据和传输数据进行加密。.
  • React 应用中的 CORS 限制和内容安全策略实施。.

 

部署和 CI/CD

两种主要的部署方法:

方法一:Amplify 控制台

最简单的方法:在 Amplify 控制台中创建一个新应用,并连接您的 GitHub/GitLab/Bitbucket 代码仓库。Amplify 将自动创建一个构建 -> 测试 -> 部署的流水线。.

示例文件 放大.yml 对于 CRA 项目:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: build
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

在构建设置部分设置环境变量和密钥。.

方法二:外部 CI/CD + Amplify Hosting API

您可以使用 GitLab CI/CD 或 GitHub Actions 进行构建,并将构建文件推送到 S3 + CloudFront,或者使用 Amplify Hosting API。.

 

域名和CDN连接

Amplify Console 允许通过域连接和自动 SSL 配置。 AWS Certificate Manager 确实如此。.

对于 DNS,您可以使用 53号公路 或者使用带有 Anycast CDN 和多个边缘节点的外部服务。使用 CDN(CloudFront 或外部 CDN)对于降低延迟和提高加载速度至关重要。.

 

稳定性、延迟和位置选择

为了降低 API 延迟,如果需要大量处理,请选择合适的区域并使用具有连接性的 GPU 服务器或专用服务器作为非无服务器后端。.

对于交易员或游戏玩家来说,伦敦、法兰克福和纽约等城市通常是降低延迟的理想选择。此外,在敏感情况下,建议使用防DDoS服务器。.

 

示例:使用 GPU 云进行服务器端处理

如果您的应用需要推理机器学习模型:

  • 对于轻量级模型,请使用 Lambda;对于大型模型,请使用 GPU 服务器上的服务。.
  • 创建一个安全端点(HTTPS),并使用 fetch 或 axios 从 React 调用它。.
  • 如果需要实时连接,请使用 WebSocket。.

 

监控、日志记录和故障排除

推荐工具:

  • CloudWatch Lambda、API Gateway 和 AppSync 的指标和警报。.
  • 启用 AWS X-Ray 进行请求跟踪。.
  • 查看S3日志和CloudFront日志。.
  • 集成 Sentry 等第三方服务,用于前端调试。.

 

成本优化

降低成本的建议:

  • 使用无服务器资源(Lambda、AppSync)来降低闲置成本。.
  • 对于持续负载,请使用配置合适的云服务器或VPS。.
  • 启用自动扩展,并使用预留实例或节省计划来降低长期成本。.
  • 使用 CDN 和缓存来减少对后端的请求。.

 

面向DevOps团队和网络管理员的实用技巧

策略:

  • 基础设施即代码:使用 CloudFormation、Terraform 或 Amplify 的后端配置进行基础设施版本控制。.
  • 如果需要私有连接,请使用 VPC 设置 Lambda 函数,并使用 Transit Gateway 或 VPN。.
  • 微调 ACL 和安全组配置。.
  • 如果您需要 GitLab 托管或对 Runner 的完全控制权,则可以将 GitLab 托管在专用服务器上。.

 

生产前检查清单

  • 已测试身份验证和授权(Cognito、IAM 策略)
  • 已启用 HTTPS 和 SSL 证书
  • 主动日志记录和监控
  • 配置速率限制和WAF
  • 前端配置了 CORS 和 CSP
  • 备份和恢复策略(S3 版本控制、快照)
  • 负载测试和性能优化

 

结论与总结

使用 AWS Amplify 使现代应用程序的开发和部署更加快速且可重复。对于生产环境,请特别关注安全性、监控、位置选择和成本模式。.

对于需要大量处理或低延迟的项目,将 Amplify 与云服务器、GPU 云或专用 VPS 结合使用可能是一个最佳解决方案。.

 

常见问题解答

您可能也喜欢