关于将Amazon CloudFront和/或S3用作映像服务器的问题(与标准Apache服务器相比)

Wac*_*Get 9 php apache amazon-s3 amazon-cloudfront

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

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

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

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

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

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

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

真诚的感谢您的帮助.

Rya*_*man 19

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

S3专为长期,可靠的数据存储而设计,具有11个9的耐用性.Buckets(因为它们被称为)是特定于区域的,并且位于亚马逊的一个区域数据中心.

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

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

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

S3不是FTP服务器,因此它不会说(S)FTP协议.但是,几乎所有适用于Mac OS X的FTP客户端都支持Amazon S3.Amazon S3具有Web服务API,因此如果您愿意,可以使用其中一个AWS SDK自动执行推送.

一个工具,Cyber​​duck,SSH,SFTP,FTP,Amazon S3和其他一些东西.它适用于Mac和Windows.还有其他工具可以提供用于上传到S3的GUI,就像您通过FTP上传一样.

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

是的,不是.

是的,S3是一个平面文件系统,但文件名称中可能有斜杠.例如,"abc/def/ghi/jkl.txt"实际上不是3个文件夹和文件,而是一个文件名中包含斜杠的文件.大多数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并且从未超过该限制,但如果您运行的是一个包含大量更改的大型网站,那么它肯定是可能的.

我希望这有帮助!:)