在哪里存储 public 数据以及如何从 GitHub 部署数据

Where to store public data and how to deploy it from GitHub

我正在处理放置在 AWS EC2 实例上的项目。我使用 CodeDeploy 将应用程序从 GitHub 部署到 EC2。但我想将 public 数据作为样式表、JS、图像等存储在 S3 上。甚至可以一步将应用程序部署到 EC2 和 S3 上?或者我应该只将所有文件放在 EC2 实例中吗?

这两天我一直在学习有关 Elastic Beanstal、CodeDeploy、CodePipeline、Ops Works 等的 AWS 文档,但我一头雾水。

听起来您希望在部署中有两个步骤。一个更新 S3 中的静态资产,另一个更新 EC2 实例上的服务器和动态内容。

这里有一些选项:

  1. 由于它们是静态的,只需让每个 EC2 主机将 S3 资产作为 BeforeInstall 脚本上传到您的存储桶。您需要将静态内容作为与 CodeDeploy 一起使用的捆绑包的一部分。
  2. 使用领导者选举算法从单个主机执行 (1)。您可以将 Zookeeper 之类的东西部署为 CodeDeploy 部署的一部分。
  3. 将您的静态资产作为与您的 CodeDeploy 部署分开的文件上传。您可能希望将 CodePipeline 视为更复杂的多阶段部署的解决方案(可以使用 CodeDeploy 进行服务器部署)。

在任何一种情况下,您都需要确保您不只是覆盖静态资产,否则您最终会遇到旧服务器代码尝试使用新静态资产的情况。在部署过程中,您应该始终小心 运行 您的代码的两个版本并排。

我不会让它复杂化。我将通过 CodeDeploy 从 GitHub 将所有文件包括 CSS 和 JS 放入 EC2,因为对此没有简单和理想的解决方案。