【发布时间】:2014-03-03 13:14:23
【问题描述】:
我们在 Amazon S3 的存储桶中有大约 10,000 多张图片,如何一次性为所有图片设置过期标头?
【问题讨论】:
我们在 Amazon S3 的存储桶中有大约 10,000 多张图片,如何一次性为所有图片设置过期标头?
【问题讨论】:
提醒一下,我使用 AWS CLI 找到了一个很好的解决方案:
aws s3 cp s3://bucketname/optional_path s3://bucketname/optional_path --recursive --acl public-read --metadata-directive REPLACE --cache-control max-age=2592000
这会将 Cache-Control 设置为 30 天。请注意,您可以选择复制或替换以前的标题数据。由于 AWS 会自动为每种媒体类型包含正确的元内容类型数据,而且我有一些错误的标头,我只是选择覆盖所有内容。
【讨论】:
cp 你需要重复两次路径,因为它们是源和目标
Cache-Control,我们需要过期吗?即使有缓存控制,pingdom 和 gtmetrix 之类的服务似乎也会因缺少 Expires 而犹豫。
您可以通过使用 S3 API 的第三方应用对存储桶文件进行批量更改。这些应用程序不会只使用一个请求来设置标头,而是会自动处理 10,000 多个所需的请求。
我目前使用的是Cloudberry Explorer,这是一个与您的 S3 存储桶交互的免费软件实用程序。在这个工具中,我可以选择多个文件并指定将应用于所有文件的 HTTP 标头。
另一种方法是使用 S3 API 库开发您自己的脚本或工具。
【讨论】:
另一种解决方案是在您的 URL 中添加 response-expires 参数。它设置响应的Expires 标头。
有关详细信息,请参阅http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html 中的请求参数部分。
【讨论】:
【讨论】:
access plus 1 year?如果我们手动设置年份等,我们将不得不不断手动编辑 Expires 标头!
Cyberduck 也会编辑标题。
在一个存储桶中顺利处理了 6000 张图像。
【讨论】:
很确定不可能在单个请求中执行此操作。相反,您必须发出 10,000 个 PUT 请求,每个键一个,您想要的新标头/元数据以及指向同一键的 x-amz-copy-source 标头(这样您就不需要重新上传物体)。我提供的链接更详细地介绍了 PUT 复制操作,但这几乎是 在 s3 上更改对象元数据的方式。
【讨论】: