如何使用Python Boto Library在AWS S3中设置文件(密钥)的权限?
问题描述:
使用Boto库更新Python脚本后,我遇到了AWS S3中某个文件的权限问题。如何使用Python Boto Library在AWS S3中设置文件(密钥)的权限?
下面是我使用更新的文件在S3命令:
k.set_contents_from_string(json.dumps(parsed_json, indent=4))
该文件被正确地更新,但是权限得到改变,这是非常奇怪,我。
更新文件之前,权限是:
Granteed: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账户,同一个脚本在其中一个账户中运行良好,但没有更改文件权限,而在另一个账户上,我遇到了上述问题。现在,您可能会认为我可能在这两个aws帐户之间对S3有不同的策略访问权限。我已经检查过,并且这两个帐户都有“AmazonS3FullAccess”策略。
因此,即使这是AWS账户设置的问题,我想向我的脚本添加一行,以将文件权限恢复为更新之前的方式。我认为应该这样做,并允许我在运行Python脚本后下载文件。
如何在S3中使用Boto设置文件权限(不是桶)?
答
设置policy,与canned acl strings之一,是这样的:
k.set_contents_from_string(json.dumps(parsed_json, indent=4), policy=<ACL STRING>)
我通过与AWS凭据创建/etc/boto.cfg文件来解决这个问题。我并不知道BOTO不会在.aws/credentials文件中查看证书。 – GreenTeaTech