【发布时间】:2021-12-26 11:03:25
【问题描述】:
BOTO3 S3 文件copy 是阻塞还是非阻塞?我也可以在复制期间向目标对象添加额外的元数据。
【问题讨论】:
标签: amazon-web-services amazon-s3 boto3
BOTO3 S3 文件copy 是阻塞还是非阻塞?我也可以在复制期间向目标对象添加额外的元数据。
【问题讨论】:
标签: amazon-web-services amazon-s3 boto3
它正在阻塞。我不是从文档中了解到这一点的,而是通过查看 source code for TransferManager,这是起作用的。
如果您想为目标提供新的元数据,请使用ExtraArgs 参数。请注意,支持的参数是有限的,并且名称与您预期的不同(例如,ContentType 而不是 Content-Type)。
但是,我不建议您使用copy(),因为它通过将文件下载到您的客户端然后上传来工作。这会导致延迟、出错的可能性,并可能增加数据传输的成本。
相反,如果您要在 S3 上复制文件,请使用 copy_object()。您仍需支付数据传输费用,但副本将完全在 S3 内执行,因此速度要快得多。
【讨论】:
upload_part_copy() 而不是upload_part()。我认为在复制时使用尽可能大的部分大小是有意义的,这与上传不同(重试和获得反馈的能力通常比较低带宽的连接更重要)。