Подтвердить что ты не робот

Как переименовать имя байта AWS S3

После всех тяжелых работ по миграции и т.д. Просто поймите, что если вам нужно обслуживать контент с помощью CNAME (например, media.abc.com). Имя ведра должно начинаться с media.abc.com/S3/amazon.com, чтобы обеспечить его работу отлично.

Просто осознайте, что S3 не позволяет прямое переименование с консоли.

Есть ли способ обойти это?

4b9b3361

Ответ 1

Я думаю, что единственный способ - создать новое ведро с правильным именем, а затем скопировать все ваши объекты из старого ведра в новое ведро. Вы можете сделать это с помощью Aws CLI.

Ответ 2

Решение

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

Объяснение

В S3 нет функций переименования для S3, поскольку на S3 нет никаких папок, поэтому мы должны обрабатывать каждый файл в ведре.

Приведенный выше код будет 1. создать новое ведро, 2. скопировать файлы и 3. удалить старое ведро. Что это.

Если у вас много файлов в вашем ковше, и вы беспокоитесь о расходах, тогда читайте дальше. За кулисами происходит то, что все файлы в ведре сначала копируются, а затем удаляются. Это должно стоить незначительной суммы, если у вас есть несколько тысяч файлов. В противном случае проверьте этот ответ, чтобы узнать, как это повлияет на вас.

Пример

В следующем примере мы создаем и заполняем старое ведро, а затем синхронизируем файлы с новым. Проверьте выходные данные команд, чтобы увидеть, что делает AWS.

> # 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