9

目前,我有一个网站,它从 Apache 服务器提供动态(PHP-MySQL)内容,并从单独的 Lighthttpd 服务器提供静态内容(JavaScript、图像)。

出于规模的原因,我想使用 Amazon Cloudfront 和可能的 S3。老实说,我并不完全确定 S3 或 CloudFront 是如何工作的。我习惯了“上传文件......它变得可用”的正常服务器行为,而 S3“存储桶”和 CloudFront 边缘镜像令人生畏。

我需要更好地了解它是如何工作的并且有一些问题:

1)我不想在我自己的服务器上存储任何图像。我希望他们完全在云端。我是否正确,这意味着我需要使用 S3 作为“源服务器”进行存储?CloudFront 本身还不够吗?CloudFront 只是边缘 CDN 服务吗?

2) 我们目前通过 PHP 脚本将图像上传到我们的图像服务器,或通过手动 FTP 上传。如果我使用 S3,这将如何改变?听说不能FTP?:(

3)如果使用 S3,我还可以创建分层目录并在其中存储图像吗?图像存储在各种文件夹深处,我无法更改代码,但我听说 S3 是一个扁平的“桶”?

4)最后,听说用CloudFront,如果文件发生变化,你必须发出失效请求,这需要花钱。这是因为 CloudFront 正在缓存来自源的图像吗?我不习惯这一点,因为在我当前的设置中,我只是通过 FTP 替换图像并更新!有没有办法模仿这种经典的行为?

衷心感谢您的帮助。

4

2 回答 2

19

1)我不想在我自己的服务器上存储任何图像。我希望他们完全在云端。我是否正确,这意味着我需要使用 S3 作为“源服务器”进行存储?CloudFront 本身还不够吗?CloudFront 只是边缘 CDN 服务吗?

S3 专为长期、可靠的数据存储而设计,具有11 个 9的持久性。存储桶(它们被称为)是特定于区域的,并且位于亚马逊的区域数据中心之一

相反,CloudFront 被设计为一系列边缘服务器。默认情况下,当您从 CloudFront 主机名请求对象(即文件)时,该对象将从原始位置拉出并在最近的 CloudFront 边缘位置缓存 24 小时(这可以通过编程方式进行调整)。在 24 小时结束时,缓存过期,CloudFront 将在下次请求该对象时提取一个新副本。

一个常见的设置是将 CloudFront 配置为使用 S3 作为其原始位置。CloudFront 还可以使用任何服务器,如果您喜欢的话(听起来您不喜欢)。

2) 我们目前通过 PHP 脚本将图像上传到我们的图像服务器,或通过手动 FTP 上传。如果我使用 S3,这将如何改变?听说不能FTP?:(

S3 不是 FTP 服务器,因此它不使用 (S)FTP 协议。但是,几乎所有 Mac OS X 的 FTP 客户端都支持 Amazon S3。Amazon S3 有一个 Web 服务 API,因此您可以根据需要使用 AWS 开发工具包之一自动执行推送。

Cyber​​duck是一个工具,它可以执行 SSH、SFTP、FTP、Amazon S3 和其他一些事情。它适用于 Mac 和 Windows。还有其他工具可以提供用于上传到 S3 的 GUI,就像您通过 FTP 上传一样简单。

3)如果使用 S3,我还可以创建分层目录并在其中存储图像吗?图像存储在各种文件夹深处,我无法更改代码,但我听说 S3 是一个扁平的“桶”?

是和不是。

是的,S3 是一个平面文件系统,但文件的名称中可以有斜杠。例如,“abc/def/ghi/jkl.txt”实际上不是三个文件夹和一个文件,而是一个文件名中带有斜线的文件。大多数 GUI 工具选择将其可视化为文件夹和子目录,并且 S3 URL 看起来就像任何其他 URL。就我个人而言,我从来不需要为 S3 做任何不同于我过去为 SFTP 做的事情。

4)最后,听说用CloudFront,如果文件发生变化,你必须发出失效请求,这需要花钱。这是因为 CloudFront 正在缓存来自源的图像吗?我不习惯这一点,因为在我当前的设置中,我只是通过 FTP 替换图像并更新!有没有办法模仿这种经典的行为?

对。因为 CloudFront将源文件缓存到最近的边缘服务器。默认情况下,到期时间为 24 小时,但您可以将其设置为低至 1 小时,甚至可以通过“失效请求”提前到期。我发现这需要 3 到 15 分钟才能完成,因为 CloudFront 必须检查所有边缘服务器以确保它们都被清除。

如果您不想要缓存,则可以直接使用 S3。这与通过 FTP 替换图像最接近,但是您首先会失去使用 CDN 的所有好处。

根据Amazon CloudFront 定价页面

“您每月请求失效的前 1,000 个文件不收取额外费用。此后在您的失效请求中列出的每个文件 0.005 美元。”

对于您在一个月内使 1,000 多个文件无效的每个文件,这就是半分钱。我经常使用 CloudFront 并且从未超过这个限制,但如果您正在运行一个具有大量更改的大型站点,那么这当然是可能的。

我希望这有帮助!:)

于 2012-10-05T06:24:49.097 回答
0

我测试了一系列客户端应用程序,发现 Windows 的 CloudBerry S3 Explorer 和 Mac 的 CrossFTP 比 Cyber​​duck 更强大,但我经常使用私有流视频和音频,所以我的要求比在网站上显示图像要高一些。

但是要回答您的最后一个问题,您可以将带有子文件夹的文件夹拖到存储桶中,尊重层次结构。您可以使用存储桶中的文件夹,就像使用 FTP 一样。但是您必须确保将图像设置为公开,否则您的图像将不会显示。
标准,任何文件都作为私有文件上传,需要一个签名的 URL 才能访问它。但是使用客户端应用程序,您可以设置存储桶的继承,以便文件自动变为公开。你可以在这里找到很多关于这个的信息:http: //www.miracletutorials.com/category/s3-amazon-cloudfront/

干杯,鲁道夫+++

于 2012-10-06T11:28:36.867 回答