Larutan
aws s3 mb s3://[new-bucket]
aws s3 sync s3://[old-bucket] s3://[new-bucket]
aws s3 rb --force s3://[old-bucket]
Penjelasan
Tidak ada fungsi ganti nama bucket untuk S3 karena secara teknis tidak ada folder di S3 sehingga kami harus menangani setiap file di dalam bucket.
Kode di atas 1. akan membuat ember baru, 2. menyalin file dan 3. menghapus ember lama. Itu dia.
Jika Anda memiliki banyak file di keranjang dan Anda khawatir dengan biayanya, baca terus. Di belakang layar yang terjadi adalah bahwa semua file di dalam ember disalin terlebih dahulu dan kemudian dihapus. Seharusnya biaya yang tidak signifikan jika Anda memiliki beberapa ribu file. Kalau tidak, periksa jawaban ini untuk melihat bagaimana ini akan berdampak pada Anda.
Contoh
Dalam contoh berikut ini kami membuat dan mengisi ember lama dan kemudian menyinkronkan file ke yang baru. Periksa output dari perintah untuk melihat apa yang dilakukan 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