BOTO3 - 复制s3对象时拒绝访问

时间:2018-03-25 00:13:40

标签: python-3.x amazon-s3 boto3 tealium

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

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

client2是我要复制的地方,客户端是我要复制的地方。

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

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

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

我是新手,非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:3)

您可能获得Access Denied的原因是因为SourceClient仅用于getting the size of the object来确定是否可以直接复制,或者是多部分上传是必需的。

当涉及到实际的副本本身时,客户端上的基础copy_object方法的基础,它不接受SourceClient,并调用S3 API PUT Object - Copy方法。

因此,如果您希望能够从一个存储桶执行S3复制,则可以为与client2权限使用的访问密钥关联的用户提供从源存储桶读取的权限,或者您可以使用client1执行S3获取,然后使用client2执行S3投放。