मेरे पास मेरी एस 3 बाल्टी में एक कुंजी में निहित फ़ाइल है। मैं एक नई कुंजी बनाना चाहता हूं, जिसमें एक ही फाइल होगी। क्या यह फ़ाइल डाउनलोड किए बिना करना संभव है? मैं पाइथन (और अधिमानतः बोटो लाइब्रेरी) में एक समाधान की तलाश में हूं।पायथन (और बोटो) का उपयोग कर अमेज़ॅन एस 3 में एक कुंजी क्लोन कैसे करें?
उत्तर
एस 3 वस्तु प्रतिलिपि द्वारा ऑब्जेक्ट की अनुमति देता है। CopyObject ऑपरेशन किसी ऑब्जेक्ट की एक प्रति बनाता है जब आप स्रोत ऑब्जेक्ट की कुंजी और बाल्टी निर्दिष्ट करते हैं और लक्ष्य गंतव्य की कुंजी और बाल्टी निर्दिष्ट करते हैं। सुनिश्चित नहीं है कि बोटो में कॉम्पैक्ट कार्यान्वयन है या नहीं।
बोटो के स्रोत कोड के माध्यम से ब्राउज़ करना मैंने पाया कि कुंजी ऑब्जेक्ट में "कॉपी" विधि है। CopyObject ऑपरेशन के बारे में आपके सुझाव के लिए धन्यवाद।
कहाँ बाल्टी गंतव्य बाल्टी है:
bucket.copy_key(new_key,source_bucket,source_key)
यह वास्तव में कुंजी को पढ़ता है और इसे नई बाल्टी में रखता है - जो आप नहीं चाहते हैं। माफ़ कीजिये। –
मुझे विश्वास नहीं है कि यह सही है। यह आईएमओ का सबसे अच्छा जवाब है। 'Copy_key' विधि एक पुट अनुरोध में 'x-amz-copy-source' शीर्षलेख को पास करती है, जो आपकी मशीन पर डाउनलोड किए बिना सीधे क्षेत्र से क्षेत्र में प्रतिलिपि बनाने के लिए S3 को बताती है। – sergiopereira
यहां उन्हें दस्तावेज़ हैं: http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.copy_key – creimers
हालांकि कोई भी नहीं पूछा, मैंने सोचा कि यह कैसे simples3
के साथ ऐसा करना दिखाने के लिए प्रासंगिक हो सकता है:
>>> b.copy("my_bucket/file.txt", "file_copy.txt", acl="public")
मुझे यकीन है कि नहीं कर रहा हूँ क्या बोटो यहां है, लेकिन यह ध्यान देने योग्य है कि अनुमतियां (एसीएल) एस 3 द्वारा प्रतिलिपि बनाई जाएगी, अगर इसे और कुछ निर्दिष्ट नहीं किया गया है तो इसे "निजी" पर रीसेट कर दिया जाएगा। एसीएल की प्रतिलिपि बनाने के लिए, आपको पहले इसके लिए पूछना होगा।
मैं अनुमतियों (बग का सामना करने के बाद) के बारे में इस टिप्पणी को दूसरा करता हूं 'dest_bucket .copy_key (key.name, src_bucket_name, key.name, preserve_acl = True) ' – nsof
ध्यान दें कि कुंजी ऑब्जेक्ट पर 'प्रतिलिपि' विधि में "preserve_acl" पैरामीटर (डिफ़ॉल्ट रूप से गलत) है जो स्रोत के एसीएल को गंतव्य ऑब्जेक्ट में कॉपी करेगा। मॉड्यूल boto.s3.key में विधि प्रति पर
from boto.s3.key import Key
#Get source key from bucket by name
source_key = source_bucket.get_key(source_key_name)
#Copy source key to a new bucket with a new key name (can be the same as source)
#Note: source_key is Key
source_key.copy(dest_bucket_name,dest_key_name)
#The signature of boto's Key class:
def copy(self, dst_bucket, dst_key, metadata=None,
reduced_redundancy=False, preserve_acl=False,
encrypt_key=False, validate_dst_bucket=True)
#set preserve_acl=True to copy the acl from the source key
- 1. अमेज़ॅन एस 3 बोटो - फ़ोल्डर कैसे बनाएं?
- 2. अमेज़ॅन एस 3 बोटो - फ़ोल्डर को कैसे हटाएं?
- 3. एस 3 ऑब्जेक्ट समाप्ति बोटो
- 4. अमेज़ॅन एस 3 पर कैसे स्क्रैप करें?
- 5. अमेज़ॅन एस 3
- 6. अमेज़ॅन एस 3 आर्किटेक्चर
- 7. अमेज़ॅन एस 3 बाल्टी
- 8. अमेज़ॅन एस 3 और https
- 9. अमेज़ॅन एस 3 और चेकसम
- 10. अमेज़ॅन एस 3
- 11. अमेज़ॅन एस 3 वेबसाइट
- 12. अमेज़ॅन एस 3
- 13. अमेज़ॅन एस 3 बाल्टी
- 14. अमेज़ॅन एस 3
- 15. अमेज़ॅन एस 3
- 16. अमेज़ॅन एस 3
- 17. अमेज़ॅन एस 3
- 18. अमेज़ॅन एस 3 अनुमतियां
- 19. अमेज़ॅन एस 3
- 20. अमेज़ॅन एस 3
- 21. अमेज़ॅन एस 3
- 22. अमेज़ॅन एस 3
- 23. अमेज़ॅन एस 3
- 24. अमेज़ॅन एस 3
- 25. अमेज़ॅन एस 3
- 26. अमेज़ॅन एस 3
- 27. अमेज़ॅन एस 3
- 28. अमेज़ॅन एस 3 डी के साथ अमेज़ॅन एस 3 का उपयोग करना
- 29. अमेज़ॅन एस 3
- 30. अमेज़ॅन एस 3 क्लाउडफ्रंट
सहायता: 'प्रतिलिपि (स्वयं, dst_bucket, dst_key, मेटाडाटा = कोई नहीं, reduced_redundancy = झूठी, preserve_acl = झूठी, encrypt_key = झूठी)' Boto की विधि। s3.key.Key उदाहरण इस कुंजी को दूसरी बाल्टी में कॉपी करें। –