Как в Ruby поблочно загружать большой файл на S3, предварительно закодировав его в Base64?

Необходимо загрузить большой медиа-файл (больше доступной RAM) на хранилище S3, предварительно закодировав его в Base64.

Помогите оптимизировать код на Ruby так, чтобы чтение файла, кодирование в Base64 и последующая загрузка на S3 были выполнены поблочно.
blob = StringIO.new( Base64.encode64( IO.binread('big_file.mp4')), 'rb' )
      ...
      @client.put_object(
        bucket: @s3_bucket.name,
        key: target_name,
        body: blob,
        acl: 'public-read'
      )

В документации Base64.encode64 нет возможности обрабатывать файловый поток поблочно. Есть какие-то трюки?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@c0va23
Backend-разработчик
Официальный клиент S3 для Ruby умеет заливать файлы чанками (по крайне мере так говорит документация).

docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/S3Obj... (секция Uploading Files)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы