AWS S3 बाल्टी नाम का नाम कैसे बदलें


150

माइग्रेशन आदि के सभी कठिन कामों के बाद, बस यह महसूस करें कि यदि CNAME (जैसे media.abc.com) का उपयोग करके सामग्री की सेवा की आवश्यकता है। बाल्टी नाम को पूरी तरह से काम करने के लिए Media.abc.com/S3/amazon.com से शुरू करने की आवश्यकता है।

बस एहसास है कि एस 3 कंसोल से सीधे नाम बदलने की अनुमति नहीं देता है।

क्या इसके लिए काम करने का कोई तरीका है?

जवाबों:


104

मुझे लगता है कि एक ही तरीका है सही नाम के साथ एक नई बाल्टी बनाना और फिर पुरानी बाल्टी से अपनी सभी वस्तुओं को नई बाल्टी में कॉपी करना। आप इसे Aws CLI का उपयोग करके कर सकते हैं।


2
क्या उपरोक्त समाधान @navjot के लिए कोई शुल्क हैं?
पावित्रन

@pavitran nope, यह अभी भी जाने का रास्ता है
Tashows

8
@ तेजस्वी पावितरन चेज के बारे में पूछ रहे थे, चेजेस नहीं। जहां तक ​​मुझे पता है कि बाल्टी की वस्तुओं की नकल के लिए वास्तव में शुल्क हैं, मेरा मानना ​​है कि प्रत्येक आइटम के लिए 1 GET और 1 PUT ऑपरेशन लागत है।
10

5
@ टैशोज़ वास्तव में S3 के लिए मूल्य निर्धारण तालिका पर COPY संचालन के लिए एक प्रविष्टि है , यह वास्तव में PUT करने के समान ही है (इसलिए इसमें कोई अतिरिक्त GET लागत नहीं है)।
17

3
ध्यान दें कि आप उन लोगों के लिए भी वेब कंसोल का उपयोग करके कट और पेस्ट कर सकते हैं, जो CLI के माध्यम से ऐसा नहीं करना चाहते हैं।
Mahemoff

241

उपाय

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

8
यह उत्तर स्वीकार किए गए उत्तर के समान है, सिवाय इसके कि यह पोस्ट कैसे करना है के कदम उदाहरण के द्वारा एक बहुत ही उपयोगी कदम देता है। (उदाहरण को छोटा किया जाना चाहिए, हालांकि। पुरानी बाल्टी के उदाहरण के निर्माण और प्रत्यय चर का उपयोग करने की कोई आवश्यकता नहीं है।) इस उत्तर का स्पष्टीकरण भाग मुझे संतुष्ट नहीं करता है, हालांकि। यह कहता है कि S3 में फ़ोल्डर्स की कमी इस अजीब प्रक्रिया की आवश्यकता है। चूंकि मूल प्रश्न में फ़ोल्डर का उल्लेख नहीं किया गया था, मुझे समझ में नहीं आता है कि एस 3 बाल्टी का नाम बदलने में असमर्थता कैसे बताती है।
LS

2
इस विधि की कोशिश की ... काम करने के लिए दिखाई दिया ... हालांकि कुछ अजीब कारणों से मैं किसी भी आइटम (चित्र) को नहीं देख सकता। मैं s3 डैशबोर्ड पर आइटम के माध्यम से ब्राउज़र के माध्यम से नेविगेट कर सकता हूं ... लेकिन एक url के माध्यम से उन्हें देख नहीं सकता या उन्हें डाउनलोड नहीं कर सकता। कोई विचार क्यों? अनुमतियाँ समान प्रतीत होती हैं। क्या बाहर देखने के लिए कुछ विशेष अनुमतियां हैं?
bmiskie

1
@duality_ क्या आप अनुमतियों के बारे में अपने उत्तर अधिसूचना में जोड़ सकते हैं और आप उस --acl bucket-owner-full-control(जैसे उत्तर में ) फ़ाइलों की प्रतिलिपि बना सकते हैं
йвгений Масленков

1
ध्यान दें कि आपको क्षेत्र भी निर्दिष्ट करने की आवश्यकता है, अन्यथा आपके नए बाल्टी यूएस ईस्ट (उत्तरी वर्जीनिया) में होंगे। उदा aws --region ap-southeast-2 s3 mb s3://new-bucket
कोबराबॉय

1
यदि आपके पास संस्करण है, तो आपको संस्करणों को समाप्त करने के लिए जीवनचक्र प्रबंधन का उपयोग करना होगा ... जाहिरा तौर पर: docs.aws.amazon.com/AmazonS3/latest/dev/…
carlin.scott

38

संभवतः AWS सीएलआई टूलकिट के बाद के संस्करण ने mvविकल्प प्रदान किया ।

$ 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

9
इसने मेरे लिए काम किया। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि new-bucketकमांड चलाने से पहले पहले बनाया जाना चाहिए। इसके अलावा, old-bucketवसीयत खाली हो जाएगी लेकिन नष्ट नहीं की जाएगी। यदि आप सभी फ़ाइलों के हस्तांतरण के बाद इसे हटाना चाहते हैं, तो निम्न कमांड का उपयोग करें (बिना कोण कोष्ठक के):aws s3api delete-bucket --bucket <old-bucket> --region <region id>
Mabyn

यदि पुरानी बाल्टी कहीं भी उपयोग में है, तो स्पष्ट रूप से बाल्टी की नकल करना, नए गंतव्य के साथ परीक्षण करना और उसके बाद ही पुरानी बाल्टी को हटाना अच्छा अभ्यास है। aws s3 mvवास्तव में प्रतियां और नष्ट हो जाती हैं, इसलिए वित्तीय लागत समान होनी चाहिए (मुझे लगता है)।
फ्लिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.