वेब पर एक बड़े डेटासेट को सीधे AWS S3 में डाउनलोड करना


12

क्या किसी को पता है कि क्या अमेजन S3 में बड़े डेटासेट को URL से आयात करना संभव है?

असल में, मैं एक बड़ी फ़ाइल डाउनलोड करने से बचना चाहता हूं और फिर वेब पोर्टल के माध्यम से इसे S3 में पुनः लोड कर रहा हूं। मैं केवल डाउनलोड URL को S3 में आपूर्ति करना चाहता हूं और उनके फाइल सिस्टम पर इसे डाउनलोड करने की प्रतीक्षा करता हूं। यह एक आसान काम करने जैसा लगता है, लेकिन मैं अभी इस पर प्रलेखन नहीं पा सकता हूं।


बड़ा सवाल है।
प्रीतित

जवाबों:


10

चूंकि आप स्पष्ट रूप से AWS खाता रखते हैं, इसलिए मैं निम्नलिखित की सिफारिश करूंगा:

  • EC2 इंस्टेंस बनाएं (किसी भी आकार)
  • उस EC2 उदाहरण में फ़ाइल (ओं) को लाने के लिए wget (या कर्ल) का उपयोग करें । उदाहरण के लिए wget http://example.com/my_large_file.csv:।
  • S3cmd स्थापित करें
  • s3cmdफ़ाइल को S3 पर अपलोड करने के लिए उपयोग करें । उदाहरण के लिए:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv

चूंकि विभिन्न AWS सेवाओं के बीच किए गए कनेक्शन AWS के आंतरिक नेटवर्क का लाभ उठाते हैं, EC2 उदाहरण से S3 में अपलोड करना बहुत तेज़ है। इसे अपने कंप्यूटर से अपलोड करने से बहुत तेज़ है। इस तरह से आप अपने कंप्यूटर पर फ़ाइल डाउनलोड करने से बच सकते हैं और वेब इंटरफ़ेस के माध्यम से इसे अपलोड करने में संभावित रूप से महत्वपूर्ण समय बचा सकते हैं।


धन्यवाद। मैं कुछ इस तरह का विचार कर रहा था, लेकिन मैं यह देखने के लिए पूछना चाहता था कि क्या कोई आसान तरीका है। सभी चरणों को इंगित करने के लिए धन्यवाद। बहुत मददगार
स्टेडन

@Daniel Zohar क्या होगा यदि URL डायनामिक है? Wget
echan00

3
  1. पर्याप्त भंडारण के साथ EC2 इंस्टेंस लॉन्च करें

  2. उदाहरण के लिए ssh

  3. अपने स्थानीय मशीन से डाउनलोड के अनुरूप कर्ल कमांड प्राप्त करें। आप Google क्रोम में डेवलपर विकल्पों का उपयोग कर सकते हैं -> नेटवर्क टैब -> कॉपी -> कॉपी कर्ल के रूप में (यह कदम कुछ वेबसाइटों के लिए आवश्यक है जो प्रमाणीकरण की आवश्यकता होती है जैसे कि कागल)

  4. उदाहरण टर्मिनल से, curlकमांड चलाएं (कमांड को जोड़ें -o output_file)। यह फ़ाइल को डाउनलोड और सेव करेगा

  5. उदाहरणों को s3 से कनेक्ट करने के लिए aws क्रेडेंशियल कॉन्फ़िगर करें (कमांड का उपयोग करने का एक तरीका है aws config, AWS पहुंच कुंजी आईडी और गुप्त प्रदान करें),

  6. फ़ाइल को s3 में अपलोड करने के लिए इस कमांड का उपयोग करें:

    aws s3 cp path-to-file s3://bucket-name/
    

2

Aws प्रलेखन देखें: http://aws.amazon.com/code अधिकांश प्रोग्रामिंग भाषाओं के लिए पुस्तकालय उपलब्ध हैं। तो आप एक बाल्टी बना सकते हैं और अपने कोड में url से डेटा लाने के लिए कॉन्फ़िगर कर सकते हैं और इस बाल्टी को s3 में लिख सकते हैं

उदाहरण के लिए अजगर में:

from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string(url_data)

Ref: https://boto.readthedocs.org/en/latest/s3_tut.html


मुझे नहीं लगता कि यह काफी सही है। मैं थोड़ा स्पष्ट नहीं हूं कि url_data कहां से आएगा। प्रलेखन से, k.set_contents_from_string () उस स्ट्रिंग में जो कुछ भी निहित है, फाइल की सामग्री को 'फोबार' के लिए काफी शाब्दिक रूप से निर्धारित करता है। मैं चाहता हूं कि स्थानीय स्तर पर डाउनलोड किए बिना उस url की सामग्री को सीधे s3 में धकेल दिया जाए।
बजे विल स्टेडन

1

आप अपने s3 बाल्टी को ec2 उदाहरण में माउंट कर सकते हैं और फिर cd / path / to / s3_mounted_on_a_folder पर जा सकते हैं, वहां आप बस कमांड का उपयोग कर सकते हैं:

wget https://your.download.url/

अपने ec2 पर s3 माउंट करने के लिए, s3fs का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.