gpt4 book ai didi

python - 如何使用 boto 以编程方式检查 Amazon S3 权限?

转载 作者:太空狗 更新时间:2023-10-29 21:32:05 31 4
gpt4 key购买 nike

我们在 Amazon S3 的存储桶中有一棵茂密的树,其中包含大量文件。我刚刚发现虽然有些文件有两个权限条目,就像在 AWS 管理控制台中单击一个文件时看到的那样,然后单击属性 -> 权限,一行是“每个人”,另一行是一些特定用户,其他文件只有一个该用户的条目。结果,我们在使用 boto 或 curl 将这些文件下载到 Amazon EC2 实例时遇到问题。

我需要做的是遍历存储桶中的所有文件并检查它们。我知道如何获取前缀的完整键列表。我可以使用 boto 来提取 key 的权限吗?是否有标准的方法来测试这些权限是针对每个人还是针对特定的人,以及它们是什么?

此外,一旦我确定某个 key 是否具有限制性权限,我是否可以通过向“所有人”添加读取权限来以编程方式更改它们?

谢谢

最佳答案

这是一些使用 boto 的 Python 代码,它会查看存储桶中的所有键。如果 key 不允许“每个人”读取 key 的内容,它将向该 key 添加 public-read 权限:

import boto

all_users = 'http://acs.amazonaws.com/groups/global/AllUsers'
conn = boto.connect_s3()
bucket = conn.get_bucket('mybucket')

for key in bucket:
readable = False
acl = key.get_acl()
for grant in acl.acl.grants:
if grant.permission == 'READ':
if grant.uri == all_users:
readable = True
if not readable:
key.make_public()

此代码尚未经过全面测试,因此您应该先尝试一下。另外,请注意,这样做的最终结果是让任何人都可以读取存储桶中的所有对象。另请记住,此脚本正在获取存储桶中每个对象的当前 ACL,因此如果有数百万个对象,那将是数百万个请求,这可能会花费大量时间并产生一些相关成本。

另一种方法是只对存储桶中的每个键调用 make_public(),而不管它的当前 ACL。

关于python - 如何使用 boto 以编程方式检查 Amazon S3 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063673/

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