设置默认缓存控制并为整个S3存储桶/ CloudFront过期

时间:2014-09-03 15:03:40

标签: caching amazon-web-services amazon-s3 amazon-cloudfront

我有一个亚马逊S3桶,里面有大约300K的商品,供大型网站使用。我想设置从S3存储桶中提供的所有CloudFront对象的到期时间,以便用户可以在浏览器中缓存它们。是否有一种简单的方法可以对存储桶中当前所有s3对象设置缓存控制 AND 最重要的是为存储桶设置默认值,以便添加的任何新项目也可以获得过期和缓存控制标头 OR 可以使用CloudFront完成吗?

到目前为止,我已经阅读了许多AWS文档但却一无所获:

1 个答案:

答案 0 :(得分:16)

为存储桶中的现有对象添加缓存控制的步骤

  1. git clone https://github.com/s3tools/s3cmd
  2. 运行s3cmd --configure (系统会要求您输入两个密钥 - 从您的密钥中复制并粘贴它们 确认电子邮件或您的亚马逊帐户页面。小心的时候 复制它们!它们区分大小写,必须准确输入 或者您不断收到有关无效签名或类似信息的错误。 请记住向密钥添加s3:ListAllMyBuckets权限,否则在测试访问权时会出现AccessDenied错误。)
  3. ./ s3cmd --recursive modify --add-header =" Cache-Control:public,max-age = 31536000" S3:// your_bucket_name /
  4. 对于CloudFront ,您可以为缓存行为指定最小TTL,最大TTL和默认TTL。它们基本上是在CloudFront上缓存对象的时间,没有任何内容为对象添加一个到期标题,即它没有任何标题

    现在,如果您还没有添加任何标头,那么Cloudfront会将其缓存为DEFAULT TTL。 更多信息READFOLLOWING TABLE http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist