仅在读取对象的第一个字节范围时使用boto3 AWS S3签名错误,可以正常读取以下部分

时间:2018-12-14 20:55:34

标签: amazon-s3 boto3 boto

我在要流式传输到某个远程目标的S3存储桶上有一个7 GB的文件。为了利用带宽,我决定同时读取文件的不同范围:

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”会返回异常:

  调用GetObject操作时

(SignatureDoesNotMatch):我们计算出的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。

该文件是使用Chrome和AWS控制台上传的。

为什么第一个范围特别是在正常读取其他范围时会返回此异常?确认访问密钥和秘密密钥相同。

0 个答案:

没有答案