我正在处理我的项目,该项目位于AWS EC2实例上。我使用CodeDeploy将应用从GitHub部署到EC2。但是我想将公共数据存储为S3上的样式表,JS,图像等。甚至可以在EC2和S3上一步部署应用程序?或者我应该将所有文件仅放在EC2实例中?
我已经学习了两天关于Elastic Beanstal, CodeDeploy, CodePipeline, Ops Works等的AWS文档,但是我还是搞混了。
听起来您希望在部署中有两个步骤。一个是更新S3中的静态资产,另一个是更新EC2实例上的服务器和动态内容。
以下是一些选项:
- 由于它们是静态的,只需让每个EC2主机将S3资产作为BeforeInstall脚本上传到bucket。您需要将静态内容包含在CodeDeploy使用的包中。
- 使用leader选举算法从单个主机执行(1)。你可以部署像Zookeeper这样的东西作为CodeDeploy部署的一部分。
- 将静态资产作为独立于CodeDeploy部署的文件上传。您可能希望将CodePipeline视为更复杂的多阶段部署的解决方案(可以在服务器部署中使用CodeDeploy)。
在任何一种情况下,您都需要确保您不只是覆盖您的静态资产,否则您将以旧服务器代码试图使用新的静态资产的情况告终。您应该始终注意,在部署期间可以同时运行两个版本的代码。
我就不把它复杂化了。我将把所有文件放入EC2,包括CSS和JS的CodeDeploy从GitHub,因为没有简单和理想的解决方案。