本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将基于 React 的单页应用程序部署到 Amazon S3 CloudFront
由 Jean-Baptiste Guillois 创作 (AWS
摘要
单页应用程序 (SPA) 是使用 JavaScript APIs动态更新所显示网页内容的网站或 Web 应用程序。这种方法增强了网站的用户体验和性能,因为它仅更新新数据,而不是从服务器重新加载整个网页。
这种模式提供了 step-by-step一种在亚马逊简单存储服务 (Amazon S3) Simple Service 和亚马逊上用 React 编写的编码和托管的方法。SPA CloudFront此模式SPA中的使用在 Amazon Gate API way 中配置并通过亚马逊 CloudFront 分配公开的,以简化跨源资源共享 (CORS) 管理。REST API
先决条件和限制
先决条件
架构
此架构是使用 AWS CloudFormation (基础架构即代码)自动部署的。它使用诸如 Amazon S3 之类的区域服务来存储静态资产,使用 Amazon with Ama CloudFront zon API Gateway 来公开区域 API (REST) 终端节点。应用程序日志是使用 Amazon 收集的 CloudWatch。所有 AWS API呼叫都经过审计 AWS CloudTrail。所有安全配置(例如身份和权限)均在 AWS Identity and Access Management (IAM) 中管理。静态内容通过亚马逊 CloudFront 内容分发网络 (CDN) 传送,DNS查询由亚马逊 Route 53 处理。
工具
AWS 服务
Amazon API Gateway 可帮助您以任何规模创建、发布RESTHTTP、维护、监控和 WebSocket APIs保护。
AWS CloudFormation帮助您设置 AWS 资源,快速一致地配置资源,并在资源的整个生命周期中跨地区对其 AWS 账户 进行管理。
Amazon 通过全球数据中心网络交付您的网页内容,从而降低延迟并提高性能,从而 CloudFront加快网络内容的分发。
AWS CloudTrail帮助您审计您的治理、合规和运营风险 AWS 账户。
Amazon CloudWatch 可帮助您实时监控您的 AWS 资源和运行的应用程序 AWS 的指标。
AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。
Amazon Route 53 是一项高度可用且可扩展的DNS网络服务。
Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
代码
此模式的示例应用程序代码可在 GitHub 基于 React 的CORS单页
最佳实践
通过使用 Amazon S3 对象存储,您可以以安全、高弹性、高性能且经济实惠的方式存储应用程序的静态资产。此任务无需使用专用容器或亚马逊弹性计算云 (AmazonEC2) 实例。
通过使用 Amazon CloudFront 内容分发网络,您可以减少用户在访问您的应用程序时可能遇到的延迟。您还可以连接 Web 应用程序防火墙 (AWS WAF),以保护您的资产免受恶意攻击。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
克隆存储库。 | 运行以下命令以克隆示例应用程序的存储库:
| 应用程序开发者,AWS DevOps |
本地部署应用程序。 |
| 应用程序开发者,AWS DevOps |
在本地访问应用程序。 | 打开浏览器窗口并输入, | 应用程序开发者,AWS DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
部署 AWS CloudFormation 模板。 |
| 应用程序开发者,AWS DevOps |
自定义应用程序源文件。 |
| 应用程序开发人员 |
构建应用程序包。 | 在项目目录中,运行 | 应用程序开发人员 |
部署应用程序包。 |
| 应用程序开发者,AWS DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
访问和测试应用程序。 | 打开浏览器窗口,然后粘贴 CloudFront 分发域(您之前部署的 CloudFormation 堆栈的 | 应用程序开发者,AWS DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
删除 S3 存储桶内容。 |
| AWS DevOps,应用程序开发者 |
删除 AWS CloudFormation 堆栈。 |
| AWS DevOps,应用程序开发者 |
相关资源
要部署和托管您的 Web 应用程序,您还可以使用 H AWS Amplify osting,它提供了基于 Git 的工作流程,用于托管持续部署的全栈无服务器 Web 应用程序。Amplify Hosting是其中的一员 AWS Amplify,它提供了一组专门构建的工具和功能,使前端网络和移动开发人员能够快速轻松地在其上构建全栈应用程序。 AWS
其他信息
为了处理用户提出的可能生成 403 错误的无效URLs请求,在 CloudFront 发行版中配置的自定义错误页面会捕获 403 错误并将其重定向到应用程序入口点 ()。index.html
为了简化对的管理 CORS RESTAPI,通过 CloudFront 发行版公开。