我可以从AWS s3恢复下载吗?

时间:2019-12-01 11:37:42

标签: python amazon-web-services amazon-s3 boto3

我正在使用python boto3库将文件从s3下载到蜂窝连接上的IOT设备,该连接通常很慢且不稳定。

某些文件很大(250Mb,在这种情况下该文件很大),并且网络出现故障,并且下载时设备重新启动。

我想从重新启动设备时结束的地方恢复下载。有什么办法吗?

中止的下载似乎在下载时将下载的数据保存在一个临时文件中,因此数据在那里。

目标是节省数据传输,并使下载更具弹性。

我正在使用分段上传,但本身没有简历。

我正在做的事情是这样的:

/

2 个答案:

答案 0 :(得分:1)

从终端,您可以使用aws s3api对s3进行较低级别的访问。

size=$(stat myfile.zip); aws s3api get-object --bucket BUCKETNAME --key myfile.zip --range "bytes=$size-" myfile.part; cat myfile.part >> myfile.zip

我认为您可以通过python调用此命令。不太难。

答案 1 :(得分:0)

我不相信boto3具有可恢复的下载功能。

您可以通过使用远程获取来实现自己。使用head_object查找对象的大小,然后将其划分为N个范围,分别下载(可能是K个块,具体取决于您的硬件),将它们作为块存储在本地文件系统中,然后重新所有块完成后,将它们组合成最终下载文件。

response = client.get_object(
    Bucket='mybucket',
    Key='mykey',
    Range='bytes=10001-20000'
)