gpt4 book ai didi

amazon-web-services - boto3 copy vs copy_object 关于 s3 中的文件权限 ACL

转载 作者:行者123 更新时间:2023-12-02 01:00:32 30 4
gpt4 key购买 nike

在我使用不同的键和前缀将对象复制到同一个存储桶后(我相信这类似于重命名),它的公共(public)读取权限被删除。

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

当我尝试使用 s3 上的链接在浏览器上打开文件时。而且,我意识到在权限选项卡上,它没有公共(public)读取权限,而原始文件有。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>***</RequestId>
<HostId>***</HostId>
</Error>

2个问题:
i)我使用时是否可以维护 ACL 权限
copy (CopySource、Bucket、Key、ExtraArgs=None、Callback=None、SourceClient=None、Config=None)

ii) 我可以设置的 ExtraArgs 是什么?该文件没有提及任何内容。

最佳答案

这不是我想要的确切答案,但它现在似乎有效。

我不确定如何维护权限,但我可以手动将其设置为公共(public)读取或其他我需要的类型。

这是来自 boto3 copy_object 的可能值:
'private'|'public-read'|'public-read-write'|'authenticated-read'|'aws-exec-read'|'bucket-owner-read'|'bucket-owner-full-control'

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

然后,我意识到执行此操作需要更多权限。我不确定它现在实际需要哪个权限,但我收到以下错误:
i) 调用 CopyObject 操作时发生错误 (AccessDenied):访问被拒绝。
ii) 调用 CreateMultipartUpload 操作时发生错误 (AccessDenied):访问被拒绝。

它在我添加“s3:PutObjectAcl”策略后工作。

关于amazon-web-services - boto3 copy vs copy_object 关于 s3 中的文件权限 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993332/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com