2013-06-10 8 views
7

पर फ़ाइल सफलतापूर्वक अपलोड की गई है, वर्तमान में मैं अमेज़ॅन वेब सर्विसेज (एडब्लूएस) का उपयोग कर रहा हूं और एस 3 बाल्टी खोलने के लिए, ईसी 2 में एक निर्देशिका में अपनी सामग्री को सहेजता हूं, फिर मैं एक टैर फ़ाइल बनाता हूं सब कुछ जो उस निर्देशिका में है और उस टैर फ़ाइल को एडब्ल्यूएस ग्लेशियर को दबाएं। आखिरी कदम जिसे मैं पूरा करने की कोशिश कर रहा था, स्क्रिप्ट को समाप्त करना था जब टैर फ़ाइल सफलतापूर्वक एडब्ल्यूएस ग्लेशियर (जिसे 3-5 घंटे लगते हैं) पर अपलोड किया गया था।बोटो का उपयोग करके यह बताने के लिए कि ग्लेशियर

वर्तमान में मैं archive_id को कैसे ले सकता हूं और टैर फ़ाइल सफलतापूर्वक लोड होने पर वॉल्ट से पूछता हूं।

एडब्ल्यूएस ग्लेशियर के साथ बातचीत करने के लिए मैं पायथन बोटो टूल का उपयोग कर रहा हूं। मैंने पाइथन \ boto कोड शामिल किया है जो फ़ाइल को ग्लेशियर में अपलोड करता है और कुछ त्वरित परीक्षणों को मैंने यह पता लगाने के लिए चलाने की कोशिश की है कि कोड सफलतापूर्वक अपलोड हो गया है या नहीं। अब तक सभी परीक्षण झूठे लौटते हैं।

मैंने स्थिति_code के बारे में कुछ परीक्षणों को छोड़ दिया जो सबकुछ के लिए झूठी वापसी भी कर रहा था और जब मैं इनमें से किसी को मुद्रित करने की कोशिश करता हूं केवल पूरा नहीं हुआ और प्रगति (जैसा कि उम्मीद है) कुछ भी प्रिंट करता है, फिर भी जब मैं कोशिश करता हूं archive_id या retrieve_job से मेल खाने के लिए नौकरियों की सूची में क्या लौटाया जाता है, मुझे कोई मिलान नहीं मिलता है। एक अतिरिक्त नोट सूचियां है कि इन्हें मुद्रित होने पर सहेजा जाता है, वे सभी समान होते हैं (नौकरी (arn: aws: glacier: us-east-1: 232412618534: vaults/glacier-poc))

वापस कैसे करें जब काम पूरा हो जाता है तो सच है?

import boto 
    import sys 

    ACCESS_KEY_ID = "..." 
    SECRET_ACCESS_KEY = "..." 
    FILENAME = sys.argv[1] 
    GLACIER_VAULT_NAME = sys.argv[2] 

    connection = boto.connect_glacier(aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=SECRET_ACCESS_KEY) 

    vault = connection.get_vault(GLACIER_VAULT_NAME) 

    archive_id = vault.upload_archive(FILENAME) 

    open("glacier.txt", "a").write(FILENAME + " " + archive_id + "\n") 

    retrieve_job = vault.retrieve_archive(archive_id) 

    a = vault.list_jobs(completed=True) 
    b = vault.list_jobs(completed=False) 

    print "Is In Completed List" 
    print archive_id in a 
    print "Is In NOT Completed List" 
    print archive_id in b 

    print "Is In Completed List" 
    print retrieve_job in a 
    print "Is In NOT Completed List" 
    print retrieve_job in b 

उत्तर

4

इस Boto and Glacier guide पर एक नजर डालें, या तो आप इसे मैन्युअल रूप से मतदान कर सकते हैं Boto से या आप को आपको सूचित करने का काम किया जाता है अमेज़न सरल अधिसूचना सेवा स्थापित कर सकते हैं।

archive_id = vault.upload_archive("mybackup.tgz") 
retrieve_job = vault.retrieve_archive(archive_id) 

# if the job is in progress 
job_id = retrieve_job.id 
retrieve_job = vault.get_job(job_id) 

if retrieve_job.completed: 
    job.download_to_file("mybackup.tgz") 

आप Boto set_vault_notifications समारोह एसएनएस सूचनाएं सेट का उपयोग कर सकते हैं।

notification_config = {'SNSTopic': 'my_notification_topic', 
         'Events': ['ArchiveRetrievalCompleted', 
            'InventoryRetrievalCompleted']} 
vault.set_vault_notifications(vault, notification_config) 

Here SQS कतार सेवा करने के लिए एसएनएस अधिसूचना सदस्यता की स्थापना करके एक अपलोड के लिए इंतज़ार कर की एक व्यापक उदाहरण है।

+0

इसलिए मुझे यकीन नहीं है कि मुझे इसके साथ समस्या क्यों है। जब मैं यह देखने की कोशिश कर रहा हूं कि यह देखने के लिए कि क्या यह पूरा हो गया है, तो मैंने इसे थोड़ी देर तक लूप में डाल दिया जब तक कि यह नहीं मिला कि retrieve_job.completed सच हो गया। अब तक मैंने 3 या 4 अलग-अलग तरीकों की कोशिश की है और मुझे कोई सफलता नहीं मिली है। कोई उपयोगी टिप्स? मैं इसे डाउनलोड करने की कोशिश नहीं कर रहा हूं, बस यह देखने के लिए जांचें कि यह अभी भी है या नहीं –

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