2017-01-06 8 views
53

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

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

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

ответ

29

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

+1

Возможны ли сборы за вышеуказанное решение @navjot? – pavitran

+0

@ pavitran nope, это все еще путь – Tashows

+3

@Tashows pavitran спрашивал о chaRges, а не chaNges. Насколько я знаю, действительно есть плата за копирование элементов ковша, я считаю, что 1 GET и 1 PUT операционная стоимость для каждого элемента. – guival

101

Решение

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

Объяснение

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

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

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

Пример

В следующем примере мы создаем и заселить старое ведро, а затем синхронизировать файлы на новый. Проверьте выходные данные команд, чтобы увидеть, что делает 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 
+4

Это должен быть принятый ответ –

+6

Этот ответ совпадает с принятым ответом, за исключением того, что это сообщение дает очень полезный шаг за шагом пример того, как это сделать. (Однако пример должен быть сокращен. Нет необходимости показывать создание старого старого примера и использовать суффиксную переменную.) Объяснение этого ответа меня не удовлетворяет. В нем говорится, что отсутствие папок на S3 является причиной этой неудобной процедуры. Поскольку в исходном вопросе не упоминались папки, я не понимаю, как это объясняет невозможность переименования ведер S3. –

+1

Пробовал этот метод ... казалось, работал ... однако по какой-то странной причине я не могу просмотреть ни один из элементов (изображений). Я могу перемещаться через браузер через элементы на панели управления s3 ... но не могу просмотреть их через URL-адрес или загрузить их. Любые идеи почему? Разрешения кажутся одинаковыми. Есть ли какие-то особые разрешения, которые нужно искать? – bmiskie