AWS S3 - 403禁止读取文件 - Boto Python

时间:2015-10-22 13:54:38

标签: python amazon-web-services amazon-s3 boto

我可以使用boto创建一个文件:

s3 = boto.connect_s3(aws_access_key_id='XXXX', aws_secret_access_key='XXX')
pb = s3.get_bucket(b_path)
k = Key(pb)
k.name = f_path
k.set_contents_from_string(content)

当我尝试阅读相同的文件时,我得到:

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

如果我转到S3 Web Inteface,并设置读/写权限,现在我可以访问该文件。

PS:当我创建文件时,所有者是另一个不是我的用户。这是问题吗?

1 个答案:

答案 0 :(得分:1)

如果使用第三方凭据将对象上传到您的存储桶,则默认情况下,您作为存储桶拥有者没有该对象的任何所有权(第三方确实存在)。

在这种情况下,您可以作为存储桶拥有者执行的操作是列出对象并将其删除(您可以这样做,因为您正在为存储桶中的存储付费)。特别是,您无法读取或修改对象的ACL,也无法获取该对象(除非所有者明确授予您读取权限或将该对象公开)。

要控制对象,您需要上传器提供一个可以完全控制的固定ACL。上传者可以通过提供ACL =' bucket-owner-full-control'来实现此目的。在致电put()时。或者,我相信你可以提供GrantFullControl =' xyz',表明受助人。