Для этого вы можете использовать Инвентаризация облачных активов . Я написал этот код для выполнения приемника в 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, который копирует данные в другую таблицу для хранения истории.
Примечание. Также можно настроить выписка в облачном хранилище, если вы предпочитаете.
Я надеюсь, что это отправная точка для вас и для достижения того, что вы хотите сделать.