Amazon S3命令行将所有对象复制到自己设置缓存控制

dpe*_*usm 5 caching amazon-s3 amazon-web-services aws-cli

我有一个包含大约300K对象的Amazon S3存储桶,需要在所有对象上设置Cache-control标头.不幸的是,除了一次一个之外,似乎唯一的方法就是将对象复制到自身并以这种方式设置缓存控制头:

是Amazon S3 CLI复制命令的文档,但是我使用它设置缓存控制标题是不成功的.有没有人有一个适用于此的示例命令.我试图将缓存控制设置为max-age = 1814400

一些背景材料:

Dan*_*ams 8

默认情况下,aws-cli仅复制文件的当前元数据,即使您指定了新的METADATA.

要使用命令行中指定的元数据,需要添加"--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
Run Code Online (Sandbox Code Playgroud)

对于整个桶:

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
Run Code Online (Sandbox Code Playgroud)

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

只有jpgs和pngs

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
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请参阅手册的一些链接: