如何使用Python Boto Library在AWS S3中设置文件(密钥)的权限?

时间:2016-08-20 18:51:58

标签: python amazon-s3 boto

使用Boto库更新Python脚本后,我在AWS S3中遇到文件权限问题。

以下是我用于在S3中更新文件的命令:

k.set_contents_from_string(json.dumps(parsed_json, indent=4))

文件正确更新,但权限发生变化,这对我来说很奇怪。

在更新文件之前,权限是:

授予:awsprod打开/下载(选中)查看权限(已选中)编辑权限(已选中)

更新文件后,权限消失,在通过AWS Dashboard / Console查看权限时,没有任何内容显示。

删除权限后,无法再下载文件,并且每次都会失败。

通过aws cli:

A client error (403) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining

通过aws控制台:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>A6E4AA2E3A3B9429</RequestId>
<HostId>
47gMhTpdFRAYm1cP4noivQlNEeB/cxHr2QFRXewNERdYcGcan2QU/fOVQ/upOl7Zp9fNIXLUnkk=
</HostId>
</Error>

我的访问是通过IAM进行的,我的用户拥有“AmazonS3FullAccess”政策,可以让我完全访问S3。

更有趣的是,我有2个AWS账户,并且相同的脚本在其中一个中运行良好而不更改文件权限,而在另一个账户上我遇到了上述问题。现在,您可能认为我可能在这两个aw帐户之间对S3有不同的策略访问权限。我已经检查过了,两个帐户都有“AmazonS3FullAccess”政策。

因此,即使这是AWS账户设置中的问题,我也想在我的脚本中添加一行,将文件权限设置回更新之前的状态。我认为应该这样做,并允许我在运行Python脚本后下载文件。

如何使用Boto?

在S3中设置文件权限(而不是存储桶)

1 个答案:

答案 0 :(得分:1)

使用policy中的一个设置canned acl strings,例如:

k.set_contents_from_string(json.dumps(parsed_json, indent=4), policy=<ACL STRING>)