Загрузите 20 миллионов изображений в корзину S3, используя URL - PullRequest
0 голосов
/ 26 марта 2020

Я хочу загрузить 20 миллионов изображений в корзину S3. Я использую следующий код.

s3.putObject(objectParams, (err, data) => {
            if (err) {
              reject(err);
            } else {
              resolve(data);
            }

У меня есть URL облачных изображений, которые я использую, и я хочу загрузить эти изображения в S3.

Какой самый быстрый способ сделать это? В настоящее время я запускаю этот код последовательно, но это займет много времени. Можно ли запустить его быстрее с помощью rest api?

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 26 марта 2020

Лично я бы сделал следующее:

  • Напишите AWS Лямбда-функцию , которая принимает URL, затем для каждого URL:
    • Загрузите файл (Макс. временное хранилище = 512 МБ)
    • Загрузить файл на S3
    • Удалить локальный (временный) файл
  • Создать Amazon Очередь SQS и ее настройка для запуска функции Lambda при получении сообщений (одновременная передача до 10 сообщений)
  • Запись небольшого сценария для pu sh URL-адресов в SQS queue

При этом многие лямбда-функции будут запускаться параллельно (ограничение по умолчанию составляет 1000 одновременных функций), которые будут копировать файлы для вас.

Единственная проблема будет, если размер файлов превышает 512 МБ, то есть размер временного хранилища, предоставляемого Lambda.

...