У меня есть файл размером 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.
Почему первый диапазон, в частности, возвращает это исключение, тогда как другие читаются нормально?Ключ доступа и секретный ключ подтверждаются одинаковыми.