有没有办法更新存储在Amazon CloudFront(亚马逊的CDN服务)上的文件? 似乎它不会对我们制作的文件进行任何更新(例如,删除文件并使用与以前相同的文件名存储新文件)。 我是否必须明确触发更新过程以从边缘服务器中删除文件以获取新文件内容?
感谢您的帮助
答案 0 :(得分:17)
以下是使用CloudFront控制面板的方法。
例如:
通常需要10到15分钟才能完成失效 请求,具体取决于您的请求大小。
说完后你就可以了。
提示强> 如果您回来并且需要使相同文件无效,则使用选择框创建一些失效后,复制链接将变得可用,从而使其更快。
答案 1 :(得分: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>
答案 2 :(得分:2)
答案 3 :(得分:1)
我似乎记得已经在服务器故障上看过这个,但是答案就是这样:
通过“亚马逊CDN”,我认为你的意思是“CloudFront”?
它已缓存,因此如果您现在需要更新它(而不是“新版本将在24小时内显示”),您将不得不选择一个新名称。而不是“logo.png”,使用“logo.png - 0”,然后使用“logo.png - 1”更新它,并将您的html更改为指向该位置。
没有办法“冲洗”亚马逊云端。
修改:此 不可能,现在是。请参阅此回复的评论。
答案 4 :(得分:1)
下载Cloudberry Explorer免费软件版本以在单个文件上执行此操作: http://blog.cloudberrylab.com/2010/08/how-to-manage-cloudfront-object.html
答案 5 :(得分:1)
Cyberduck for Mac&amp; Windows为对象失效提供了用户界面。请参阅http://trac.cyberduck.ch/wiki/help/en/howto/cloudfront。
答案 6 :(得分:1)
CloudFront的用户界面在[i]按钮&gt;下提供此功能。 “分发设置”,“无效”标签:https://console.aws.amazon.com/cloudfront/home#distribution-settings
答案 7 :(得分:1)
在红宝石中,使用雾宝石
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分钟才能在所有亚马逊边缘服务器上处理和刷新失效
答案 8 :(得分:0)
WinF,Mac和Linux的CrossFTP为CloudFront失效提供了用户界面,请查看此内容以获取更多详细信息:http://crossftp.blogspot.com/2013/07/cloudfront-invalidation-with-crossftp.html
答案 9 :(得分:0)
我将总结可能的解决方案。
您可以按照 @CoalaWeb 的 answer 手动浏览控制台的 UI,并在 CloudFront 上启动“失效”,通常不到一分钟即可完成。只需单击一下。
此外,您可以在 UI 中手动更新它在 S3 中指向的路径。
您可以使用 AWS CLI 通过命令行简单地运行上述内容。
命令是:
aws cloudfront create-invalidation --distribution-id E1234567890 --paths "/*"
将 E1234567890
部分替换为您可以在控制台中看到的 DistributionId。您还可以将其限制为某些文件,而不是所有文件的 /*
。
可以在 this answer 中找到如何将其放入 package.json
以作为目标的 Node/JavaScript 项目的示例。 (不同的问题)
注意事项:
CreateInvalidation
访问权限。 (以下案例中的示例。)如果您在 S3 中存储不同版本的文件(即路径包含文件/工件的版本 ID)并且您需要每次在 CloudFront 中更改它,您需要编写一个脚本来执行该操作。
遗憾的是,适用于 CloudFront 的 AWS CLI 不允许您使用一个命令轻松更新路径。你需要一个详细的脚本。我写了一个,在this answer中有详细信息。 (不同的问题)