我正在使用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是否有任何模块可以让我从服务帐户派生项目(比如获取服务帐户所在的项目)?
这很方便,因为每个服务帐户只能访问一个项目,所以我可以设置我的服务帐户,并能够在代码中引用该项目。
答案 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.project
或client.project_id
,我不确定监视API是哪个项目)。
如果使用GOOGLE_APPLICATION_CREDENTIALS
env var手动设置服务帐户,则可以打开文件并加载其json。服务帐户密钥文件中的参数之一是项目ID。