Mengunduh dataset besar di web langsung ke AWS S3

12

Adakah yang tahu apakah mungkin mengimpor set data besar ke Amazon S3 dari URL?

Pada dasarnya, saya ingin menghindari mengunduh file besar dan kemudian mengunggahnya kembali ke S3 melalui portal web. Saya hanya ingin menyediakan URL unduhan ke S3 dan menunggu mereka mengunduhnya ke sistem file mereka. Sepertinya ini hal yang mudah dilakukan, tetapi saya tidak dapat menemukan dokumentasinya.

Will Stedden
sumber
Pertanyaan yang bagus
Pramit

Jawaban:

10

Karena Anda jelas memiliki akun AWS, saya akan merekomendasikan yang berikut ini:

  • Buat instance EC2 (ukuran apa pun)
  • Gunakan wget (atau curl) untuk mengambil file ke instance EC2. Sebagai contoh: wget http://example.com/my_large_file.csv.
  • Instal s3cmd
  • Gunakan s3cmduntuk mengunggah file ke S3. Sebagai contoh:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv

Karena koneksi yang dibuat antara berbagai layanan AWS memanfaatkan jaringan internal AWS, mengunggah dari instance EC2 ke S3 cukup cepat. Jauh lebih cepat daripada mengunggahnya dari komputer Anda sendiri. Dengan cara ini Anda dapat menghindari mengunduh file ke komputer dan menghemat waktu pengunggahan yang signifikan melalui antarmuka web.

Daniel Zohar
sumber
Terima kasih. Saya sedang merenungkan sesuatu seperti ini, tetapi saya ingin bertanya-tanya untuk melihat apakah ada cara yang lebih mudah. Terima kasih telah menunjukkan semua langkah juga. Sangat membantu
Will Stedden
@Daniel Zohar Bagaimana jika URL itu dinamis? Menggunakan wget tidak mengunduh file tetapi hanya halaman dengan tautan ini: cms.unov.org/UNCorpus/en/Download?file=UNv1.0.en-zh.tar.gz.00
echan00
3
  1. Luncurkan instance EC2 dengan penyimpanan yang cukup

  2. ssh ke instance

  3. Dapatkan perintah curl yang sesuai dengan unduhan dari mesin lokal Anda. Anda dapat menggunakan opsi pengembang di Google chrome -> tab jaringan -> salin -> salin sebagai ikal (langkah ini diperlukan untuk beberapa situs web yang memerlukan otentikasi seperti kaggle)

  4. Dari terminal instance, jalankan curlperintah (tambahkan -o output_fileke perintah). Ini akan mengunduh dan menyimpan file

  5. Konfigurasikan kredensial aws untuk menghubungkan instance ke s3 (salah satu caranya adalah dengan menggunakan perintah aws config, berikan ID kunci akses AWS dan rahasia),

  6. Gunakan perintah ini untuk mengunggah file ke s3:

    aws s3 cp path-to-file s3://bucket-name/
    
MNassar
sumber
2

Lihat dokumentasi Aws: http://aws.amazon.com/code ada perpustakaan yang tersedia untuk sebagian besar bahasa pemrograman. Jadi Anda dapat membuat ember dan mengonfigurasi dalam kode Anda untuk mengambil data dari url dan menulis ke ember ini di s3

untuk eg dengan python:

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

Sreejithc321
sumber
Saya pikir ini tidak benar. Saya sedikit tidak jelas tentang dari mana url_data akan datang. Dari dokumentasi, k.set_contents_from_string () tampaknya benar-benar mengatur isi file 'foobar' untuk apa pun yang terkandung dalam string itu. Saya ingin konten di url itu didorong langsung ke s3 tanpa perlu diunduh secara lokal.
Will Stedden
1

Anda dapat memasang ember s3 ke instance EC2 dan kemudian cd ke / path / ke / s3_mounted_on_a_folder, di sana Anda cukup menggunakan perintah:

wget https://your.download.url/

untuk memasang s3 ke EC2 Anda, gunakan s3fs.

Tanmay Gautam
sumber