在 s3 中复制密钥时,boto3 会执行 GET 然后执行 PUT 吗?

Does boto3 do a GET and then a PUT when copying a key within s3?

情况如下: 我们正在使用数据加载服务从 s3 中的目录中提取大约 1TB 的 json 文件。我们希望将这些文件分批加载到摄取目录中,这样我们的加载服务就不会不堪重负。我们正在使用使用 boto3 客户端复制方法的本地 python 脚本进行批处理。这是来自 boto3 文档的示例:

import boto3
s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 'mybucket',
    'Key': 'mykey'
}
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')

使用 boto3's copy method 时,是否有任何理由认为客户端正在下载与密钥关联的文件,然后将 PUT 放入新的 otherbucket/otherkey 位置?

我知道 s3 中的任何操作都是收费的,所以我基本上是在努力确保我们不会为这些操作付费,并且我们不会那样浪费我们自己的带宽.

这是一个PUT+Copy。它是发送到目标存储桶的单个请求,指定源存储桶和对象。

它不是 download/upload,但您仍然需要为针对目标存储桶的 PUT 请求以及目标存储桶发送到源存储桶的 GET 请求付费获取内容。

数据在S3内部传输,所以它不占用你的互联网带宽,但是如果源和目标存储桶在不同的区域,源存储桶是按跨区域带宽计费的。此费用低于 "out to the Internet" 带宽费用。

参见:Copying Objects in a Single Operation