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

Caching 为整个S3 bucket/CloudFront设置默认缓存控制并过期,caching,amazon-web-services,amazon-s3,amazon-cloudfront,Caching,Amazon Web Services,Amazon S3,Amazon Cloudfront,我有一个AmazonS3存储桶,里面有大约30万个项目,供一个大型网站使用。我想设置从S3 bucket提供的CloudFront之外的所有对象的过期时间,以便用户的机器可以将它们缓存在浏览器中。是否有一种简单的方法可以在当前存储桶中的所有s3对象上设置缓存控制和最重要的是为存储桶设置默认值,以便添加的任何新项目也可以获得expires和缓存控制头或这可以使用CloudFront完成吗 到目前为止,我已经阅读了许多AWS文件,但没有发现任何内容: 为bucket中的现有对象添加缓存控制的步

我有一个AmazonS3存储桶,里面有大约30万个项目,供一个大型网站使用。我想设置从S3 bucket提供的CloudFront之外的所有对象的过期时间,以便用户的机器可以将它们缓存在浏览器中。是否有一种简单的方法可以在当前存储桶中的所有s3对象上设置缓存控制最重要的是为存储桶设置默认值,以便添加的任何新项目也可以获得expires和缓存控制头这可以使用CloudFront完成吗

到目前为止,我已经阅读了许多AWS文件,但没有发现任何内容:


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

  • git克隆
  • 运行s3cmd——配置 (将要求您提供两个密钥-从您的 确认电子邮件或来自您的亚马逊帐户页面。在 正在复制!它们区分大小写,必须准确输入 否则,您将不断收到有关无效签名或类似签名的错误。 请记住向密钥添加s3:ListAllMyBucket权限,否则在测试访问权限时将出现AccessDenied错误。)
  • ./s3cmd--recursive modify--add header=“Cache Control:public,max age=31536000”s3://your_bucket\u name/
  • 对于CloudFront您可以为缓存行为指定最小TTL、最大TTL和默认TTL。它们基本上是可以在CloudFront上缓存对象的时间,与为对象添加到期标头无关,即它不修改任何标头

    所以现在如果您还没有添加任何头,那么cloudfront将缓存它作为默认的TTL。 欲了解更多信息,请阅读下表

    CloudFront设置“最小TTL”、“最大TTL”和“默认TTL”指定CloudFront缓存的行为,而不是HTTP响应中设置的标题,对吗?这似乎没有解决问题的最后一部分。如何设置bucket,以便在该文件夹中添加的新内容,甚至整个bucket都能将该标记添加到CloudFront TTL中。TTL表示,对象应该在边缘节点缓存中保留多长时间,而不使用客户端缓存。我很高兴找到了该工具。使用AWS CLI时,命令如下所示:
    AWS s3 cp s3://YOUR_BUCKET/s3://YOUR_BUCKET/--metadata directive REPLACE--recursive--cache control max age=31536000