2009-07-06 325 views
14

有什么方法可以更新存储在Amazon CloudFront上的文件(亚马逊的CDN服务)? 似乎不会对我们所做的文件进行任何更新(例如删除文件并使用与以前相同的文件名来存储新文件)。 我是否必须显式触发更新过程以从边缘服务器中删除文件以获取新文件内容?如何更新亚马逊CDN(CloudFront)上的文件?

感谢您的帮助

+0

请试着问在http://serverfault.com/这个问题。 – 2009-07-06 09:48:47

回答

12

亚马逊加入失效特征。 This is API Reference。从API参考

样品请求:

POST /2010-08-01/distribution/[distribution ID]/invalidation HTTP/1.0 
Host: cloudfront.amazonaws.com 
Authorization: [AWS authentication string] 
Content-Type: text/xml 

<InvalidationBatch> 
    <Path>/image1.jpg</Path> 
    <Path>/image2.jpg</Path> 
    <Path>/videos/movie.flv</Path> 
    <CallerReference>my-batch</CallerReference> 
</InvalidationBatch> 
1

我似乎记得上serverfault看到这个了,但这里的答案:

通过“亚马逊CDN”我想你的意思是“CloudFront的”?

它被缓存,所以如果你现在需要更新它(相对于“新版本将在24小时内可见”),你将不得不选择一个新名称。而不是“logo.png”,使用“logo.png - 0”,然后使用“logo.png - 1”更新它,然后将您的html更改为指向那个。

没有办法“冲洗”亚马逊云阵。

编辑:这不可能,现在是。查看对此回复的评论。

+3

这不再准确。 – ceejayoz 2011-07-29 02:37:53

+0

见http://stackoverflow.com/questions/1268158/force-cloudfront-distribution-file-update – RSG 2011-09-30 00:01:24

+0

这是不正确的,你可以通过伤病退役缓存 – rsabir 2017-12-03 11:18:00

1

在Ruby中,使用雾宝石

AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY_ID'] 
AWS_SECRET_KEY = ENV['AWS_SECRET_ACCESS_KEY'] 
AWS_DISTRIBUTION_ID = ENV['AWS_DISTRIBUTION_ID'] 

conn = Fog::CDN.new(
    :provider => 'AWS', 
    :aws_access_key_id => AWS_ACCESS_KEY, 
    :aws_secret_access_key => AWS_SECRET_KEY 
) 

images = ['/path/to/image1.jpg', '/path/to/another/image2.jpg'] 

conn.post_invalidation AWS_DISTRIBUTION_ID, images 

甚至失效,它仍然需要5-10分钟的无效处理和刷新所有亚马逊边缘服务器

13

以下是我如何使用CloudFront控制面板进行操作。

  1. 从服务列表中选择CloudFront。
  2. 确保分布从左上角被选中。
  3. 接下来,从列表中单击关联分配的链接(在id下)。

enter image description here

  • 选择失效通知标签。
  • 点击创建失效按钮,并输入要失效(更新)的文件的位置。
  • 例如:

    enter image description here

  • 然后点击的Invalidate按钮,你现在应该看到INPROGRESS下状态。
  • enter image description here

    ,通常需要10至15分钟才能完成你的无效 的要求,根据您的请求的大小。

    一旦完成了说你是好去。

    提示: 一旦你,如果你回来,需要无效相同的文件使用选择框创建了一些废票和复制链接将变得可用使它更快。