Я хочу перечислить все ресурсы в организациях, используя функцию python в облаке Google - PullRequest
0 голосов
/ 26 января 2020

Я просмотрел официальные документы облака Google, но не представляю, как их использовать, чтобы перечислить ресурсы конкретной организации c, указав идентификатор организации

organizations = CloudResourceManager.Organizations.Search()
projects = emptyList()

parentsToList = queueOf(organizations)
while (parent = parentsToList.pop()) {
  // NOTE: Don't forget to iterate over paginated results.
  // TODO: handle PERMISSION_DENIED appropriately.
  projects.addAll(CloudResourceManager.Projects.List(
      "parent.type:" + parent.type + " parent.id:" + parent.id))
  parentsToList.addAll(CloudResourceManager.Folders.List(parent))
}
organizations = CloudResourceManager.Organizations.Search()
projects = emptyList()

parentsToList = queueOf(organizations)
while (parent = parentsToList.pop()) {
  // NOTE: Don't forget to iterate over paginated results.
  // TODO: handle PERMISSION_DENIED appropriately.
  projects.addAll(CloudResourceManager.Projects.List(
      "parent.type:" + parent.type + " parent.id:" + parent.id))
  parentsToList.addAll(CloudResourceManager.Folders.List(parent))
}

Ответы [ 2 ]

1 голос
/ 26 января 2020

Для этого вы можете использовать Инвентаризация облачных активов . Я написал этот код для выполнения приемника в BigQuery.

import os

from google.cloud import asset_v1
from google.cloud.asset_v1.proto import asset_service_pb2


def asset_to_bq(request):

    client = asset_v1.AssetServiceClient()
    parent = 'organizations/{}'.format(os.getEnv('ORGANIZATION_ID'))
    output_config = asset_service_pb2.OutputConfig()
    output_config.bigquery_destination.dataset = 'projects/{}}/datasets/{}'.format(os.getEnv('PROJECT_ID'),
                                                                                   os.getEnv('DATASET'))

    output_config.bigquery_destination.table = 'asset_export'
    output_config.bigquery_destination.force = True

    response = client.export_assets(parent, output_config)

    # For waiting the finish
    # response.result()
    # Do stuff after export
    return "done", 200


if __name__ == "__main__":
    asset_to_bq('')

Будьте осторожны, если вы используете его, раковина должна быть сделана в пустой / не существующей таблице или установите force в true.

В моем случае, через несколько минут Облачный планировщик, который запускает мою функцию и извлекает данные в BigQuery, у меня есть Запланированный запрос в BigQuery, который копирует данные в другую таблицу для хранения истории.

Примечание. Также можно настроить выписка в облачном хранилище, если вы предпочитаете.

Я надеюсь, что это отправная точка для вас и для достижения того, что вы хотите сделать.

0 голосов
/ 26 января 2020

Я могу перечислить проект, но я также хочу перечислить папку и ресурсы в папке и folder.name и тегах, а также я хочу указать идентификатор организации для информации о ресурсах из указанной c организации

import os
from google.cloud import resource_manager
def export_resource (organizations):


    client = resource_manager.Client()

    for project in client.list_projects():
        print("%s, %s" % (project.project_id, project.status))
...