Завантаження великого набору даних в Інтернеті безпосередньо в AWS S3


12

Хтось знає, чи можна імпортувати великий набір даних в Amazon S3 з URL-адреси?

В основному я хочу уникати завантаження величезного файлу, а потім перезавантаження його на S3 через веб-портал. Я просто хочу надати URL-адресу завантаження на S3 і чекати, коли вони завантажать його у свою файлову систему. Здається, це легко зробити, але я не можу знайти документацію на нього.


Чудове запитання.
Праміт

Відповіді:


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 відбувається досить швидко. Набагато швидше, ніж завантажувати його з власного комп’ютера. Цей спосіб дозволяє уникнути завантаження файлу на комп'ютер і заощадити потенційно значущий час для завантаження його через веб-інтерфейс.


Дякую. Я думав про щось подібне, але хотів поцікавитися, чи є простіший шлях. Дякуємо, що також вказали на всі кроки. Дуже корисно
Уїлл Стедден

@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 -> вкладка мережі -> copy -> копіювати як curl (цей крок необхідний для деяких веб-сайтів, які потребують автентифікації, наприклад, kaggle)

  4. З терміналу екземпляра запустіть curlкоманду (додайте -o output_fileдо команди). Це завантажить і збереже файл

  5. Налаштування aws-облікових даних для підключення примірника до s3 (один із способів - використання команди aws config, надання ключа доступу та секрету AWS),

  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, не потребуючи завантаження локально.
Буде Стідден

1

Ви можете встановити своє відро s3 до екземпляра ec2, а потім перейти в папку / path / to / s3_mount_on_a_a, там ви просто можете скористатися командою:

wget https://your.download.url/

щоб встановити s3 на ваш ec2, використовуйте s3fs.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.