Загрузка большого набора данных в Интернете непосредственно в AWS S3
Вопрос
Кто -нибудь знает, возможно ли импортировать большой набор данных в Amazon S3 из URL?
По сути, я хочу избежать загрузки огромного файла, а затем перезагружать его в S3 через веб -портал. Я просто хочу предоставить URL -адрес загрузить URL на S3 и подождать, пока они загружают его в свою файловую систему. Кажется, это легко сделать, но я просто не могу найти документацию на ней.
Решение
Поскольку вы, очевидно, обладают аккаунтом AWS, я бы порекомендовал следующее:
- Создайте экземпляр EC2 (любой размер)
- Использовать wget(или скрутите), чтобы принести файл (ы) в этот экземпляр 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 довольно быстрая. Гораздо быстрее, чем загружать его с собственного компьютера. Таким образом, позволяет избежать загрузки файла на ваш компьютер и сохранять потенциально значительную загрузку времени, загружая его через веб -интерфейс.
Другие советы
Запустите экземпляр EC2 с достаточным количеством хранения
SSH в экземпляр
Получите команду Curl, соответствующую загрузке с вашей локальной машины. Вы можете использовать параметры разработчика в Google Chrome -> Вкладка «Сеть» -> Копировать -> Скопировать в качестве curl (этот шаг необходим для некоторых веб -сайтов, требующих аутентификации, такой как Kaggle)
Из терминала экземпляра запустите
curl
Команда (добавление-o output_file
к команде). Это загрузит и сохранит файлНастройка учетных данных AWS для подключения экземпляра к S3 (одним из способов является использование команды
aws config
, предоставить идентификатор ключа и секрета ключа AWS),Используйте эту команду, чтобы загрузить файл в S3:
aws s3 cp path-to-file s3://bucket-name/
См. Документацию 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)
Вы можете установить свое ведро S3 в экземпляр EC2, а затем CD в/path/to/s3_mounted_on_a_folder, вы можете просто использовать команду:
wget https://your.download.url/
Чтобы установить S3 до EC2, используйте S3FS.