Ich habe 20000 Dateien mit dem Befehl s3cmd nach AWS S3 verschoben. Jetzt möchte ich die Cache-Steuerung für alle Bilder hinzufügen (.jpg)
Diese Dateien befinden sich in (s3: // Bucket-Name / images /). Wie kann ich die Cache-Steuerung für alle Bilder von s3cmd hinzufügen oder gibt es eine andere Möglichkeit, Header hinzuzufügen?
Vielen Dank
amazon-web-services
amazon-s3
s3cmd
Rajaraman
quelle
quelle
Content-Type
Fehler mit # 406 behoben wurde .Auch mit dem AWS-eigenen Client:
quelle
find . -type f -exec touch '{}' \;; aws s3 sync /path s3://yourbucket/ --recursive --cache-control max-age=604800
--recursive
noch nötig? Die CLI-Dokumentation scheint es nicht als Argument aufzulisten. docs.aws.amazon.com/cli/latest/reference/s3/sync.htmltouch '{}'
wie oben erwähnt wird das Änderungsdatum der Datei geändert, was möglicherweise unerwünscht ist. Um Satzcache-control
auf vorhandene Dateien finden @ rodrigo-silveira Antwort unten.Mein Eimer hat mp4, jpg und andere Dateien. Die Dateien, die ich aktualisieren wollte, werden in einem "Sub-Bucket" gespeichert (z. B. https://s3.amazonaws.com/my.bucket/sub-directory/my-video.mp4 ). In meinem Fall wollte ich nur das Cache-Steuerelement für MP4-Dateien aktualisieren:
Um zu testen, was dies bewirkt, können Sie das
--dryrun
Flag verwenden:quelle
--metadata-directive REPLACE --acl public-read
.--acl public-read
Um Metadaten wie die Cache-Steuerung für ein Objekt in S3 anzupassen, ohne es erneut hochladen zu müssen und ohne Tools von Drittanbietern verwenden zu müssen, können Sie mit der AWS-CLI Folgendes tun. Es kopiert das Objekt in sich selbst und überschreibt die Metadaten mit den von Ihnen gewählten Einstellungen:
Verarbeiten Sie diesen Befehl in einer Suche, um ihn für einen vorhandenen Satz von Dateien auszuführen, der bereits im Bucket vorhanden ist, wie Sie bereits erwähnt haben:
Ersetzen Sie ihn
<bucket-name>
durch den Namen Ihres EimersWARNUNG: Dadurch werden alle vorhandenen Metadaten in den Dateien wie acl überschrieben. Fügen Sie dem Befehl einfach zusätzliche Flags hinzu, um festzulegen, was Sie benötigen, z. B.
--acl public-read
um einen vollständigen öffentlichen Zugriff zu ermöglichen. (danke @jackson)quelle
--acl public-read
.Wenn Sie Tools von Drittanbietern vermeiden möchten und dies eine einmalige Aufgabe ist, können Sie die AWS-Konsole verwenden.
quelle
Jede Metadateneinstellung enthält ein Schlüssel-Wert-Paar. Der Metadatenschlüssel für die Cache-Steuerung lautet "Cache-Steuerung" und der Wert ist
“max-age=<time for which you want your object to be accessed from cache in seconds>”
Sie können den benutzerdefinierten Header für die Cache-Steuerung für Amazon S3-Objekte festlegen, indem Sie eine HTTP-PUT-Anforderung mit den entsprechenden Headern auf zwei Arten an Amazon S3 Server senden:
Festlegen von Cache-Steuerungsmetadaten mithilfe der PUT-Objektanforderung für die Amazon S3-REST-API - Wenn Sie Programmierer sind, können Sie ein eigenes Softwareprogramm schreiben, um mithilfe von Amazon S3-REST- oder SOAP-APIs benutzerdefinierte Header mit der PUT-Objektanforderung festzulegen. Diese Website bezieht sich nur auf Amazon S3-REST-APIs. Weitere Informationen zur Verwendung von SOAP-APIs finden Sie auf der AWS-Dokumentationswebsite. Festlegen von Cache Control-Metadaten mithilfe der Bucket Explorer-Benutzeroberfläche - Wenn Sie benutzerdefinierte HTTP-Header wie Cache Control mithilfe von Mausklicks festlegen möchten, anstatt ein Softwareprogramm zu schreiben, können Sie dafür die Bucket Explorer-Benutzeroberfläche verwenden. Mit diesem benutzerdefinierten HTTP-Header können Sie das Caching-Verhalten angeben, das bei der Anforderungs- / Antwortkette eingehalten werden muss, und um zu verhindern, dass Caches die Anforderung oder Antwort stören.
Weitere Informationen finden Sie unter Festlegen des Cache-Steuerkopfs für Amazon S3-Objekte. `
quelle
(Da das OP nach einem anderen Weg gefragt hat)
Sie können dies auch tun über
aws-cli
zB (v :)aws-cli/1.8.8 Python/2.7.2 Darwin/12.5.0
:Bitte beachten Sie jedoch, dass Sie alle vorhandenen Objekte neu schreiben.
quelle
Aktualisieren Sie einfach das s3cmd auf Version 1.5.1 und das Problem wird behoben.
quelle
Eine andere wirklich einfache Möglichkeit, dies zu tun, ist die Verwendung des S3-Browsers: http://s3browser.com/ Sie können einfach mit gedrückter Umschalttaste oder Strg + a alle gewünschten Bilder auswählen. Gehen Sie dann einfach zur Registerkarte "HTTP-Header" und klicken Sie auf "Neue Header hinzufügen" und dann auf "Änderungen übernehmen". Alle anderen Berechtigungen und Header wurden automatisch beibehalten.
Wenn Sie viel S3 verwenden; Es ist sowieso eine süße App, besonders wenn Sie enorme Uploads haben (es gibt nichts Besseres in der Welt von FTP, Dropbox oder anderem!)
quelle