Pertanyaan Cara mengganti nama Nama Bucket AWS S3


Setelah semua kerja keras migrasi dll. Sadarilah bahwa Jika perlu melayani konten menggunakan CNAME (mis. Media.abc.com). Nama bucket harus dimulai dengan media.abc.com/S3/amazon.com untuk memastikannya berfungsi dengan sempurna.

Ketahuilah bahwa S3 tidak mengizinkan penggantian nama langsung dari konsol.

Apakah ada cara untuk mengatasi ini?


75
2018-01-06 17:30


asal


Jawaban:


Saya pikir satu-satunya cara adalah membuat keranjang baru dengan nama yang benar dan kemudian menyalin semua objek Anda dari keranjang lama ke keranjang baru. Anda dapat melakukannya menggunakan Aws CLI.


46
2018-01-06 22:40



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 mengganti nama bucket untuk S3 karena secara teknis tidak ada folder dalam S3 sehingga kami harus menangani setiap file di dalam bucket.

Kode di atas akan 1. membuat keranjang baru, 2. menyalin file ke atas dan 3. menghapus keranjang lama. Itu dia.

Jika Anda memiliki banyak file di keranjang Anda dan Anda khawatir tentang biayanya, baca terus. Di balik layar, yang terjadi adalah semua file dalam keranjang disalin terlebih dahulu dan kemudian dihapus. Seharusnya biaya yang tidak signifikan jika Anda memiliki beberapa ribu file. Jika tidak, periksa jawaban ini untuk melihat bagaimana ini akan memengaruhi Anda.

Contoh

Pada contoh berikut, kami membuat dan mengisi keranjang lama dan kemudian menyinkronkan file ke file 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

135
2018-04-07 10:05



Mungkin versi terakhir dari toolkit AWS CLI yang disediakan mv pilihan.

$ aws --version
aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30

Saya mengganti nama bucket menggunakan perintah berikut:

aws s3 mv s3://old-bucket s3://new-bucket --recursive

2
2018-06-19 12:01