python - 我可以从 aws s3 恢复下载吗?

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

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

一些文件非常大(250Mb,对于这个场景来说很大)并且网络出现故障并且设备在下载时重新启动。

我想从设备重启时结束的地方继续下载。有什么办法吗?

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

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

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

我正在做的是这样的:

s3 = boto.resource('s3')
session = boto.session.Session(region_name='eu-central-1', profile_name=profile)
s3client = session.client( 's3', config=boto.session.Config(signature_version='s3v4'))
MB = 1024 ** 2

config = TransferConfig(
    multipart_threshold=10*MB,
    num_download_attempts=100)

def upload():
    s3client.upload_file(Filename=localfile, Bucket=bucket, Key=key, Config=config)

def download():
    s3client.download_file(bucket, key, localfile, Config=config )

# upload from server...
upload()

# .... later, from IOT device
download()

最佳答案

我不相信 boto3 有断点续传的功能。

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

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

关于python - 我可以从 aws s3 恢复下载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59125125/

相关文章:

python - 列表理解条件中的 `elif`

python - Pycharm 错误 Django 在此环境中不可导入

python - Azure机器学习工作室可以访问上传zip文件中的文件

python - 使用 S3 网站源的 Cloudfront 对流层模板

c# - Amazon S3 PutObject 非常慢

amazon-s3 - 如何从 Amazon S3 提供 gzip 压缩的 Assets

python - 当我打乱一个 DataFrame 的副本时,为什么原始 DataFrame 也打乱了?

amazon-web-services - CloudWatch 代理无法识别 IAM 角色的存在

ios - AWS 无法订阅 SNS 主题 : CognitoIdentityCredentials is not authorized to perform: SNS:Subscribe

amazon-web-services - 创建向 SNS 主题发送通知的 S3 存储桶