Решение
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
Возможны ли сборы за вышеуказанное решение @navjot? – pavitran
@ pavitran nope, это все еще путь – Tashows
@Tashows pavitran спрашивал о chaRges, а не chaNges. Насколько я знаю, действительно есть плата за копирование элементов ковша, я считаю, что 1 GET и 1 PUT операционная стоимость для каждого элемента. – guival