BOTO3 - 复制 s3 对象时拒绝访问
BOTO3 - Getting Access Denied when copying a s3 object
我正在尝试从一个存储桶复制到另一个存储桶,每个存储桶都有自己的访问密钥和秘密。
我可以连接到第一个存储桶并下载一个文件就好了。可能需要注意的是,我没有对要从中复制的存储桶的完全访问权限,这意味着我无法读取存储桶中的所有密钥,只能读取我有权访问的一个子集。我可以完全控制要复制到的第二个存储桶。
client2 是我要复制到的地方,client 是我要复制的地方。
copy_source = {
'Bucket': bucketName,
'Key': key
}
client2.copy(CopySource = copy_source,Bucket=bucketName2,Key=key,SourceClient=client)
这是我得到的错误:
botocore.exceptions.ClientError: 调用 UploadPartCopy 操作时发生错误 (AccessDenied): Access Denied
我是新手,如有任何帮助将不胜感激!!
你可能得到 Access Denied
的原因是因为 SourceClient
仅用于 getting the size of the object 以确定它是否可以直接复制,或者是否 multi-part 需要上传。
当涉及到实际副本本身时,底层的底层 copy_object method on the client, which does not accept a SourceClient, and calls out to the S3 APIs PUT Object - Copy 方法。
因此,如果您希望能够执行从一个存储桶到另一个存储桶的 S3 复制,您可以授予与 client2
使用的访问密钥关联的用户从源存储桶中读取的权限,或者您可以使用 client1
执行 S3 Get,然后使用 client2
.
执行 S3 Put
我正在尝试从一个存储桶复制到另一个存储桶,每个存储桶都有自己的访问密钥和秘密。
我可以连接到第一个存储桶并下载一个文件就好了。可能需要注意的是,我没有对要从中复制的存储桶的完全访问权限,这意味着我无法读取存储桶中的所有密钥,只能读取我有权访问的一个子集。我可以完全控制要复制到的第二个存储桶。
client2 是我要复制到的地方,client 是我要复制的地方。
copy_source = {
'Bucket': bucketName,
'Key': key
}
client2.copy(CopySource = copy_source,Bucket=bucketName2,Key=key,SourceClient=client)
这是我得到的错误: botocore.exceptions.ClientError: 调用 UploadPartCopy 操作时发生错误 (AccessDenied): Access Denied
我是新手,如有任何帮助将不胜感激!!
你可能得到 Access Denied
的原因是因为 SourceClient
仅用于 getting the size of the object 以确定它是否可以直接复制,或者是否 multi-part 需要上传。
当涉及到实际副本本身时,底层的底层 copy_object method on the client, which does not accept a SourceClient, and calls out to the S3 APIs PUT Object - Copy 方法。
因此,如果您希望能够执行从一个存储桶到另一个存储桶的 S3 复制,您可以授予与 client2
使用的访问密钥关联的用户从源存储桶中读取的权限,或者您可以使用 client1
执行 S3 Get,然后使用 client2
.