我正在使用python boto3库将文件从s3下载到蜂窝连接上的IOT设备,该连接通常很慢且不稳定。
某些文件很大(250Mb,在这种情况下该文件很大),并且网络出现故障,并且下载时设备重新启动。
我想从重新启动设备时结束的地方恢复下载。有什么办法吗?
中止的下载似乎在下载时将下载的数据保存在一个临时文件中,因此数据在那里。
目标是节省数据传输,并使下载更具弹性。
我正在使用分段上传,但本身没有简历。
我正在做的事情是这样的:
/
答案 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'
)