2013-02-06 62 views
1

我正在为一些共同工作创建一个Web应用程序。我有资产的文本(其中大多数是印刷质量的图片,例如5MB,总共大约5GB /月)。Amazon Cloud,存储资产

我打算在亚马逊云上使用EC2实例为node.js服务器和带有附加块存储的mongodb进行托管。

资产对于一个对象来说是私有的,所以不是每个人都可以访问它。

我该如何处理资产?将它们保存为数据库中的二进制文件或将它们加载到S3? (或任何其他亚马逊服务)

有人有此经验吗?或者可能有一些有用的链接在此先感谢

+0

您可以在MongoDB中使用GridFS - 但我不确定给出您正在讨论的大量数据以及它会长期有效的增长模式。这可能会导致非常昂贵的托管。你看过托管费用等吗? – WiredPrairie

+0

我想在我的情况下(欧洲)更便宜的东西保存到S3或CloudFront(我不知道我是否可以限制访问云端文件,在我看来这是用于大型文件),因为块存储更广阔尤其是在S3存储容量增长的时候 – pfried

+0

Cloudfront相当昂贵,但S3减少冗余设置的价格相当便宜,大约是普通S3存储的一半,同样的速度在数据中心的冗余性稍差。 – Sammaye

回答

1

我可能会将资产存储在S3上,无需公共访问,那么您可以在需要时通过从Web服务器生成临时签名的URL来授权访问授权用户。 通过这种方式,您可以通过将存储脏污工作移交给S3来充分利用服务器的复杂性,并且您仍然可以让您的文件只能由访问者访问。

1

如果您需要进行访问控制,您可以做很多事情,但最明显的是通过您的Web服务器来服务断言,并让它实现所需的访问控制逻辑。您的应用程序可以通过S3或MongoDB GridFS中的源对象进行代理。如果您已经在使用MongoDB,那么在这种情况下,我会使用GridFS,除非您需要S3的一些节约成本功能,例如减少冗余存储。