使用S3将应用程序移至Amazon EC2

最近我创build了一个Web应用程序。 应用程序也有一些静态部分(库,类等)和dynamic部分(图像,caching,日志等)。 但是,应用程序的一些静态部分将需要很less的更改。 我们把它们称为部分静态的。 整体上有静态的部分静态的dynamic的部分。

所以我正在尝试使我的应用程序适应Amazon AWS(EC2和S3)。 我不认为把所有的应用程序文件放到一个EC2实例是一个好主意。 我正在考虑把静态和部分静态部分,以EC2和dynamic部分到S3。

  • 一旦我的应用程序稳定在EC2上,我将创build一个AMI并将其复制到新的实例。
  • 每当我需要在部分静态部分中进行更改时,我会终止除一个之外的所有EC2实例,并进行更改。 更改后,我会创build新的实例。
  • 上传的文件,图片等dynamic部分将被所有实例共享,不会导致任何同步问题。

这是使用EC2和S3的适当方式吗?

我正在考虑把静态和部分静态部分,以EC2和dynamic部分到S3。

我认为你使用静态dynamic的术语不同于我们大多数人的理解。 静态数据将是用户上传的图像。 dynamic数据将是由代码生成的东西。 我认为你关注的是数据可能发生变化的频率。 也许你的意思是,用户图像是静态的,一旦他们上传,他们永远不会改变,而不是一个静态的HTML文件,你可能偶尔会更新一次。 outlook未来,我将分别用自己的术语来指代静态和dynamic:作为的文件和作为生成数据的代码的文件。

静态文件应该放在S3上。 即使你最终可能改变它们或停止引用它们。 最好简单地使文件的每个版本具有唯一的名称。

dynamic数据应该托pipe在您的EC2实例上。 理想情况下,您将拥有一个无需终止实例即可更新数据的方法,这可能是共享文件系统的一种手段,它可以让所有节点保持同步服务。 或者,如果节点从不同的代码服务的时间有小的差距可能是可以接受的,你也可以使用脚本来推出文件。