AWS S3 Kepçe adı nasıl yeniden adlandırılır


150

Sonra tüm zorlu göç işleri vb. Sadece bunun için CNAME (örn. Media.abc.com) kullanarak içerik sunmak gerekiyorsa unutmayın. Grup adının, kusursuz çalıştığından emin olmak için media.abc.com/S3/amazon.com ile başlaması gerekir.

S3'ün konsoldan doğrudan yeniden adlandırmaya izin vermediğini unutmayın.

Bunun için geçici bir çözüm var mı?

Yanıtlar:


104

Bence tek yol doğru ada sahip yeni bir kova oluşturmak ve daha sonra tüm nesnelerinizi eski kovadan yeni kovaya kopyalamaktır. Bunu Aws CLI kullanarak yapabilirsiniz.


2
Yukarıdaki çözüm @navjot için herhangi bir ücret var mı?
pavitran

@pavitran hayır, bu hala gitmek için bir yol
Tashows

8
@Tashows pavitran, chaNges'i değil, chaRges'i soruyordu. Bildiğim kadarıyla, kova öğelerini kopyalamak için gerçekten ücretler var, her öğe için 1 GET ve 1 PUT işlem maliyetine inanıyorum.
guival

5
@Tashows Aslında aslında S3 için fiyatlandırma tablosunda KOPYA işlemleri için bir giriş var, aslında bir PUT yapmakla aynı maliyet (yani ekstra GET maliyeti yok).
guival

3
Ayrıca CLI aracılığıyla bunu yapmak istemeyenler için web konsolunu kullanarak kesip yapıştırabileceğinizi unutmayın.
mahemoff

241

Çözüm

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

açıklama

S3 için yeniden adlandırma kovası işlevi yoktur, çünkü S3'te teknik olarak klasör yoktur, bu nedenle kovadaki her dosyayı işlememiz gerekir.

Yukarıdaki kod 1. yeni bir grup oluşturur, 2. dosyaları kopyalar ve 3. eski grubu siler. Bu kadar.

Grubunuzda çok sayıda dosya varsa ve maliyetlerden endişe ediyorsanız okumaya devam edin. Sahne arkasında, kovadaki tüm dosyaların önce kopyalanıp ardından silinmesidir. Birkaç bin dosyanız varsa, önemsiz bir miktara mal olmalıdır. Aksi takdirde, bunun sizi nasıl etkileyeceğini görmek için bu yanıtı kontrol edin .

Misal

Aşağıdaki örnekte eski grubu oluşturup doldurduktan sonra dosyaları yenisiyle senkronize ediyoruz. AWS'nin ne yaptığını görmek için komutların çıkışını kontrol edin.

> # 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

8
Bu yanıt kabul edilen cevapla aynıdır, ancak bu yayın nasıl yapılacağına dair adım adım çok yararlı bir örnek verir. (Bununla birlikte, örnek kısaltılmalıdır. Örnek eski bir kova oluşturma ve sonek değişkeni kullanma gösterilmesine gerek yoktur.) Bu cevabın açıklama kısmı beni tatmin etmiyor. S3'teki klasör eksikliğinin bu garip prosedürün neden gerekli olduğunu söylüyor. Orijinal soru klasörlerden bahsetmediği için, bunun S3 kovalarını yeniden adlandıramamayı nasıl açıkladığını anlamıyorum.
LS

2
Bu yöntemi denedim ... işe yaradığı ortaya çıktı ... ancak garip bir nedenden ötürü herhangi bir öğeyi (görüntüleri) göremiyorum. Tarayıcı üzerinden s3 kontrol panelindeki öğeler arasında gezinebilirim ... ancak bunları bir url aracılığıyla görüntüleyemiyorum veya indiremiyorum. Neden herhangi bir fikir? İzinler aynı görünüyor. Dikkat edilmesi gereken bazı özel izinler var mı?
bmiskie

1
@duality_ Eğer izinleri hakkında cevabınız bildirimine ekleyebilir ve dosyaları kopyalamak anlamına --acl bucket-owner-full-control(ki gibi cevap )
Евгений Масленков

1
Bölgeyi de belirtmeniz gerektiğini unutmayın, aksi takdirde yeni kovalarınız ABD Doğu (Kuzey Virginia) 'da olacaktır. Örn aws --region ap-southeast-2 s3 mb s3://new-bucket
cobberboy


38

Muhtemelen AWS CLI araç setinin daha sonraki bir sürümü mvseçeneği sağladı .

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

Aşağıdaki komutu kullanarak kovaları yeniden adlandırıyorum:

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

9
Bu benim için çalıştı. Ancak, new-bucketkomutu çalıştırmadan önce mutlaka oluşturulması gerektiğini unutmamak gerekir. Ayrıca, old-bucketboş olacak , ancak silinmeyecek. Tüm dosyaların aktarılmasının ardından silmek isterseniz, aşağıdaki komutu kullanın (açılı ayraçlar olmadan):aws s3api delete-bucket --bucket <old-bucket> --region <region id>
Mabyn

Eski kova herhangi bir yerde kullanılıyorsa, kovayı kopyalamak, yeni hedefle test etmek ve ancak bundan sonra eski kovayı silmek iyi bir uygulamadır. aws s3 mvaslında kopyalar ve siler, bu yüzden finansal maliyetler aynı olmalıdır (sanırım).
Flimm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.