使用 Boto 在 S3 中读取文件的一部分

Reading part of a file in S3 using Boto

我正在尝试读取存储在 S3 中的 700MB 文件。我怎么只需要位置 73 到 1024 的字节。

我试图找到一个可用的解决方案,但没有成功。如果有人能帮助我,那将是一个很大的帮助。

S3 支持 GET requests using the 'Range' HTTP header,这正是您所追求的。

要在 boto 中指定范围请求,只需添加一个 header 字典,为您感兴趣的字节指定 'Range' 键。改编自 Mitchell Garnaat's response:

import boto
s3 = boto.connect_s3()
bucket = s3.lookup('mybucket')
key = bucket.lookup('mykey')
your_bytes = key.get_contents_as_string(headers={'Range' : 'bytes=73-1024'})
import boto3

obj = boto3.resource('s3').Object('mybucket', 'mykey')
stream = obj.get(Range='bytes=32-64')['Body']
print(stream.read())

来自 https://github.com/boto/boto3/issues/1236

的 boto3 版本

请在此处查看 python 脚本

import boto3
region = 'us-east-1' # define your region here
bucketname = 'test'  # define bucket
key = 'objkey' # s3 file 
Bytes_range = 'bytes=73-1024'
client = boto3.client('s3',region_name = region)
resp = client.get_object(Bucket=bucketname,Key=key,Range=Bytes_range)
data = resp['Body'].read()