Как установить параметр `--expected-size` в` boto3.client ('s3'). Upload_fileobj () `? - PullRequest
0 голосов
/ 12 ноября 2018

Поскольку существует возможность установить аргумент --expected-size в aws s3 cp , чтобы обеспечить успешную загрузку файлов / данных размером более 5 ГБ, как это можно установить в его Python-версии: boto3 upload_fileobj ?

Я пытаюсь загрузить резервную копию базы данных как поток данных на S3, не сохраняя ее на диск, но в середине процесса происходит сбой из-за InvalidArgument: Part number must be an integer between 1 and 10000, inclusive.

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

Пример CLI AWS:

innobackupex --stream=xbstream --compress /backup \
    | aws s3 cp - s3://backups/backup2018112 --expected-size=1099511627776

Пример Boto3:

import subprocess
import boto3

innobackupexProc = subprocess.Popen([
    'innobackupex',
    '--stream=xbstream',
    '--compress',
    '/backup'
], stdout=subprocess.PIPE)

s3 = boto3.client('s3')
with innobackupexProc.stdout as dataStream:
    s3.upload_fileobj(dataStream, 'backups', 'backup2018112')
...