Python 从Google存储桶下载对象需要哪些角色

Python 从Google存储桶下载对象需要哪些角色,python,google-cloud-platform,google-cloud-storage,google-cloud-python,google-cloud-iam,Python,Google Cloud Platform,Google Cloud Storage,Google Cloud Python,Google Cloud Iam,我已经创建了一个服务帐户,并且只为它指定了存储对象查看器角色。我想使用这个服务帐户使用python API从bucket下载对象 我已经相应地设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,并且可以在bucket的权限页面上看到相关的服务帐户 我使用以下代码尝试下载一个对象 从google.cloud导入存储 storage\u client=storage.client bucket=存储\客户端。获取\ bucketBUCKET\名称 但是我在调用get_buck

我已经创建了一个服务帐户,并且只为它指定了存储对象查看器角色。我想使用这个服务帐户使用python API从bucket下载对象

我已经相应地设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,并且可以在bucket的权限页面上看到相关的服务帐户

我使用以下代码尝试下载一个对象

从google.cloud导入存储 storage\u client=storage.client bucket=存储\客户端。获取\ bucketBUCKET\名称 但是我在调用get_bucket时遇到以下错误

为了使服务帐户具有storage.Bucket.get访问权限(如果不是storage Object Viewer),我需要设置的最小角色集是什么?

storage Object Viewer角色/storage.objectViewer仅包括以下权限:

resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
对于Bucket,您将需要一个类似Storage Legacy Bucket Reader roles/Storage.legacyBucketReader的角色,或者创建一个。这将为您提供:

storage.buckets.get
storage.objects.list
您始终可以使用云控制台中的选项卡搜索特定权限,以查看当前哪些角色授予这些权限。

存储对象查看器角色/Storage.objectViewer仅包括以下权限:

resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
对于Bucket,您将需要一个类似Storage Legacy Bucket Reader roles/Storage.legacyBucketReader的角色,或者创建一个。这将为您提供:

storage.buckets.get
storage.objects.list

您可以始终使用云控制台中的选项卡搜索特定权限,以查看当前哪些角色授予这些权限。

我被Legacy这个词甩了,认为我不应该使用这些角色。这看起来是正确的答案!您也可以只创建一个自定义角色。这里还有一个指向存储角色文档的链接,供将来的任何人使用:我还认为我不需要/不应该创建自定义角色来完成从bucket下载对象这样的常见任务=PSure,我想您也可以使用存储管理员角色,但这似乎也是错误的:我被Legacy这个词甩了,认为我不应该使用这些角色。这看起来是正确的答案!您也可以只创建一个自定义角色。这里还有一个指向存储角色文档的链接,供将来的任何人使用:我还认为我不需要/不应该创建自定义角色来完成从bucket下载对象这样的常见任务=PSure,我想您也可以使用存储管理员角色,但这似乎也是错误的: