使用boto3将文件上传到S3时,file_upload()和put_object()之间的区别是什么

时间:2017-05-02 13:40:02

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

我正在使用boto3并尝试上传文件。如果有人在 boto3 中解释file_upload()put_object() s3 bucket 方法之间的确切差异,将会有所帮助吗?

  • 有没有性能差异?
  • 其中是否有人在幕后处理分段上传功能?
  • 两者的最佳用例是什么?

2 个答案:

答案 0 :(得分:10)

#![cfg_attr(my_feature_name_i_made_up, windows_subsystem = "windows")] 方法由S3传输管理器处理,这意味着如果需要,它将在幕后自动处理多部分上传。

upload_file方法直接映射到低级别的S3 API请求。它不会为您处理分段上传。它将尝试在一个请求中发送整个正文。

答案 1 :(得分:1)

我觉得可能需要注意的另一个区别是upload_file()API允许您使用回调函数来跟踪上传。您可以here进行检查。

正如boto的创建者@garnaat所提到的那样,upload_file()在幕后使用了多个部分,因此它不能直接检查端到端文件的完整性(存在一种方法),但是put_object()可以一次上传整个文件(上限为5GB),通过传递已经作为put_object()API中的参数提供的Content-MD5,更易于检查完整性。