CloudFront是亚马逊AWS提供的一种公共网络服务。
CloudFront是一种提供给最终用户的能够加快静态、动态网络内容(例如:html、css、php、图片等文件)的分发的Web服务。CloudFront通过Edge Locations的互联网分发Web内容。
当最终用户通过CloudFront请求Web内容的时候,用户的请求将会路由到距用户最近的Edge Location,这样就提供的最低的延时、最好的性能,提高了用户体验。如果被用户请求的内容正好是在该Edge Location的话,那么CloudFront会马上返回这些内容。如果不在该Edge Location的话,那么CloudFront就会从亚马逊S3的bucket中或者一个HTTP服务器里面去获取这些数据,然后传输给用户,并且会将这些数据在该Edge Location中缓存起来(默认缓存24小时),以供下次请求时使用。
Objects就是需要CloudFront分发的文件。一般包括:网页、图片、媒体文件,也可以是可以被HTTP协议和Adobe RTMP协议提供的任意实体。
存放原始的、最终版本的Objects的地方。通常有两种:亚马逊S3的bucket和HTTP服务器。但是需要注意的是,如果使用RTMP协议提供媒体文件的话,就只能使用亚马逊S3了。
在Origin Server上存储了对象之后,就可以创建一个distribution了,它主要是告诉CloudFront对象存在哪里。创建成功之后,CloudFront会返回一个唯一的域名,用来引用存储在Origin Server上的对象。例如:dfk0239dhj2gh2.cloudfront.net。
假如之前你存储在亚马逊S3上的一个对象URL为:http://mybucket.s3.amazonaws.com/images/logo.jpg,在使用了CloudFront之后,URL就会变为:http:// dfk0239dhj2gh2.cloudfront.net/images/logo.jpg。
目前,CloudFront提供了2种distribution:
1.DownloadDistribution:可以采用HTTP和HTTPS协议进行传输;最多10个origin servers(S3的buckets或者自定义的server);
2.StreamingDistribution:采用Adobe Flash MediaServer和RTMP协议;只能使用S3作为origin server。
是指CloudFront提供的地理位置上不同的保存对象的缓存副本的地点。
AWS提供的Edge Locations名录请见附录一。
默认情况下,在Edge Location上面保存的缓存副本将会在24小时之后过期。当对象过期之后,如果CloudFront接收到该对象的请求时,会去Origin检查该对象是否被更新过。如果更新过的话,origin会返回最新版本的对象。CloudFront会将这些对象返回给最终用户,并且保存最新版本的对象。
过期时间是可以设置的,最小过期时间为0秒,无最大过期时间限制。
当初建、修改、删除一个Distribution的时候,需要花费一点时间(15分钟以内)才会使改变生效的。Distribution的信息是最终一致的,但是distribution的信息的改变不会马上被呈现出来,这需要几分钟时间。一致性一般会在几分钟之内就会达到,但是在高负载的系统或者网络分区中可能需要的时间会长一些。
步骤如下:
1.配置origin服务器,包括:亚马逊S3的bucket和HTTP服务器;
2.上传文件到origin服务器中;
3.创建一个CloudFrontdistribution,当最终用户请求数据的时候,distribution将会通知CloudFront去哪个origin服务器上去获取数据并返回给用户;
4.CloudFront返回一个唯一的域名,可以用来部署网站或者应用程序;
5.CloudFront将distribution的信息同步到所有的Edge Locations中去;
6.使用步骤4中返回的域名部署网站或者应用程序,也可以使用自己的域名部署,这取决于怎么配置的distribution;
还可以配置对象缓存在Edge Location中保存的时间,默认是24小时。
7.一个最终用户通过部署的网站或者应用程序请求一个图片和一个html文件;
8.CloudFront决定采用哪一个Edge Location去响应用户的请求,一般会采用离用户最近的那个,以提高访问速度。这里假如选择了新加坡Edge Location;
9.在新加坡Edge Location,CloudFront检查请求文件的缓存。如果存在的话,就直接返回给用户。如果不存在的话,CloudFront将会做如下操作:
a)CloudFront比较请求和distribution中定义的规格,并发送请求到配置origin server中请求数据;
b)Originserver将数据发送到在新加坡Edge Location;
c)一旦数据开始从origin server传输过来,CloudFront就开始给用户返回数据。同时,CloudFront会将数据添加到新加坡Edge Location的缓存中。
10.对象在Edge Location中的缓存过期之后,如果CloudFront接收到该对象的请求时,会去Origin检查该对象是否被更新过。如果更新过的话,origin会返回最新版本的对象。CloudFront会将这些对象返回给最终用户,并且保存最新版本的对象。
在http://aws.amazon.com/上面注册一个亚马逊AWS的账号,如果已有账号,直接登录即可。
在亚马逊S3中,bucket(桶)是一个存储文件和文件夹的容器。CloudFront基本上可以分发所有存储在S3中的数据,包括:文本文件、图片、视频等等。也可以创建多个bucket,并且在S3中数据的数量是不限制的。
默认情况下,S3中的数据都是私有的,如果想要任何人都可以读取摸一个对象,则需要为其加上Public_Read的权限。
文件上传到S3之后,URL将会是如下的样例:http://s3.amazonaws.com/mybucket001/filename。其中mybucket001是bucket名字,filename是上传的文件名。
访问https://console.aws.amazon.com/cloudfront/,点击“Create Distribution”,选择“Download”类型的分发方法,然后就可以按照操作提示进行操作了,具体操作步骤可以参考CloudFront开发者指南。
需要注意的是,只有当distribution的状态变为“Deployed”的时候才可以开始测试。
将下面的内容拷贝到一个文件中,后缀名为.html:
<html> <head>My CloudFront Test</head> <body> <p>My test content goes here.</p> <p><img src=\'#\'" href="http://%3cdomain%20name%3e/%3cobject%20name%3e">http://<domain name>/<object name>" alt="my test image" /> </body> </html> |
将其中的<domain name>和<object name>换成实际的域名和文件名即可。
在浏览器里面打开这个html文件,查看内容是否显示出来,如果正常显示则可以说明已经部署OK了。如果未显示出来,则需要检查之前的步骤是否操作正确,或者可以调试一番,具体请参考CloudFront开发者指南。
To deliver content toend users with lower latency, Amazon CloudFront uses a global network of edgelocations. Amazon CloudFront edge locations are located in:
United States |
Europe |
Asia |
South America |
Ashburn, VA (2) Dallas/Fort Worth, TX (2) Hayward, CA Jacksonville, FL Los Angeles, CA (2) Miami, FL New York, NY (3) Newark, NJ Palo Alto, CA San Jose, CA Seattle, WA South Bend, IN St. Louis, MO |
Amsterdam, The Netherlands (2) Dublin, Ireland Frankfurt, Germany (2) London, England (2) Madrid, Spain Milan, Italy Paris, France (2) Stockholm, Sweden |
Hong Kong, China (2) Osaka, Japan Seoul, Korea Singapore (2) Sydney, Australia Tokyo, Japan (2) |
São Paulo, Brazil |
本文出自 “烟花易冷” 博客,转载请与作者联系!