2012-08-29 11 views
16

मुझे पता है कि एक निश्चित उपसर्ग दिए गए ऑब्जेक्ट समाप्ति नियमों का उपयोग करके एस 3 बाल्टी में ऑब्जेक्ट्स को कैसे समाप्त किया जाए, हालांकि मेरे उद्देश्यों के लिए, मैं प्रति ऑब्जेक्ट आधार पर प्रोग्रामरी रूप से समाप्ति तिथि निर्धारित करना चाहता हूं।s3 प्रति ऑब्जेक्ट समाप्ति

जावा एसडीके इंगित करता है कि यह संभव है क्योंकि यह setExpirationTime विधि है, हालांकि जब भी मैं इस विधि का उपयोग कर समाप्ति तिथि निर्धारित करता हूं, ऐसा कुछ नहीं होता है और ऑब्जेक्ट कभी समाप्त नहीं होता है। इसके अतिरिक्त, aws कंसोल के माध्यम से ऑब्जेक्ट गुणों को देखते हुए, कोई समाप्ति सेट नहीं होने लगती है।

प्रति फ़ाइल समाप्ति का समर्थन नहीं है?/क्या काम करने के लिए मुझे कोई अतिरिक्त कदम उठाने की ज़रूरत है?/यदि प्रति फ़ाइल की समाप्ति समर्थित नहीं है, तो क्या एक फ़ाइल को बाहर निकालना संभव है जो समाप्ति उपसर्ग से समाप्त होने से मेल खाता है?

अग्रिम धन्यवाद!

उत्तर

8

यह प्रति-object expiration की तरह दिखता नहीं है, बल्कि प्रति कॉन्फ़िगरेशन के 100 नियमों के साथ एक प्रति-बाल्टी लाइफसाइक्ल कॉन्फ़िगरेशन है, जैसा कि आपने पाया है।

एक बाल्टी में एक जीवन चक्र विन्यास है। एक जीवन चक्र विन्यास तक 100 नियम हो सकते हैं।

जीवनकाल मूल्य एक गैर-सकारात्मक सकारात्मक पूर्णांक होना चाहिए। अमेज़ॅन एस 3 ऑब्जेक्ट निर्माण समय पर निर्दिष्ट अवधि की समाप्ति अवधि को जोड़कर समाप्ति समय की गणना करता है और परिणामस्वरूप समय अगले दिन मध्यरात्रि यूटीसी में गोल करता है।

प्रति फ़ाइल समाप्ति समर्थित नहीं है, कि समय सीमा समाप्त हो जाने से एक समय समाप्ति उपसर्ग से मेल खाता है एक फ़ाइल को बाहर करने के लिए यह संभव है?

ऐसा लगता है कि आप नियमों को ओवरलैप कर सकते हैं।

यह सुनिश्चित करने के लिए सावधानी बरतें कि नियम ओवरलैप नहीं हैं। उदाहरण के लिए, लाइफसाइक्ल कॉन्फ़िगरेशन के बाद एक नियम है जो 3012 दिनों के बाद समाप्त होने के लिए उपसर्ग "दस्तावेज़" के साथ ऑब्जेक्ट सेट करता है। कॉन्फ़िगरेशन भी का एक और नियम है जो उपसर्ग "दस्तावेज़/2011" से 365 दिनों के बाद समाप्त हो जाता है। इस मामले में, अमेज़ॅन एस 3 त्रुटि संदेश देता है।

आप (जो भी 1, 7) दिनों की एक छोटी संख्या के बाद वस्तुओं समाप्त करने के लिए बाल्टी जीवन चक्र सेट कर सकते हैं:

+1

यह समझ में आता है के बारे में अधिक जानकारी प्राप्त कर सकते हैं, लेकिन आप जानते हैं कि setExpirationTime विधि तो के लिए है? –

+0

मेरा मानना ​​है कि यह जावा एसडीके में ऑब्जेक्टमैटाडाटा रैपर के लिए सिर्फ एक संपत्ति सेटटर है। इसे इनर्नल putObject आह्वान कॉल के परिणामों के साथ बुलाया जाता है। तो यह सिर्फ संपत्ति सेट करता है ताकि आप इसे उच्च स्तर की वस्तुओं में देख सकें। इसे स्वयं स्थापित करना कुछ भी नहीं करेगा। – GalacticJello

+1

एडब्ल्यूएस सीएलआई पर '--expires' पैरामीटर के बारे में क्या? – CMCDragonkai

4

यहाँ एक वैकल्पिक दृष्टिकोण है कि कुछ स्थितियों के लिए काम कर सकते हैं है। फिर, प्रत्येक ऑब्जेक्ट की समयसीमा समाप्त होने से पहले, यदि आप उस ऑब्जेक्ट को अभी तक समाप्त नहीं करना चाहते हैं तो प्रोग्रामेटिक रूप से इसकी समाप्ति का विस्तार करें।

आप एक निर्देश के साथ ही द्वारा "कॉपी" वस्तु एक S3 वस्तु पर टाइमस्टैम्प रीसेट एक ही कक्षा यह वर्तमान में है करने के लिए भंडारण वर्ग बदलने के लिए कर सकते हैं। यह मूल रूप से एक "नोप" है जो लिनक्स/यूनिक्स "टच" कमांड की तरह कार्य करता है। http://alestic.com/2013/09/s3-lifecycle-extend

+0

बहुत ही अभिनव समाधान, लेकिन, "एक बेहतर तरीका होना चाहिए"। या, मुझे लगता है कि इस मामले में, एडब्ल्यूएस * चाहिए * एक बेहतर तरीका प्रदान करना चाहिए। – AJB

1

मैं खुद में वस्तु को कॉपी s3cmd कमांड का उपयोग करके समाप्ति समय बढ़ाया:

मैं एक लेख है कि उदाहरण के एडब्ल्यूएस-CLI आदेश ऐसा करने के तरीके का प्रदर्शन के माध्यम से चलता है लिखा था। यह मूल रूप से 'स्पर्श' की तरह काम करता था।

s3cmd सीपी S3: //bucket-name/file.txt S3: //bucket-name/file.txt

0

इस कार्य को पूरा करने के लिए एक वैकल्पिक तरीका वस्तु टैग का उपयोग करना है ।

उन ऑब्जेक्ट्स के प्रत्येक ऑब्जेक्ट के लिए एक अद्वितीय टैग सेट करें जिन्हें आप जीवनकाल सेट करना चाहते हैं, फिर प्रत्येक ऑब्जेक्ट के लिए जीवन चक्र कॉन्फ़िगरेशन नियम बनाएं और फ़िल्टर तत्व में आप ऑब्जेक्ट विशिष्ट टैग का उपयोग कर सकते हैं।

यह टैग ऑब्जेक्ट का नाम हो सकता है, इसके अलावा आपके पास ऑब्जेक्ट्स के सबसेट के लिए नियम बनाने की क्षमता है जिसमें सामान्य उपसर्ग नहीं है।

आप जीवन चक्र विन्यास यहाँ http://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html

संबंधित मुद्दे