Используя Python, я хотел бы получить список всех моих кластеров Dataproc в Google Cloud.
У меня есть учетные данные учетной записи службы, которые хранятся в ключевом файле JSON, местоположение которого указано в env var GOOGLE_APPLICATION_CREDENTIALS.Вот код, который у меня есть:
import os
import googleapiclient.discovery
from oauth2client.client import GoogleCredentials
def build_dataproc_service(credentials):
return googleapiclient.discovery.build("dataproc", "v1", credentials=credentials)
def list_clusters():
credentials = GoogleCredentials.get_application_default()
dataproc = build_dataproc_service(credentials)
clusters = dataproc.projects().regions().clusters().list(projectId="my-project", region="REGION").execute()
return clusters
if __name__ == "__main__":
list_clusters()
Как видите, я жестко закодировал идентификатор проекта ("my-project"
).Учитывая, что projectId существует в файле ключей JSON, я надеялся, что смогу получить его, просто запросив свойство объекта credentials
, но такого свойства не существует.ProjectId существует , встроенный в строковое свойство credentials._service_account_email
, но извлечение его оттуда неуклюже и кажется неправильным.
Я предполагаю, что должен быть лучший способ.Как я могу получить идентификатор проекта для проекта, в котором находится учетная запись службы?
Обратите внимание, что изначально я намереваюсь запустить этот код в док-контейнере на экземпляре Google Compute Engine, однако однажды в будущем яВозможно, захотите запустить на GKE.Не уверен, влияет ли это на ответ или нет.