Как переименовать имя корзины AWS S3
после всех трудных работ миграции etc. Просто поймите, что если нужно обслуживать контент с помощью CNAME (например media.abc.com). имя ведра нужно начать с media.abc.com/S3/amazon.com чтобы убедиться, что он работает отлично.
просто поймите, что S3 не позволяет прямое переименование с консоли.
есть ли способы обойти это?
3 ответов:
Я думаю, что единственный способ создать новое ведро с правильным именем и скопировать туда все объекты из старого ведра в ведро. Вы можете сделать это с помощью AWS CLI.
решение
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. удалите старое ведро. Вот и все.
если у вас много файлов в корзине и вы беспокоитесь о расходах, то читайте дальше. За кулисами происходит то, что все файлы внутри корзины сначала копируются, а затем удаляются. Это должно стоить незначительную сумму, если у вас есть несколько тысяч файлов. В противном случае проверьте ответ чтобы увидеть, как это повлияет на вас.
пример
в следующем примере мы создаем и заполняем старое ведро, а затем синхронизируем файлы с новым. Проверьте выходные данные команд, чтобы узнать, что делает 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
вероятно, более поздние версии инструментальных средств командной строки AWS предоставил .
$ aws --version aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30я переименовываю ведра, используя следующую команду:
aws s3 mv s3://old-bucket s3://new-bucket --recursive
Comments