Google Cloud Platform: список доступных проектов с использованием API - PullRequest
1 голос
/ 13 октября 2019

Я хочу добиться того же эффекта, что и gcloud projects list, с помощью API-вызова (python), в частности.

Однако, единственное, с чем я могу столкнуться при просмотре документов, это.

Связана ли эта операция специально с API Resource Manager?

Что происходит с видимостью других проектов? Если RM привязан к проекту, как он может просматривать (и, следовательно, список) другие?

1 Ответ

2 голосов
/ 13 октября 2019

Вы можете перечислить только те проекты, к которым у вас есть права доступа. Это означает, что вы не можете видеть все проекты, если у вас нет прав доступа к ним. В моих примерах ниже я показываю, какие области необходимы. Это также означает, что вы можете перечислять проекты в разных аккаунтах. Это позволяет вам видеть, к каким проектам у вас есть доступ, используя учетные данные, указанные в примерах. Я показываю, как использовать учетные данные приложения по умолчанию (ADC) и учетные данные службы (формат файла Json).

Для получения дополнительной информации вы можете прочитать мою статью здесь о проектах.

Эти примеры были протестированы с Python 3.6 на Windows 10 Professional. В этих примерах список проектов будет отображаться точно в виде CLI.

Пример 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...