in src/cai-export/main.py [0:0]
def main(request):
org_id = os.environ.get("ORG_ID")
project_id = os.environ.get("PROJECT_ID")
resource_dataset = os.environ.get("RESOURCE_DATASET")
table_prefix = os.environ.get("TABLE_PREFIX")
client = asset_v1.AssetServiceClient()
output_config = asset_v1.OutputConfig()
# Parent Config
parent = f"organizations/{org_id}"
# BQ Destination Config
output_config.bigquery_destination.table = table_prefix
output_config.bigquery_destination.force = True
output_config.bigquery_destination.separate_tables_per_asset_type = True
# Partition Spec Config
partition_spec = asset_v1.PartitionSpec()
partition_key = asset_v1.PartitionSpec.PartitionKey.REQUEST_TIME
partition_spec.partition_key = asset_v1.PartitionSpec.PartitionKey.REQUEST_TIME
output_config.bigquery_destination.partition_spec.partition_key = partition_key
configs = {
"resource": {
"destination": f"projects/{project_id}/datasets/{resource_dataset}",
"content_type": asset_v1.ContentType.RESOURCE,
"asset_types": [
"iam.googleapis.com/ServiceAccount",
"iam.googleapis.com/ServiceAccountKey",
],
"response": None,
}
}
for config in configs:
output_config.bigquery_destination.dataset = configs[config]["destination"]
configs[config]["response"] = client.export_assets(
request={
"parent": parent,
"content_type": configs[config]["content_type"],
"asset_types": configs[config]["asset_types"],
"output_config": output_config,
}
)
# Resource Export Time >>> IAM Export Time, so we output operationId for Resource
output = {"operationId": configs["resource"]["response"].operation.name}
return jsonify(output)