Web üzerinde büyük bir veri kümesini doğrudan AWS S3'e indirme


12

Bir URL'den büyük bir veri kümesini Amazon S3'e aktarmanın mümkün olup olmadığını bilen var mı?

Temel olarak, büyük bir dosyayı indirmekten ve ardından web portalı üzerinden S3'e yeniden yüklemekten kaçınmak istiyorum. Sadece indirme URL'sini S3'e vermek ve dosya sistemlerine indirmelerini beklemek istiyorum. Yapması kolay bir şey gibi görünüyor, ancak üzerindeki belgeleri bulamıyorum.


Harika bir soru.
Pramit

Yanıtlar:


10

Açıkçası bir AWS hesabına sahip olduğunuz için aşağıdakileri tavsiye ederim:

  • EC2 örneği oluşturma (herhangi bir boyut)
  • Kullanım wget (veya bükme) o EC2 örneğine dosya (lar) getirilemedi. Örneğin: wget http://example.com/my_large_file.csv.
  • S3cmd yükleyin
  • s3cmdDosyayı S3'e yüklemek için kullanın . Örneğin:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv

Çeşitli AWS hizmetleri arasında yapılan bağlantılar AWS'nin dahili ağını kullandığından, bir EC2 örneğinden S3'e yükleme oldukça hızlıdır. Kendi bilgisayarınızdan yüklemekten çok daha hızlı. Bu şekilde, dosyayı bilgisayarınıza indirmekten ve web arayüzü üzerinden yükleme yaparken önemli ölçüde zaman tasarrufu yapmanıza izin vermezsiniz.


Teşekkür ederim. Böyle bir şey düşünüyordum, ama daha kolay bir yol olup olmadığını görmek için etrafta sormak istedim. Tüm adımları da işaret ettiğiniz için teşekkür ederiz. Çok yararlı
Stedden

@Daniel Zohar URL dinamikse ne olur? Wget kullanmak dosyayı indirmez
echan00

3
  1. Yeterli depolama alanına sahip bir EC2 örneği başlatın

  2. örneğe ssh

  3. Yerel makinenizden indirmeye karşılık gelen kıvırma komutunu edinin. Google chrome -> ağ sekmesi -> kopyala -> kıvrılma olarak kopyala (bu adım kaggle gibi kimlik doğrulaması gerektiren bazı web siteleri için gereklidir) geliştirici seçeneklerini kullanabilirsiniz.

  4. Örnek terminalinden curlkomutu çalıştırın ( komuta ekleyin -o output_file). Bu dosyayı indirir ve kaydeder

  5. Aws kimlik bilgilerini örneği s3'e bağlamak için yapılandırın (bir yol komutu kullanmak, aws configAWS erişim anahtarı kimliği ve sırrı sağlamaktır),

  6. Dosyayı s3'e yüklemek için bu komutu kullanın:

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

2

Aws belgelerine bakın: http://aws.amazon.com/code Programlama dillerinin çoğu için kullanılabilir kütüphaneler vardır. Böylece bir grup oluşturabilir ve kodunuzda url'den veri alacak ve s3'te bu gruba yazacak şekilde yapılandırabilirsiniz

örneğin python'da:

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


Bunun doğru olduğunu düşünmüyorum. Url_data'nın nereden geleceği konusunda biraz emin değilim. Dokümantasyondan, k.set_contents_from_string () kelimesi 'foobar' dosyasının içeriğini tam olarak bu dizede bulunanlara ayarlamış gibi görünüyor. Bu URL'deki içeriğin yerel olarak indirilmesine gerek kalmadan doğrudan s3'e aktarılmasını istiyorum.
Aralık'ta Stedden

1

S3 grubunuzu ec2 örneğine bağlayabilir ve sonra / path / to / s3_mounted_on_a_folder'a cd atabilirsiniz, burada komutu kullanabilirsiniz:

wget https://your.download.url/

s3'ü ec2'nize bağlamak için s3fs kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.