2014-09-04 2 views
5

Ich habe einen Amazon S3-Bucket mit etwa 300.000 Objekten darin und muss den Cache-Control-Header auf allen von ihnen setzen. Leider scheint es, wie der einzige Weg, dies zu einer Zeit, neben einem tun, ist durch die Objekte selbst zu kopieren und die Cache-Steuerkopfeinstellung, die Art und Weise:Amazon S3-Befehlszeile Alle Objekte in sich selbst kopieren Einstellung Cache-Steuerelement

Ist die Dokumentation für der Amazon S3 CLI Copy-Befehl, aber ich konnte den Cache-Steuerelement-Header nicht verwenden, verwenden Sie es. Hat jemand einen Beispielbefehl, der dafür funktioniert? Ich versuche, Cache-Control auf max-age zu setzen = 1814400

einige Hintergrundmaterial:

Antwort

8

standardmäßig aws-cli nur kopiert eine Datei Aktuelle Metadaten, SELBST WENN SIE NEUE METADATEN SPEZIFIZIEREN.

Um die Metadaten zu verwenden, die in der Befehlszeile angegeben sind, müssen Sie das Flag "--metadata-directive REPLACE" hinzufügen. Hier sind einige Beispiele.

Für eine einzelne Datei

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 

Für einen ganzen Eimer:

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 

Ein wenig gotcha Ich fand, wenn Sie es nur einen bestimmten Dateityp anzuwenden, Sie müssen alle Dateien ausschließen und dann die gewünschten einschließen.

Nur JPGs und 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 

Hier sind einige Links zu dem Handbuch, wenn Sie weitere Informationen benötigen:

+0

'REPLACE' Marken Probleme: jetzt 'Cache-Control' hinzufügen funktioniert, aber diese Lösung unterbricht auch die Einstellung "ContentType" und ändert sie von bestehenden, z. 'image/png' zu' binary/octet-stream'. – geekQ

+0

@geekQ sagst du, dass durch das Hinzufügen von Cache-Kontrolle, ändert sich die 'ContectType' Einstellung? Funktioniert es, wenn Sie 'ContentType' mit dem Flag --content-typ angeben? Die Art, wie die Dokumente lesen, aws den Inhaltstyp erraten, sind Ihre Erweiterungen '* .png'? –