我们在 Amazon S3 的存储桶中有大约 10,000 多张图像,如何一次性为所有图像设置过期标头?
6 回答
请注意,我使用 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 会自动为每种媒体类型包含正确的元内容类型数据,而且我有一些错误的标头,我只是选择覆盖所有内容。
您可以使用使用 S3 API 的第三方应用程序对存储桶文件进行批量更改。这些应用程序不会仅使用一个请求来设置标头,而是会自动执行 10,000 多个所需的请求。
我目前使用的是Cloudberry Explorer,它是一个与您的 S3 存储桶交互的免费软件实用程序。在这个工具中,我可以选择多个文件并指定将应用于所有文件的 HTTP 标头。
另一种方法是使用 S3 API 库开发您自己的脚本或工具。
另一种解决方案是response-expires
在您的 URL 中添加参数。它设置Expires
响应的标头。
有关更多详细信息,请参阅http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html中的请求参数部分。
- 选择文件夹
- 从顶部菜单中,更多
- 选择更改元数据
- 将密钥添加为过期
- 将值添加为 2592000(例如)
Cyberduck 也将编辑标题。
- 选择所有项目
- 命令 & 我(获取信息)
- 提供一个 GUI 来编辑各种带有内置预设的标题。
刚刚在一个桶中处理了 6000 张图像,没有任何问题。
很确定不可能在一个请求中做到这一点。相反,您必须发出 10,000 个PUT请求,每个键一个,您想要的新标头/元数据以及x-amz-copy-source
指向同一键的标头(这样您就不需要重新上传对象)。我提供的链接更详细地介绍了 PUT 复制操作,但这几乎是在 s3 上更改对象元数据的方法。