2014-09-04 24 views
5

我有一個Amazon S3存儲桶,其中包含大約300K個對象,並且需要在所有對象上設置Cache-control標頭。不幸的是這似乎是唯一的出路在同一時間做到這一點,除了一個,是通過將對象複製到自己和設置緩存控制標頭,道:Amazon S3命令行將所有對象複製到自己設置高速緩存控制

對於文檔Amazon S3 CLI複製命令,但我一直沒有成功使用它設置緩存控制標題。有沒有人有一個適用於此的示例命令。我想設置緩存控制爲max-age = 1814400

一些背景資料:

回答

8

默認情況下,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 

這裏有一些鏈接到手冊,如果你需要更多的信息:

+0

'REPLACE'品牌問題:現在增加'Cache-Control'工作,但是該解決方案也打破了「ContentType」設置,從現有的設置改變它。 'image/png'爲'binary/octet-stream'。 – geekQ 2016-11-09 08:16:14

+0

@geekQ您是否通過添加緩存控制來改變'ContectType'設置?如果您使用--content-type標誌指定「ContentType」,它會起作用嗎?文檔閱讀的方式,aws是猜測內容類型,是你的擴展'* .png'? – 2016-11-14 15:54:47

相關問題