Мне понравился Томас Янссон Вопрос / Ответ об использовании Google Cloud Resource Manager для перечисления проектов.
Разрешения и доступ к ним:
Вы можете перечислять только те проекты, к которым у вас есть права доступа. Это означает, что вы не можете видеть все проекты, если у вас нет прав доступа к ним. В моих примерах ниже я показываю, какие области необходимы. Это также означает, что вы можете перечислять проекты в разных аккаунтах. Это позволяет вам видеть, к каким проектам у вас есть доступ, используя учетные данные, указанные в примерах. Я показываю, как использовать учетные данные приложения по умолчанию (ADC) и учетные данные службы (формат файла Json).
Этот ответ включает в себя два примера на Python, в которых используются две разные библиотеки Google Cloud Python. Эти примеры выдают тот же результат, что и команда Google CLI gcloud projects list
.
Пример 1 с использованием клиентской библиотеки Python (метод обнаружения служб):
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
from google.oauth2 import service_account
# Example using the Python Client Library
# Documentation
# https://github.com/googleapis/google-api-python-client
# https://developers.google.com/resources/api-libraries/documentation/cloudresourcemanager/v2/python/latest/
# Library Installation
# pip install -U google-api-python-client
# pip install -U oauth2client
# Requires one of the following scopes
# https://www.googleapis.com/auth/cloud-platform
# https://www.googleapis.com/auth/cloud-platform.read-only
# https://www.googleapis.com/auth/cloudplatformprojects
# https://www.googleapis.com/auth/cloudplatformprojects.readonly
print('{:<20} {:<22} {:<21}'.format('PROJECT_ID', 'NAME', 'PROJECT_NUMBER'))
# Uncomment to use Application Default Credentials (ADC)
credentials = GoogleCredentials.get_application_default()
# Uncomment to use Service Account Credentials in Json format
# credentials = service_account.Credentials.from_service_account_file('service-account.json')
service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials)
request = service.projects().list()
while request is not None:
response = request.execute()
for project in response.get('projects', []):
print('{:<20} {:<22} {:<21}'.format(project['projectId'], project['name'], project['projectNumber']))
request = service.projects().list_next(previous_request=request, previous_response=response)
Пример 2 с использованием клиентской библиотеки API Google Cloud Resource Manager Python:
from google.cloud import resource_manager
# Example using the Python Google Cloud Resource Manager API Client Library
# Documentation
# https://pypi.org/project/google-cloud-resource-manager/
# https://github.com/googleapis/google-cloud-python
# https://googleapis.github.io/google-cloud-python/latest/resource-manager/index.html
# https://googleapis.github.io/google-cloud-python/latest/resource-manager/client.html
# https://googleapis.github.io/google-cloud-python/latest/resource-manager/project.html
# Library Installation
# pip install -U google-cloud-resource-manager
# Requires one of the following scopes
# https://www.googleapis.com/auth/cloud-platform
# https://www.googleapis.com/auth/cloud-platform.read-only
# https://www.googleapis.com/auth/cloudplatformprojects
# https://www.googleapis.com/auth/cloudplatformprojects.readonly
print('{:<20} {:<22} {:<21}'.format('PROJECT_ID', 'NAME', 'PROJECT_NUMBER'))
# Uncomment to use Application Default Credentials (ADC)
client = resource_manager.Client()
# Uncomment to use Service Account Credentials in Json format
# client = resource_manager.Client.from_service_account_json('service-account.json')
for project in client.list_projects():
print('{:<20} {:<22} {:<21}'.format(project.project_id, project.name, project.number))