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

dpe*_*usm 21 caching amazon-s3 amazon-web-services amazon-cloudfront

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

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

ash*_*e11 17

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

  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 /

对于CloudFront,您可以为缓存行为指定最小TTL,最大TTL和默认TTL.它们基本上是在CloudFront上缓存对象的时间,与为对象添加到期标头无关,即它没有任何标题

所以现在如果你还没有添加任何标题,那么cloudfront会将它缓存为DEFAULT TTL.更多信息阅读表 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist

  • 使用AWS CLI时,命令如下所示:`aws s3 cp s3:// YOUR_BUCKET / s3:// YOUR_BUCKET / --metadata-directive REPLACE --recursive --cache-control max-age = 31536000` (3认同)
  • 这似乎没有解决问题的最后一部分。您如何设置存储桶,以便在该文件夹甚至整个存储桶中添加的新内容都添加了该标签 (2认同)