首页 > 编程语言 >在 AWS 上部署单页应用程序的简单自动化方式

在 AWS 上部署单页应用程序的简单自动化方式

时间:2022-09-29 21:55:34浏览次数:92  
标签:单击 单页 AWS 应用程序 S3 Amplify

在 AWS 上部署单页应用程序的简单自动化方式

我多次经历过使用 S3 和 Cloudfront 部署单页应用程序的繁琐过程,但是,有一种更简单的方法。另外,您将获得一个 CI/CD 管道。

仅将 S3 与 Cloudfront 一起使用的缺点

这是一个手动过程 使用常规 AWS 控制台。即使您知道如何编写 Cloudformation 模板,我推荐的解决方案也容易得多。此外,您需要了解很多配置知识才能开始使用,例如确保您的 S3 存储桶具有正确的权限。这是一次很棒的学习体验,但是如果您想在今天快速轻松地部署您的应用程序,请继续阅读。

您需要解决的一个常见问题是当用户直接转到根主页以外的路径时(example.com/about,而不是 example.com/)。 用户真正在做的是请求不在您的 S3 存储桶中的文件,您会收到 403 Forbidden / Access Denied 错误。

Common error if a route is requested other than the root.

由于它是一个单页应用程序,所有请求都需要重写为'/index.html'。 SPA 路由器从那里读取用户最初导航到的路径名并呈现适当的内容。我们通常使用 Nginx 之类的 Web 服务器重写或代理请求。由于我们没有使用 Web 服务器,因此可以通过多种方式将 S3 与 Cloudfront 结合使用,但使用 AWS Amplify,有一个更简单的单线解决方案。

还, 如果您想在不设置 AWS CodePipeline 的情况下更新应用程序,则必须手动将更新的文件上传到 S3 并创建 Cloudfront 失效以清除缓存。 这是手动的并且容易出错。

使用 AWS Amplify 托管进行部署

使用 Amplify,您将获得 CI/CD 管道、带有 CDN (S3 + Cloudfront) 的静态托管,以及将请求重写到根 index.html 文件的简单方法,因此 SPA 路由将按预期工作。

使用控制台转到 AWS Amplify,单击新建应用程序,然后从下拉列表中选择主机 Web 应用程序。

单击您的 Git 提供程序后,单击屏幕以允许 AWS Amplify 访问。

你现在可以 选择存储库和分支 .这将是 Amplify 将从中提取的分支。此外,当您将来向此分支提交或合并拉取请求时,Amplify 将部署更新。

接下来,由于 Amplify 将动态构建我们的项目,我们需要 配置构建设置 .它确实会尝试智能地自动填充设置,但是,请确保:

  • 构建命令是正确的
  • 工件 baseDirectory 是正确的(您的构建文件夹名称)

单击下一步,然后单击保存并部署。

等待 CI/CD 管道完成并在自动生成的 URL 上查看您的站点 .如果您需要使用 SSL 证书设置自定义域,请前往应用程序设置菜单中的域管理。

单击添加域,从那里开始非常简单直观。

现在,要确保所有 URL 路径都路由到 index.html, 导航到重写和重定向 在应用程序设置菜单中。

单击添加规则并输入以下内容
源地址:</[.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|woff2|ttf|map|json|webp)$)([^.]+$)/>
目标地址:/index.html
类型:200(重写)

点击保存 它应该看起来像这样。

全部完成!您部署的单页应用程序应该按预期工作。

要查看定价,请查看此页面: https://aws.amazon.com/amplify/pricing

结论

利用 AWS Amplify 托管是在 AWS 上部署单页应用程序的最快方式。当您将来对应用程序进行更新时,它还将为您节省大量手动工作。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39882/48202921

标签:单击,单页,AWS,应用程序,S3,Amplify
From: https://www.cnblogs.com/amboke/p/16743232.html

相关文章

  • 我学到了为 AWS 编写 Python TUI 控制台的五件事
    我学到了为AWS编写PythonTUI控制台的五件事AWSCloudExplorerrunningonLinux通常,我喜欢使用Terraform和Ansible使用声明性语言编写代码以部署基础设施。......
  • vue单页面实现全屏展示及取消全屏
    <divclass="header-user-con">    <!--全屏显示-->    <divclass="btn-fullscreen"@click="handleFullScreen">      <el-tooltipeffect="......
  • 为假人扩展后端应用程序
    为假人扩展后端应用程序Photoby西格蒙德/不飞溅也许您和每个开发人员一样,都面临过应用程序开始变慢并显示性能不佳的情况。我知道,这很令人失望,但它只是发生了。......
  • 快速提示:如何加速 Django 应用程序
    快速提示:如何加速Django应用程序提高Django应用程序性能的简短指南Photoby费萨尔on不飞溅避免使用Django模型序列化器Djangorest框架允许开发人员快速......
  • AWS API Gateway IP WhileList
    首先创建个API,然后进入API配置,点击左边的资源配置,加入以下配置:{"Version":"2012-10-17","Statement":[{"Effect":"Allow",......
  • C#应用程序多窗口消息传递
        在目前一些桌面端.net系统的应用中,需要多个子系统窗口进行信息交换,对于部署在同一台电脑上的各个子系统,可以通过集成windows系统的消息传递方式进行消息传递,但是......
  • D3D所用Windows应用程序流程
    概述本篇说讲的是window窗口程序——由主窗口、菜单、工具栏、滚动条、按钮等控件组成,而D3D游戏编程并不需要过于复杂的GUI(graphicsuserinterface),仅仅需要一个主窗口用......
  • MEAN Stack:流行的 Web 应用程序开发平台
    MEANStack:流行的Web应用程序开发平台介绍在当今的技术时代,企业选择配置为云就绪的Web应用程序。目前市场上有大量用于Web开发的框架。其中,MEAN堆栈被认为是一种......
  • Web 应用程序从右到左的样式
    Web应用程序从右到左的样式了解如何在HTML中处理从右到左的文本开发和创作从右到左(RTL)的网站是一项非常规的任务,即使对于经验丰富的前端开发人员也是如此。随着......
  • 免费综合网络研讨会:如何优化 JavaScript 应用程序的方法
    免费综合网络研讨会:如何优化JavaScript应用程序的方法您是否考虑过提高JavaScript应用程序的性能?加入DmytroMezhenskyi,开发专家解码前端,上2022年9月30......