gpt4 book ai didi

python - 谷歌云存储给出 'insufficient permissions'

转载 作者:行者123 更新时间:2023-11-28 18:40:36 41 4
gpt4 key购买 nike

我正在使用这个 endpoint :

 get_media(bucket=*, object=*, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, projection=None) 

这给了我错误:

apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/storage/v1/b/my-logs/o/clickstream.1413365729497.log?alt=json returned "Insufficient Permission">

代码:

service = build('storage', 'v1')
contents = service.objects().get(bucket=item['bucket'], object=item['name']).execute(http=http)

item 来自之前(成功的)buckets.list 调用。这就是服务帐户的权限错误如此奇怪的原因。

这目前在我的本地主机上,我的身份验证是:

with open(FILE_KEY, 'rb') as f:
key = f.read()

credentials = SignedJwtAssertionCredentials(
SERVICE_EMAIL_ADDRESS,
key,
scope='https://www.googleapis.com/auth/devstorage.full_control',
)

http = httplib2.Http()
http = credentials.authorize(http)

对象(以及我之后上传的新测试对象)是使用默认的 acl 权限创建的。为什么服务帐户无法检索文件内容?

最佳答案

有两件事可能会干扰这里:

  1. 列出存储桶中的对象需要存储桶的读取权限,而获取对象,即使只是其元数据,也需要对象的读取权限。您的服务帐户可能拥有第一个权限而不是第二个权限。
  2. 默认情况下,服务帐户不属于项目所有者、编辑者或查看者组,因此它们不会出现在存储桶默认 ACL 或对象默认 ACL 中。

您的存储桶 ACL 上是否明确包含服务帐户?对象吗?服务帐户是否列在存储桶的默认对象 ACL 中,因此写入的新对象不会以其他方式覆盖该 ACL 以允许服务帐户读取它?

另见 Access Control .

关于python - 谷歌云存储给出 'insufficient permissions',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740282/

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