it-swarm.com.de

So benennen Sie den AWS S3-Bucket-Namen um

Nach all den harten Migrationsarbeiten usw. muss man sich nur darüber im Klaren sein, dass der Inhalt über CNAME bereitgestellt werden muss (z. B. media.abc.com). Der Name des Buckets muss mit media.abc.com/S3/Amazon.com beginnen, damit er einwandfrei funktioniert.

Beachten Sie, dass S3 keine direkte Umbenennung über die Konsole zulässt.

Gibt es irgendwelche Möglichkeiten, dies zu umgehen?

129
Carson Lee

Ich denke, die einzige Möglichkeit besteht darin, einen neuen Bucket mit dem richtigen Namen zu erstellen und dann alle Ihre Objekte vom alten Bucket in den neuen Bucket zu kopieren. Sie können dies mit Aws CLI tun.

88
liferacer

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

Für S3 gibt es keine Funktion zum Umbenennen von Buckets, da S3 technisch keine Ordner enthält, sodass wir jede Datei innerhalb des Buckets verarbeiten müssen.

Mit dem obigen Code wird 1. ein neuer Bucket erstellt, 2. Dateien kopiert und 3. der alte Bucket gelöscht. Das ist es.

Wenn Sie viele Dateien in Ihrem Eimer haben und sich Sorgen über die Kosten machen, lesen Sie weiter. Hinter den Kulissen passiert, dass alle Dateien im Bucket zuerst kopiert und dann gelöscht werden. Wenn Sie ein paar tausend Dateien haben, sollte es einen unbedeutenden Betrag kosten. Andernfalls überprüfen Sie diese Antwort , um festzustellen, wie sich dies auf Sie 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
199
duality_

Möglicherweise enthielt eine spätere Version des AWS CLI-Toolkits die Option mv.

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

Ich benenne Buckets mit dem folgenden Befehl um:

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