ウェブ上の大きなデータセットをAWS S3に直接ダウンロードする


12

大規模なデータセットをURLからAmazon S3にインポートできるかどうか誰かが知っていますか?

基本的に、私は巨大なファイルをダウンロードして、それをWebポータルからS3に再アップロードしないようにします。ダウンロードURLをS3に提供し、ファイルシステムにダウンロードされるのを待ちたいだけです。簡単なことのように思えますが、ドキュメントが見つかりません。


いい質問ですね。
Pramit

回答:


10

あなたは明らかにAWSアカウントを持っているので、私は以下をお勧めします:

  • EC2インスタンスを作成する(任意のサイズ)
  • wget(またはcurl)を使用して、そのEC2インスタンスにファイルをフェッチします。次に例を示します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へのアップロードはかなり高速です。自分のコンピュータからアップロードするよりもはるかに高速です。この方法により、ファイルをコンピューターにダウンロードする必要がなくなり、Webインターフェースを介してファイルをアップロードする時間を大幅に節約できます。


ありがとうございました。私はこのようなものを考えていましたが、もっと簡単な方法があるかどうか周りに尋ねたかったです。すべての手順も指摘していただきありがとうございます。非常に役立った
ウィル・シュテデン

@Daniel Zohar URLが動的な場合はどうなりますか?wgetのを使用すると、ファイルをダウンロードしますが、このリンクを持つ唯一のページはありません: cms.unov.org/UNCorpus/en/Download?file=UNv1.0.en-zh.tar.gz.00
echan00

3
  1. 十分なストレージがあるEC2インスタンスを起動する

  2. インスタンスにssh

  3. ローカルマシンからのダウンロードに対応するcurlコマンドを取得します。Google Chromeの開発者向けオプションを使用できます->ネットワークタブ->コピー->カールとしてコピー(このステップは、Kaggleなどの認証を必要とする一部のWebサイトで必要です)

  4. インスタンスターミナルからcurlコマンドを実行します(コマンドに追加-o output_fileします)。これはファイルをダウンロードして保存します

  5. インスタンスをs3に接続するaws資格情報を構成します(1つの方法は、コマンドを使用してaws config、AWSアクセスキーIDとシークレットを提供することです)。

  6. 次のコマンドを使用して、ファイルをs3にアップロードします。

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

2

Awsのドキュメントを参照してください。http://aws.amazon.com/code ほとんどのプログラミング言語で使用できるライブラリがあります。したがって、バケットを作成し、コードからURLからデータをフェッチしてs3でこのバケットに書き込むように構成できます

たとえばpythonの場合:

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

参照:https : //boto.readthedocs.org/en/latest/s3_tut.html


これは完全に正しいとは思いません。url_dataがどこから来るのか私は少し不明確です。ドキュメントから、k.set_contents_from_string()は、文字通り、ファイル「foobar」の内容をその文字列に含まれているものに設定しているようです。ローカルにダウンロードする必要なく、そのURLのコンテンツを直接s3にプッシュしたい。
シュテデン氏、2015

1

s3バケットをec2インスタンスにマウントしてから、/ path / to / s3_mounted_on_a_folderにcdすると、次のコマンドを使用できます。

wget https://your.download.url/

ec3にs3をマウントするには、s3fsを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.