15

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

谢谢你的帮助

4

10 回答 10

17

以下是我使用 CloudFront 控制面板执行此操作的方法。

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

在此处输入图像描述

  1. 选择无效选项卡。
  2. 单击Create Invalidation按钮并输入要使其失效(更新)的文件的位置。

例如:

在此处输入图像描述

  1. 然后单击Invalidate按钮,您现在应该会在状态下看到InProgress

在此处输入图像描述

完成您的无效请求通常需要 10 到 15 分钟,具体取决于您请求的大小。

一旦它说完成,你就可以走了。

提示: 一旦您创建了一些失效,如果您回来并需要使相同的文件失效,请使用选择框,复制链接将变为可用,使其更快。

于 2015-01-07T18:15:37.300 回答
12

亚马逊添加了失效功能。这是 API 参考

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>
于 2010-09-01T17:26:39.677 回答
2

设置 TTL=1 小时并替换

http://developer.amazonwebservices.com/connect/ann.jspa?annID=655

于 2010-07-05T14:07:22.247 回答
1

我似乎记得已经在 serverfault 上看到了这个,但这是答案:

我认为“Amazon CDN”是指“CloudFront”?

它已缓存,因此如果您需要立即更新它(而不是“新版本将在 24 小时内可见”),您必须选择一个新名称。而不是“logo.png”,使用“logo.png--0”,然后使用“logo.png--1”更新它,并将你的html更改为指向它。

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

编辑:这不可能的,现在是。请参阅对此回复的评论。

于 2009-07-22T06:39:42.277 回答
1

下载 Cloudberry Explorer 免费软件版本以在单个文件上执行此操作:http: //blog.cloudberrylab.com/2010/08/how-to-manage-cloudfront-object.html

于 2010-12-09T15:25:55.547 回答
1

Cyber​​duck for Mac & Windows 为对象失效提供了一个用户界面。请参阅http://trac.cyberduck.ch/wiki/help/en/howto/cloudfront

于 2010-12-21T11:20:03.540 回答
1

CloudFront 的用户界面在 [i] 按钮 >“分发设置”,“无效”选项卡下提供此功能:https ://console.aws.amazon.com/cloudfront/home#distribution-settings

于 2012-11-14T12:25:44.937 回答
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 分钟

于 2013-05-16T22:26:50.107 回答
0

适用于 Win、Mac 和 Linux 的 CrossFTP 为 CloudFront 失效提供了用户界面,请查看此处了解更多详细信息:http ://crossftp.blogspot.com/2013/07/cloudfront-invalidation-with-crossftp.html

于 2013-07-17T06:29:27.090 回答
0

我将总结可能的解决方案。

案例 1:一次性更新:使用控制台 UI。

您可以根据@CoalaWeb 的回答手动浏览控制台的 UI,并在 CloudFront 上启动“失效”,通常只需不到一分钟即可完成。只需单击一下。

此外,您可以在 UI 中手动更新它在 S3 中指向的路径。

案例 2:频繁更新,在 S3 中的相同路径上:使用 AWS CLI。

您可以使用 AWS CLI 通过命令行简单地运行上述内容。

命令是:

    aws cloudfront create-invalidation --distribution-id E1234567890 --paths "/*"

将该部分替换为E1234567890您可以在控制台中看到的 DistributionId。您还可以将其限制为某些文件而不是/*所有文件。

可以在此答案中找到如何将其package.json作为目标放入 Node/JavaScript 项目的示例。(不同的问题)

笔记:

  • 我相信现在(2021 年 4 月)每月前 1000 次失效是免费的。
  • 执行 AWS CLI 失效的用户应该有权CreateInvalidation访问 IAM。(以下案例中的示例。)

案例3:频繁更新,S3上的路径每次都改变:使用手动脚本。

如果您在 S3 中存储文件的不同版本(即路径包含文件/工件的版本 ID)并且您每次都需要在 CloudFront 中更改它,您需要编写一个脚本来执行该操作。

不幸的是,适用于 CloudFront 的 AWS CLI 不允许您使用一个命令轻松更新路径。你需要有一个详细的脚本。我写了一个,可以在这个答案中找到详细信息。(不同的问题)

于 2021-04-06T21:21:09.363 回答