使用 S3 作为静态网页和 EC2 作为 REST API 一起使用吗? (AWS)

2024-03-13

我发现这个链接讨论了将静态数据和 Web api 分离到静态 s3 Web 服务器以及用于 api 和 ec2 Web 服务器的 bean stalk 应用程序来创建网站。 Charles 的回答是准确的,CORS 是解决两个域之间移动问题的方法。

如何同时使用S3作为静态网页和EC2作为REST API? (AWS) https://stackoverflow.com/questions/17296940/how-to-use-s3-as-static-web-page-and-ec2-as-rest-api-for-it-together-aws

我的问题是你为什么要这样做?

我的一些想法是:

优点 - 我们使用 Node 作为 api 的 Web 服务器,这会减轻 Node 进程的负担。

就是这样。

不简单地使用 Bean Stalk 来完成这一切的缺点

CORS 增加了复杂性 更新软件比较复杂 看起来有点矫枉过正,除非你有大量我没有的静态数据

我是否还缺少另一个优势


将前端逻辑与后端逻辑分离并单独部署它们有很多优点。

代码分离

第一个重要原因是,以这种方式做事可以让您将业务逻辑(您的 API)与您的设计(您的前端)分开。

您可以将这两个项目保存在单独的 Git 存储库中。您可以让您的设计师根据需要向前端项目发送任意数量的更新,而无需打扰工程师。

在单个整体项目(例如,在 Elastic Beanstalk 上)中执行此操作几乎是不可能的,因为设计人员需要通过工程团队迭代他们的代码。

部署分离

网络服务器速度很慢。文件服务器(如 S3)速度很快。它们速度快的原因是没有运行任何“代码”来访问文件服务器上的文件——只是下载一个文件。

例如,如果您有一个由 EC2 实例提供服务的单一整体 Web 应用程序,这意味着要查看页面,您需要运行一些代码来生成该 HTML。

但是,如果您将前端代码部署到 S3,则 Web 浏览器可以直接下载该文件,速度要快得多。

PROTIP:您还可以将您的 S3 网站放在 CloudFront(CDN)后面,通过在世界各地的多个数据中心保留缓存副本来进一步加快您的网站速度。

更快的迭代

当您将项目分开并单独部署时,您可以更快地进行迭代。

假设您的前端团队在网站中发现了一个错误。他们可以轻松地修补/发布修复程序,而无需进行工程设计。

您的工程师也是如此 - 他们现在有更多时间专注于构建核心应用程序逻辑,并且可以部署修复程序而无需担心 UI 更改等。

更简单的产品逻辑

当您按照所描述的方式单独部署事物时,您还可以获得简化后端逻辑的好处。

通过让您的核心工程师只构建 API,而不用担心前端问题,您可以比其他方式更快地发布更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 S3 作为静态网页和 EC2 作为 REST API 一起使用吗? (AWS) 的相关文章

