1

我正在尝试从一个存储桶复制到另一个存储桶,每个存储桶都有自己的访问密钥和秘密。

我可以连接到第一个存储桶并下载文件就好了。可能需要注意的是,我没有完全访问要从中复制的存储桶的权限,这意味着我无法读取存储桶中的所有密钥,只能读取我可以访问的子集。我可以完全控制要复制到的第二个存储桶。

client2 是我要复制到的地方,而 client 是我要复制的地方。

copy_source = {
    'Bucket': bucketName,
    'Key': key
     }

client2.copy(CopySource = copy_source,Bucket=bucketName2,Key=key,SourceClient=client)

这是我得到的错误:botocore.exceptions.ClientError:调用 UploadPartCopy 操作时发生错误(AccessDenied):访问被拒绝

我是新手,任何帮助将不胜感激!!

4

1 回答 1

3

您可能会这样做的原因Access Denied是因为SourceClient它仅用于获取对象的大小以确定它是否可以直接复制,或者是否需要多部分上传。

当涉及到实际复制本身时,客户端上底层的底层copy_object方法,它不接受 SourceClient,并调用 S3 APIs PUT Object - Copy方法。

因此,如果您希望能够执行从一个存储桶到另一个存储桶的 S3 复制,您可以授予与访问密钥相关联的用户,该用户具有从源存储桶读取的权限,或者您可以使用thenclient2执行 S3 Getclient1一个 S3 放client2

于 2018-03-25T15:45:34.873 回答