为S3设计

时间:2011-07-03 23:57:52

标签: c# sql-server asp.net-mvc amazon-s3 appharbor

我应如何设计我的ASP.NET MVC应用程序和数据库以满足从亚马逊S3提供的静态内容?

目前,我在本地服务器上有一个Images表,用于上传图像。每个图像都有一个ID和一个本地路径来提供它,但我想将我的静态内容移动到云端。

  • 我需要存储什么?
  • 如何通过ASP.NET MVC 3提供S3内容?
  • 我是通过缓存的网络请求提供内容,还是直接通过S3提供内容?

我已经运行了很长时间的专用服务器,但我仍然在学习云上的最佳实践。

2 个答案:

答案 0 :(得分:3)

AM是对的。如果您的图片不需要是图片,您可以公开您的Bucket,并允许从您的应用程序直接访问S3上的URL。

但是,如果您要将S3上的文件保护到经过身份验证的用户,则可以使用URL签名和此处所述的时间戳http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html

所以你的网址就像

  photos/puppy.jpg?AWSAccessKeyId=0PN5J17HBGZHT7JJ3X82
    &Signature=rucSbH0yNEcP9oM2XNlouVI3BH4%3D
    &Expires=1175139620

答案 1 :(得分:1)

您可以将这些资源的URL存储在.net服务器中的S3上,并将请求重定向到这些URL。就像您当前存储Images表中图像的本地路径一样。

同样,在提供静态图像时,您只需使用S3网址而不是.net服务器中的网址。

您可能希望避免的是必须使用.net应用程序从S3加载文件并将其作为响应提供,除非您确实有理由这样做。