使用 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())
的 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()
我正在尝试读取存储在 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())
的 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()