gpt4 book ai didi

amazon-s3 - 自动为整个 S3 存储桶设置缓存控制(使用存储桶策略?)

转载 作者:行者123 更新时间:2023-12-02 22:10:45 26 4
gpt4 key购买 nike

我需要为整个 s3 存储桶(包括现有文件和 future 文件)设置缓存控制 header ,并希望在存储桶策略中执行此操作。我知道我可以编辑现有的文件,并且如果我自己上传它们,我知道如何在放置时指定它们,但不幸的是,上传它们的应用程序无法设置 header ,因为它使用 s3fs 将文件复制到那里。

最佳答案

现在有 3 种方法可以完成此操作:通过 AWS 控制台通过命令行通过 s3cmd 命令行工具>.

<小时/>

AWS 控制台说明

这是现在推荐的解决方案。这很简单,但可能需要一些时间。

  • 登录 AWS 管理控制台
  • 进入 S3 存储桶
  • 按路径选择所有文件
  • 从菜单中选择“更多”
  • 选择“更改元数据”
  • 在“Key”字段中,从下拉菜单中选择“Cache-Control”max-age=604800 输入“值”(7 天)
  • 按“保存”按钮

( thanks to @biplob - please give him some love below )

<小时/>

AWS 命令​​行解决方案

最初,当我创建这个存储桶策略时是不行的,所以我想出了如何使用 aws-cli 来做到这一点,而且它非常灵活。在研究时,我找不到任何实际的例子,所以我想我应该发布一些我的解决方案来帮助有需要的人。

注意:默认情况下,aws-cli 仅复制文件的当前元数据,即使您指定新元数据也是如此。

要使用在命令行上指定的元数据,您需要添加“--metadata-directive REPLACE”标志。以下是一些示例。

对于单个文件

aws s3 cp s3://mybucket/file.txt s3://mybucket/file.txt --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public

对于整个存储桶(注意 --recursive 标志):

aws s3 cp s3://mybucket/ s3://mybucket/ --recursive --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public

我发现了一个小问题,如果您只想将其应用于特定文件类型,则需要排除所有文件,然后包含您想要的文件。

仅限 jpg 和 png:

aws s3 cp s3://mybucket/ s3://mybucket/ --exclude "*" --include "*.jpg" --include "*.png" \
--recursive --metadata-directive REPLACE --expires 2034-01-01T00:00:00Z --acl public-read \
--cache-control max-age=2592000,public

如果您需要更多信息,这里有一些指向手册的链接:

已知问题:

"Unknown options: --metadata-directive, REPLACE"

这可能是由过时的 awscli 引起的 - 请参阅 @eliotRosewater's answer below

<小时/>

S3cmd工具

S3cmd 是一个“用于管理 Amazon S3 和 CloudFront 服务的命令行工具”。虽然此解决方案需要 git pull,但它可能是一个更简单、更全面的解决方案。

如需完整说明,see @ashishyadaveee11's post below

<小时/>

关于amazon-s3 - 自动为整个 S3 存储桶设置缓存控制(使用存储桶策略?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com