当前位置: 首页 > 知识库问答 >
问题:

boto3.s3.transfer如何处理多部分上传

祁俊拔
2023-03-14

我上传到S3使用以下代码:

config = TransferConfig(multipart_threshold=1024)
transfer= S3Transfer(s3_client, config)
transfer.upload_file(fileadded, bucket, key,callback=ProgressPercentage(file))

我无法了解boto内部如何处理分段上传的任何信息。我对同样的事情有几个问题,让我们假设我有2.5 MB的文件:

  1. 然后文件将分3部分上传,如1,1和.5 MB?
  2. 所有3个部分将并行上传还是按顺序上传?
  3. 在java的aws库中,我们有转移管理器,在博托中有什么类似的东西吗?
  4. 此代码是否足以用于多段上传?因为我遇到了一些复杂的代码示例

任何帮助都将不胜感激。

共有1个答案

戈曾琪
2023-03-14

您的代码是正确的。S3 传输将使用您创建的配置来传输文件。查看有关传输配置的文档,了解您可以设置的参数及其默认值。

要回答您的问题:

  1. 并行,使用线程
  2. boto3在内部使用s3transfer,但通常只使用TransferConfig
  3. 是的
 类似资料:
  • 我将大的zip文件存储在s3存储桶中,因此我想使用python boto3库分块下载它们。 我首先尝试使用方法,但无法仅获取对象的一部分,因此我现在使用方法,该方法支持参数。 然而,在我开始得到零件之前,我无法找到零件的数量。我的意思是,如果我在没有给出零件号的情况下调用get,我会得到以下响应: {'ETag':'493458a23b7d2ed524e8f144aa9e91f4-27','Las

  • 我试图用python写的lambda (aws)完成多部分上传。下面是我正在使用的代码。大约有120个部件,总大小为30GB。下面的操作似乎没有在5分钟内完成,因此lambda关闭,上传似乎没有完成。S3提供异步多部分上传功能吗?我相信这将确保文件得到合并,不管lambda关闭。

  • 问题内容: 我试图弄清楚如何使用boto3进行正确的错误处理。 我正在尝试创建一个IAM用户: 成功调用create_user后,我得到一个整洁的对象,其中包含API调用的http状态代码和新创建的用户的数据。 例: 这很好。但是,如果失败(例如用户已经存在),我只会得到一个类型为botocore.exceptions.ClientError的对象,其中只有文本可以告诉我出了什么问题。 示例:Cl

  • 我正在使用 Amazon S3 分段上传,我读到您可以并行上传部分文件。但是,通过查看文档,我发现亚马逊对上传的文件部件的响应不包含部件号。所以我的问题是,如果我异步上传文件的第1部分和文件的第2部分,那么我检查来自亚马逊的响应,我如何知道响应是引用文件的第1部分还是第2部分? 下面是一个请求和响应的示例。

  • 我正在使用AWS成功地进行身份验证,并在Bucket对象上使用“put_object”方法上载文件。现在,我想使用多部分API来完成对大型文件的访问。我在这个问题中找到了公认的答案:如何使用boto3将S3对象保存到文件中 但是当试图实现时,我得到了“未知的方法”错误。我做错了什么?我的代码在下面。谢谢!

  • python AWS boto3 s3 put_对象应该如何处理/测试错误?例如: 可能出现的错误是否记录在某个地方?下面的页面是否是正确的留档页面(似乎是为客户端,而不是),如果是,错误记录在哪里? http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.put_object 像不存在的bucket这样