2017-01-06 7 views
53

Nach all den schwierigen Arbeiten der Migration usw. Nur erkennen, dass wenn der Inhalt mit CNAME (z. B. media.abc.com) dienen soll. Der Bucket-Name muss mit media.abc.com/S3/amazon.com beginnen, damit er perfekt funktioniert.So benennen Sie AWS S3 Bucket Name

Nur erkennen, dass S3 direkte Umbenennung von der Konsole nicht zulassen.

Gibt es irgendwelche Möglichkeiten, um dafür zu arbeiten?

Antwort

29

Ich denke nur so ist es, einen neuen Bucket mit korrektem Namen zu erstellen und dann alle Ihre Objekte aus dem alten Bucket in den neuen Bucket zu kopieren. Sie können es mit Aws CLI tun.

+1

sind irgendwelche Gebühren für die oben genannte Lösung @navjot? – pavitran

+0

@pavitran nein, das ist immer noch der Weg zu gehen – Tashows

+3

@Tashows pavitran fragte nach chArges, nicht changes. Soweit ich weiß, gibt es in der Tat Gebühren für das Kopieren von Eimer Artikel, ich glaube, 1 GET und 1 PUT Betriebskosten für jeden Artikel. – guival

101

Lösung

aws s3 mb s3://[new-bucket] 
aws s3 sync s3://[old-bucket] s3://[new-bucket] 
aws s3 rb --force s3://[old-bucket] 

Erklärung

Es gibt keine Umbenennungs Eimer Funktionalität für S3, weil es technisch keine Ordner in S3 sind so müssen wir jede Datei im Eimer behandeln.

Der obige Code wird 1. einen neuen Bucket erstellen, 2. Dateien kopieren und 3. den alten Bucket löschen. Das ist es.

Wenn Sie viele Dateien in Ihrem Bucket haben und über die Kosten besorgt sind, lesen Sie weiter. Hinter den Kulissen passiert, dass alle Dateien innerhalb des Buckets zuerst kopiert und dann gelöscht werden. Es sollte einen unbedeutenden Betrag kosten, wenn Sie ein paar tausend Dateien haben. Andernfalls überprüfen Sie this answer, um zu sehen, wie dies sich auf Sie auswirken würde.

Beispiel

Im folgende Beispiel wir schaffen und die alten Eimer füllen und dann die Dateien auf den neuen synchronisieren. Überprüfen Sie die Ausgabe der Befehle, um zu sehen, was AWS tut.

> # bucket suffix so we keep it unique 
> suffix="ieXiy2" # used `pwgen -1 -6` to get this 
> 
> # populate old bucket 
> echo "asdf" > asdf.txt 
> echo "yxcv" > yxcv.txt 
> aws s3 mb s3://old-bucket-$suffix 
make_bucket: old-bucket-ieXiy2 
> aws s3 cp asdf.txt s3://old-bucket-$suffix/asdf.txt 
upload: ./asdf.txt to s3://old-bucket-ieXiy2/asdf.txt 
> aws s3 cp yxcv.txt s3://old-bucket-$suffix/yxcv.txt 
upload: ./yxcv.txt to s3://old-bucket-ieXiy2/yxcv.txt 
> 
> # "rename" to new bucket 
> aws s3 mb s3://new-bucket-$suffix 
make_bucket: new-bucket-ieXiy2 
> aws s3 sync s3://old-bucket-$suffix s3://new-bucket-$suffix 
copy: s3://old-bucket-ieXiy2/yxcv.txt to s3://new-bucket-ieXiy2/yxcv.txt 
copy: s3://old-bucket-ieXiy2/asdf.txt to s3://new-bucket-ieXiy2/asdf.txt 
> aws s3 rb --force s3://old-bucket-$suffix 
delete: s3://old-bucket-ieXiy2/asdf.txt 
delete: s3://old-bucket-ieXiy2/yxcv.txt 
remove_bucket: old-bucket-ieXiy2 
+4

Dies sollte die angenommene Antwort sein –

+6

Diese Antwort ist die gleiche wie die angenommene Antwort, außer dass diese Buchung eine sehr hilfreiche Schritt für Schritt Beispiel wie es zu tun gibt. (Das Beispiel sollte jedoch verkürzt werden. Es ist nicht notwendig, die Erstellung eines Beispiel-alten Buckets und die Verwendung einer Suffix-Variable anzuzeigen.) Der Erläuterungsteil dieser Antwort befriedigt mich jedoch nicht. Es sagt, das Fehlen von Ordnern in S3 ist, warum diese unangenehme Prozedur erforderlich ist. Da die ursprüngliche Frage Ordner nicht erwähnt, verstehe ich nicht, wie dies die Unfähigkeit erklärt, S3-Buckets umzubenennen. –

+1

Versuchte diese Methode ... schien zu funktionieren ... aber aus irgendeinem seltsamen Grund kann ich keine der Gegenstände (Bilder) sehen. Ich kann über den Browser durch die Elemente auf dem S3-Dashboard navigieren ... aber nicht über eine URL anzeigen oder herunterladen. Irgendwelche Ideen warum? Berechtigungen scheinen identisch zu sein. Gibt es spezielle Berechtigungen, auf die Sie achten sollten? – bmiskie

Verwandte Themen