【发布时间】:2021-12-24 22:31:11
【问题描述】:
我想使用 Python 从存储中下载 blob。示例显示此代码:
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket(BUCKETNAME)
blob = bucket.get_blob(BLOBNAME)
raw_bytes = blob.download_as_bytes()
虽然这可行,但它不仅需要授予“存储对象查看器”角色 (roles/storage.objectViewer) 的 storage.objects.get 权限,还需要 storage.buckets.get 执行 get_bucket 行的权限。此权限由听起来过于强大或过时的其他角色授予,例如“Storage Admin”或“Storage Legacy Bucket Reader”。
有没有办法改变 Python 代码,只需要storage.objects.get 权限?似乎可能落后于 Python API 的 JSON API 允许这样做:https://cloud.google.com/storage/docs/json_api/v1/objects/get
最好的,鲍里斯
【问题讨论】:
-
1) 您可以创建自定义 IAM 角色。 2) Storage Legacy Bucket Reader 名称中的旧版并不意味着不再推荐或支持的旧版。它指的是在 IAM 开发之前就存在的权限。在 IAM 之前,OAuth Scopes 是授权机制。
-
但问题仍然存在:如何在没有 storage.buckets.get 权限的情况下使用 Python 读取 blob?如果我可以使用 JSON API 做到这一点,如果 Python API 的实现阻止了它,那将是可悲的。
标签: google-cloud-storage google-iam google-cloud-iam google-cloud-python