Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获得服务帐户的项目?_Python_Google Cloud Platform - Fatal编程技术网

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

Python 如何获得服务帐户的项目?,python,google-cloud-platform,Python,Google Cloud Platform,我正在使用python google.cloud api 例如,使用度量模块 from google.cloud import monitoring client = monitoring.Client() client.query(my/gcp/metric, minutes=10) 对于我的GOOGLE_应用程序_凭据,我使用一个对gcp项目具有特定访问权限的服务帐户 google.cloud是否有任何模块可以让我从服务帐户派生项目(比如获取服务帐户所在的项目) 这会很方便,因为每个服务

我正在使用python google.cloud api

例如,使用度量模块

from google.cloud import monitoring

client = monitoring.Client()
client.query(my/gcp/metric, minutes=10)
对于我的GOOGLE_应用程序_凭据,我使用一个对gcp项目具有特定访问权限的服务帐户

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


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

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

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]

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

如果环境中有可用的信息,则方法
google.auth.default
返回元组
(项目id,凭据)

此外,客户机对象知道它链接到哪个项目(无论是
client.project
还是
client.project\u id
,我不确定监视API使用哪个项目)

如果您使用
GOOGLE\u应用程序\u凭据
env var手动设置服务帐户,则可以打开该文件并加载其json。服务帐户密钥文件中的参数之一是项目id