【问题标题】:Boto3: Verify if the file has been uploaded using upload_file()Boto3:使用upload_file()验证文件是否已上传
【发布时间】:2016-06-01 22:56:16
【问题描述】:

我正在使用 boto3 制作备份脚本,并使用此行上传项目:

bucket.upload_file(backup_file_name,bucket_path+backup_file_name)

如何验证此文件是否确实已上传到我的存储桶?我尝试使用 boto3 doc 查找内容,但没有找到任何内容。这个方法会抛出任何我可以处理的异常吗?

【问题讨论】:

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


    【解决方案1】:

    它将引发boto3.exceptions.S3UploadFailedError。您还可以发出head_object 请求来验证对象是否看起来像它应该的那样。如果对象不存在,这将引发带有代码404botocore.ClientError

    【讨论】:

    • 我刚刚检查了exceptions file,但“S3UploadFailedError”似乎是空的,它只是一个没有实现的 Boto3Error 子类......我是 python 新手,所以我可能误解了这一点。但是我会尝试使用 head_object
    • @Chittolina 如果传输失败,则会引发异常。请参阅来源here。如果你不相信干净的回报,那么 head_object 就是要走的路。
    【解决方案2】:

    检查的方法很少。首先,您应该始终为您的文件制作 sha256 哈希。上传时,请记住将此信息放在对象上传脚本的 Meta 部分中。

    • 读取整个文件,从标头元数据中检索 sha256,然后重新计算必须检查它的计数。
    • 为 PUT 上的存储桶添加事件。文件成功上传后,将事件发送到您可以检查的队列。因此,在成功上传但您的程序随后崩溃时,您仍然有一个回退,而不是再次重新上传文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多