Es gibt jetzt drei Möglichkeiten, dies zu erreichen: über die AWS-Konsole , über die Befehlszeile oder über das Befehlszeilentool s3cmd .
AWS Console-Anweisungen
Dies ist jetzt die empfohlene Lösung. Es ist einfach, aber es kann einige Zeit dauern.
- Melden Sie sich bei AWS Management Console an
- Gehe in den S3-Eimer
- Wählen Sie alle Dateien nach Route aus
- Wählen Sie "Mehr" aus dem Menü
- Wählen Sie "Metadaten ändern"
- Wählen Sie im Feld "Schlüssel" die Option "Cache-Steuerung" aus dem Dropdown-Menü max-age = 604800Enter (7 Tage) für Value
- Klicken Sie auf "Speichern"
( danke an @biplob - bitte gib ihm unten etwas Liebe )
AWS-Befehlszeilenlösung
Als ich diese Bucket-Richtlinien erstellte, war das ursprünglich ein No-Go, also habe ich mir überlegt, wie man es mit aws-cli macht, und es ist ziemlich schlau. Bei der Recherche konnte ich keine Beispiele in freier Wildbahn finden, daher dachte ich, ich würde einige meiner Lösungen veröffentlichen, um den Bedürftigen zu helfen.
HINWEIS: Standardmäßig kopiert aws-cli nur die aktuellen Metadaten einer Datei, AUCH WENN SIE NEUE METADATEN ANGABEN.
Um die in der Befehlszeile angegebenen Metadaten zu verwenden, müssen Sie das Flag '--metadata-directive REPLACE' hinzufügen. Hier einige Beispiele.
Für eine einzelne Datei
aws s3 cp s3://mybucket/file.txt s3://mybucket/file.txt --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public
Für einen ganzen Bucket (Hinweis - rekursives Flag):
aws s3 cp s3://mybucket/ s3://mybucket/ --recursive --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public
Ein kleines Problem, das ich gefunden habe: Wenn Sie es nur auf einen bestimmten Dateityp anwenden möchten, müssen Sie 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 2034-01-01T00:00:00Z --acl public-read \
--cache-control max-age=2592000,public
Hier sind einige Links zum Handbuch, wenn Sie weitere Informationen benötigen:
Bekannte Probleme:
"Unknown options: --metadata-directive, REPLACE"
Dies kann durch ein veraltetes awscli verursacht werden - siehe die Antwort von @ eliotRosewater unten
S3cmd Werkzeug
S3cmd ist ein "Befehlszeilentool zum Verwalten von Amazon S3- und CloudFront-Diensten". Während diese Lösung einen Git-Pull erfordert, könnte sie eine einfachere und umfassendere Lösung sein.
Eine vollständige Anleitung finden Sie im Beitrag von @ ashishyadaveee11 unten
Ich hoffe es hilft!