随机推荐

  • 如何在 recyclerview 上设置 OnClickListener 而不取决于位置

    我希望 onclicklistener 方法打开与对象相关的活动 entidad1 entidad2 或 entidad3 MainActivity java 上的 OnRecipe 方法 我希望它能够实现 如果 entidad1 出现 它
  • 根据插入时间从 std::map 中删除元素

    我需要根据插入时间 或其他比这更有效的方法 从 std map 中删除元素 该地图可能会包含数千个元素 如果我存储时间并迭代地图以检查每个元素的时间 那么最终可能会非常耗时 有谁知道如何在 std map 变老时删除它们 The std m
  • double 是否会使方程中的每个 int 都加倍?

    是否存在一种浮点数据类型 例如double 确保所有 等数学运算都假定双操作数 如果故事比这更复杂 是否有描述这些规则的资源 我是否应该不问这样的问题并始终明确地投射int to double当方程的结果是double 这是我正在考虑的一些
  • 首次加载时仅加载一次广告 (div)

    我想知道如何才能让一个 div 具有要加载的广告或仅在第一次加载页面时可见 但每次刷新页面时隐藏它 我只有用 Jquery 加载 div 的代码 但不知道刷新页面后如何隐藏它 document ready function referral
  • UINavigationBar自定义过渡动画

    我使用以下协议在视图控制器之间创建了自定义转换 UIViewControllerAnimatedTransitioning and UIViewControllerTransitioningDelegate 是否可以使用默认的UINavig
  • 是什么让这两个数组相加不同?

    我用它来获取用户输入并清理代码 我试图解决这个问题 然后代码停止工作 这有效 BindVar array BindVar Email BindVar pass 然而 这并没有 BindVar array Email pass 这是当我更改该
  • Flask-SQLAlchemy 小写索引 - 跳过功能,SQLAlchemy 反射不支持

    首先 如果这个问题已经得到解答 我深表歉意 但我在任何地方都找不到答案 我需要在 Flask SQLAlchemy 对象上定义一个小写索引 我遇到的问题是我需要将模型用户名和电子邮件字段存储为小写 以便我可以检查它们User query f
  • DI Singleton 实例与 Transient 实例

    几年前 IoC 性能指南指出 IoC 容器应仅用于解析长期实例 基本上是单例 而应使用单例工厂 由容器保存 创建瞬态类型对象 我现在正在阅读有关 ASP NET Core 的内容 我看到的几个示例对其注入的对象使用瞬态生命周期 现在瞬态是提
  • 如何在 Meteor 提供的服务器中设置环境变量?

    我想在远程服务器上测试流星谷歌分析包 设置 json public ga account UA dfgddhdh 5 在本地服务器中 我只是传入 settings选项 我在看http meteorpedia com read Environ
  • 如何在各种单独的文件中分离与特定模式匹配的文件名和内容

    我试图将与特定模式匹配的文件名分离到一个单独的文件中 并将其内容分离到与特定模式匹配的不同文件中 我的文件名包含特殊字符 如 我尝试使用 grep 命令 Grep Ril 和 Grep H 打印文件名 但它不起作用 bin bash cd
  • Flutter,后台获取包不工作,androidx 不兼容

    我想在应用程序未运行时进行一些操作 所以我决定使用后台提取包 我一步步按照android设置 这是我的 pubspec yaml 的一部分 version 1 0 0 1 environment sdk gt 2 1 0 lt 3 0 0
  • 在 C++ 中编写可移植动态可加载库的最简单方法是什么?

    我正在开发一个具有多个相似代码路径的项目 我想将其从主项目中分离到插件中 该项目必须保持跨平台兼容 并且我研究过的所有动态库加载 API 都是特定于平台的 创建一个无需额外修改代码即可在多个操作系统上编译和运行的动态库加载系统的最简单方法是
  • 如何使用卡图生成概述国家的世界地图

    我最近一直在看卡图仪 据我所知 我们使用 kartograph py 生成 svg 然后使用 kartograph js 中的 svg 在 Web 界面中渲染地图 我想生成这样的东西http kartograph org showcase
  • 自动加载类的父类是否调用 __autoload() ?

    In main php 添加自动加载并创建一个新对象 function autoload class require once class php t new Triangle side1 side2 side3 In Triangle p
  • python:改变“全局变量”以动态地将事物放入范围内

    这是多么可怕的想法 班级monad实施with将事物放入和超出范围的接口 因此我可以编写一个通用函数库 例如 m chain 引用函数unit and bind谁可以在运行时放入实现 所有这些代码的作用或它是否是一个好主意并不重要 我尝试过
  • 如何从应用程序(布局)XML 变量中获取清单版本号?

    我希望有一种方法可以在代码的主要部分引用项目的清单版本号 到目前为止 我一直在做的是将字符串 XML 文件中的版本号链接到清单 string Version 我想要做的是反过来 将字符串 XML 变量链接到清单中的版本 原因 我只想更改一个
  • iOS Webrtc - 捕获本地视频流时崩溃

    我正在尝试使用 Google 存储库中的 webrtc 库 我按照这些步骤创建了一个单独的项目 其中包含类似于 APPRTC 的说明和代码 并且我能够让它工作 我能够在两台设备之间进行会议 但是当我尝试与旧项目集成时 Webrtc 崩溃了
  • Android 中的 SYSCALL_INLINE

    我需要在 Android NDK 内部使用系统调用来防止包装函数的挂钩 在 Linux 中 有像 SYSCALL INLINE 这样的宏 它允许在没有包装函数的情况下使用系统调用 因此 宏将系统调用汇编代码直接嵌入到项目中 我在 Andro
  • 如何在CodeIgniter中实现Redis?

    我得到的教程是 http yaminnoor com redis codeigniter http yaminnoor com redis codeigniter https codeigniter com user guide libra
  • 使用 S3 作为静态网页和 EC2 作为 REST API 一起使用吗? (AWS)

    我发现这个链接讨论了将静态数据和 Web api 分离到静态 s3 Web 服务器以及用于 api 和 ec2 Web 服务器的 bean stalk 应用程序来创建网站 Charles 的回答是准确的 CORS 是解决两个域之间移动问题的