How can I update files on Amazon's CDN (CloudF

2019-02-04 13:26发布

Is there any way to update files stored on Amazon CloudFront (Amazon's CDN service)? Seems like it won't take any update of a file we make (e.g. removing the file and storing the new one with the same file name as before). Do I have to explicitly trigger an update process to remove the files from the edge servers to get the new file contents published?

Thanks for your help

9条回答
Rolldiameter
2楼-- · 2019-02-04 13:46

CloudFront's user interface offers this under the [i] button > "Distribution Settings", tab "Invalidations": https://console.aws.amazon.com/cloudfront/home#distribution-settings

查看更多
迷人小祖宗
3楼-- · 2019-02-04 13:52

I seem to remember seeing this on serverfault already, but here's the answer:

By "Amazon CDN" I assume you mean "CloudFront"?

It's cached, so if you need it to be updated right now (as opposed to "new version will be visible in 24hours") you'll have to choose a new name. Instead of "logo.png", use "logo.png--0", and then update it using "logo.png--1", and change your html to point to that.

There is no way to "flush" amazon cloudfront.

Edit: This was not possible, it is now. See comments to this reply.

查看更多
倾城 Initia
4楼-- · 2019-02-04 13:53

In ruby, using the fog gem

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

even on invalidation, it still takes 5-10 minutes for the invalidation to process and refresh on all amazon edge servers

查看更多
登录 后发表回答