Frage So benennen Sie den AWS S3-Bucket-Namen um


Nach all den schwierigen Arbeiten der Migration usw. Erkenne einfach, dass Wenn der Inhalt mit CNAME (z. B. media.abc.com) geliefert werden muss. Der Bucket-Name muss mit media.abc.com/S3/amazon.com beginnen, damit er perfekt funktioniert.

Beachten Sie, dass S3 keine direkte Umbenennung von der Konsole erlaubt.

Gibt es dafür irgendwelche Möglichkeiten?


75
2018-01-06 17:30


Ursprung


Antworten:


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


46
2018-01-06 22:40



Lösung

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

Erläuterung

Es gibt keine Funktion zum Umbenennen von Buckets für S3, da in S3 technisch keine Ordner vorhanden sind. Daher müssen wir jede Datei im Bucket 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. Ansonsten überprüfen diese Antwort um zu sehen, wie sich das auf dich auswirken würde.

Beispiel

Im folgenden Beispiel erstellen und füllen wir den alten Bucket und synchronisieren dann die Dateien mit dem neuen. Ü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

135
2018-04-07 10:05



Wahrscheinlich eine spätere Version des AWS CLI-Toolkits zur Verfügung gestellt mv Möglichkeit.

$ aws --version
aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30

Ich benenne Buckets mithilfe des folgenden Befehls um:

aws s3 mv s3://old-bucket s3://new-bucket --recursive

2
2018-06-19 12:01