我有一个包含大约 300K 对象的 Amazon S3 存储桶,需要在所有对象上设置 Cache-control 标头。不幸的是,除了一次一个之外,似乎唯一的方法是将对象复制到它们自己并以这种方式设置缓存控制标头:
是 Amazon S3 CLI 复制命令的文档,但我没有成功使用它设置缓存控制标头。有没有人有一个适用于此的示例命令。我正在尝试将缓存控制设置为 max-age=1814400
一些背景材料:
我有一个包含大约 300K 对象的 Amazon S3 存储桶,需要在所有对象上设置 Cache-control 标头。不幸的是,除了一次一个之外,似乎唯一的方法是将对象复制到它们自己并以这种方式设置缓存控制标头:
是 Amazon S3 CLI 复制命令的文档,但我没有成功使用它设置缓存控制标头。有没有人有一个适用于此的示例命令。我正在尝试将缓存控制设置为 max-age=1814400
一些背景材料:
默认情况下,aws-cli 仅复制文件的当前元数据,即使您指定了新元数据。
要使用命令行上指定的元数据,您需要添加“--metadata-directive REPLACE”标志。这里有些例子。
对于单个文件
aws s3 cp s3://mybucket/file.txt s3://mybucket/file.txt --metadata-directive REPLACE \
--expires 2100-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public
对于整个存储桶:
aws s3 cp s3://mybucket/ s3://mybucket/ --recursive --metadata-directive REPLACE \
--expires 2100-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 2100-01-01T00:00:00Z --acl public-read \
--cache-control max-age=2592000,public
如果您需要更多信息,以下是手册的一些链接: