我如何获得服务帐户的项目?

时间:2018-04-19 20:21:56

标签: python google-cloud-platform

我正在使用python google.cloud api

例如,使用指标模块

from google.cloud import monitoring

client = monitoring.Client()
client.query(my/gcp/metric, minutes=10)

对于我的GOOGLE_APPLICATION_CREDENTIALS我使用的服务帐户具有对gcp项目的特定访问权限。

google.cloud是否有任何模块可以让我从服务帐户派生项目(比如获取服务帐户所在的项目)?

这很方便,因为每个服务帐户只能访问一个项目,所以我可以设置我的服务帐户,并能够在代码中引用该项目。

3 个答案:

答案 0 :(得分:1)

不确定这是否有效,您可能需要调整它:

from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default() 
service = discovery.build('yourservicename', credentials=credentials) 
request = service.projects().list()[0]

答案 1 :(得分:0)

Google Cloud身份和访问管理(IAM)API具有“serviceAccounts.get”方法,该方法显示与服务帐户关联的项目,如here所示。您需要拥有适当的API项目权限才能使用。

答案 2 :(得分:0)

如果该信息在环境中可用,则方法google.auth.default返回元组(project_id, credentials)

此外,客户端对象还知道其链接到哪个项目(client.projectclient.project_id,我不确定监视API是哪个项目)。

如果使用GOOGLE_APPLICATION_CREDENTIALS env var手动设置服务帐户,则可以打开文件并加载其json。服务帐户密钥文件中的参数之一是项目ID。