Il download di un grande insieme di dati sul web direttamente in AWS S3
Domanda
Qualcuno sa se è possibile importare un grande insieme di dati in Amazon S3 da un URL?
In sostanza, voglio evitare di scaricare un file enorme e poi reuploading alla S3 attraverso il portale web. Voglio solo di fornire l'URL di download per S3 e attendere per loro di scaricare al loro filesystem. Sembra una cosa facile da fare, ma non riesco proprio a trovare la documentazione su di esso.
Soluzione
Dal momento che si possiede, ovviamente, un AWS conto mi consiglia il seguente:
- Creare un'istanza EC2 (qualsiasi formato)
- wget (o ricciolo) per recuperare il file (s) a tale istanza EC2 . Ad esempio:
wget http://example.com/my_large_file.csv
. - s3cmd
- Usa
s3cmd
per caricare il file da S3. Ad esempio:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv
Dal momento che i collegamenti effettuati tra rete interna vari servizi AWS leva di AWS, caricando da un'istanza EC2 a S3 è abbastanza veloce. Molto più veloce di caricarlo dal proprio computer. In questo modo consente di evitare il download sul computer e risparmio di tempo potenzialmente significativo caricarlo tramite l'interfaccia web.
Altri suggerimenti
-
Avviare un'istanza EC2 con memoria sufficiente
-
ssh per l'istanza
-
Ottenere il comando ricciolo corrispondente al download dal computer locale. È possibile utilizzare le opzioni per sviluppatori in Google Chrome -> scheda di rete -> copia -> Copia come ricciolo (Questo passaggio è necessario per alcuni siti web che richiedono l'autenticazione come kaggle)
-
Dal terminale esempio, eseguire il comando
curl
(accodamento-o output_file
al comando). Questo scaricherà e salvare il file -
Configura AWS credenziali per la connessione all'istanza di s3 (un modo è quello di usare il comando
aws config
, fornire AWS chiave di accesso Id e segreta), -
Utilizzare questo comando per caricare il file s3:
aws s3 cp path-to-file s3://bucket-name/
, consultare la documentazione Aws: http://aws.amazon.com/code ci sono librerie disponibili per la maggior parte dei linguaggi di programmazione. Così si può creare un secchio e configurare nel codice per recuperare i dati da URL e scrittura a questo secchio in S3
per esempio in python:
from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string(url_data)
È possibile montare il vostro S3 secchio per istanza EC2 e poi cd per il percorso / / a / s3_mounted_on_a_folder, non ci si può semplicemente utilizzare il comando:
wget https://your.download.url/
per montare s3 al vostro EC2, uso s3fs.