我在要流式传输到某个远程目标的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控制台上传的。
为什么第一个范围特别是在正常读取其他范围时会返回此异常?确认访问密钥和秘密密钥相同。