Использование boto3 Ошибка подписи AWS S3 только при чтении первого байтового диапазона объекта, следующие части читаются нормально - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть файл размером 7 ГБ в корзине S3, который я передаю в удаленный пункт назначения.Чтобы использовать пропускную способность, я решил читать разные диапазоны файла одновременно:

part_object = src_s3.get_object(Bucket=src_bucket, Key=file_name, Range=value)
content = part_object['Body'].read()

Мой клиент s3 был определен как:

    src_s3 = boto3.client('s3', 
                    verify=False,
                    aws_access_key_id = src_access_key,
                    aws_secret_access_key = src_secret_key
                    )

Просто независимый процесс выполняет вышеуказанный кодв различных значениях Range от:

from "bytes=0-1048576000"..other byte ranges to... "bytes=7340032001-7887465984"

Я столкнулся со странным поведением, когда все процессы могут правильно прочитать назначенные им диапазоны, за исключением первого диапазона "bytes = 0-1048576000", где он возвращает исключение:

(SignatureDoesNotMatch) при вызове операции GetObject: рассчитанная нами подпись запроса не соответствует предоставленной вами подписи.Проверьте свой ключ и метод подписи.

Файл был загружен с использованием Chrome и консоли AWS.

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

...