Blog

Wie konvertiert man die Ausgabe von Google Cloud Asset Query in JSON oder Python?

Mark van Holsteijn

Aktualisiert Oktober 14, 2025
3 Minuten

In diesem Blog zeige ich Ihnen, wie Sie die Ausgabe einer Google Cloud Asset-Abfrage über die Befehlszeile in das JSON-Format oder in ein Python-Objekt in einem Python-Programm umwandeln können. Diese Umwandlung wird Ihre Arbeitsabläufe straffen und die Berichterstellung und Datenverarbeitung erleichtern. Ich zeige Ihnen, wie Sie dies über die Befehlszeile und innerhalb eines Python-Programms tun können.

Google Cloud Asset Query-Ausgabe

Das Problem mit der Ausgabe der Google Cloud Asset Query ist, dass die Ausgabe kein Python- oder JSON-Objekt ist. Obwohl in den Metadaten die richtige Form und die Typen des Ergebnisses angegeben sind, wird diese Form nicht zurückgegeben. Stattdessen besteht das Ergebnis aus einem Objekt mit den Feldnamen und , wobei alle Werte im String-Format vorliegen. Wie unten gezeigt:

gcloud asset query 
    --project $(gcloud config get core/project) 
    --format json 
    --statement 'select distinct(assetType) as type from STANDARD_METADATA'
{
  "queryResult": {
    "nextPageToken": "",
    "rows": [
      {
        "f": [
          {
            "v": "compute.googleapis.com/Network"
          }
        ]
      },
      {
        "f": [
          {
            "v": "secretmanager.googleapis.com/SecretVersion"
          }
        ]
      }
      ...
    ],
    "schema": {
      "fields": [
        {
          "field": "type",
          "mode": "NULLABLE",
          "type": "STRING"
        }
      ]
    },
    "totalRows": "43"
  }

Verwendung der Kommandozeile

In der Befehlszeile können Sie den google-asset-query-converter verwenden, um das Ergebnis in das richtige JSON-Format umzuwandeln. Das Dienstprogramm verwendet die Schemadefinition, die mit dem Ergebnis zurückgegeben wird, um die Konvertierung durchzuführen (siehe unten):

gcloud asset query 
    --project $(gcloud config get core/project) 
    --format json 
    --statement 'select distinct(assetType) as type from STANDARD_METADATA' | 
    google-asset-query-converter --pretty-print
[
  {
    "type": "compute.googleapis.com/InstanceGroup"
  },
  {
    "type": "appengine.googleapis.com/Application"
  },
  {
    ..
  ]

Jetzt ist es einfacher, die Abfrageergebnisse ohne Tools wie jq zu verarbeiten:

gcloud asset query 
    --project $(gcloud config get core/project) 
    --format json 
    --statement 'select distinct(assetType) as type from STANDARD_METADATA' | 
    google-asset-query-converter --pretty-print | 
    jq 'map(.type)'
[
  "appengine.googleapis.com/Application",
  "compute.googleapis.com/InstanceGroup",
  "pubsub.googleapis.com/Topic",
  "iam.googleapis.com/ServiceAccount",
  "compute.googleapis.com/Disk",
  "bigquery.googleapis.com/Table",
  ...

Für diese Abfrage könnten Sie die Ausgabe direkt aus der Abfrage mit jq verarbeiten, aber ich wage es, die Ausgabe von select * from compute_googleapis_com_Instance direkt mit jq zu verarbeiten :-p

Benutzung der Bibliothek

Sie können den Konverter auch verwenden, um die Ergebnisse einer Cloud Asset-Abfrage in Python zu verarbeiten. Dies wird in dem folgenden Ausschnitt gezeigt:

from googleapiclient.discovery import build
from google_asset_query_converter.converter import PythonConverter
from google_asset_query_converter.queryresult import AssetQueryResponse


def print_metadata(project:str):
    service = build("cloudasset", "v1")
    request = service.v1().queryAssets(
        parent=f'projects/{project}',
        body={"statement":  "SELECT * FROM STANDARD_METADATA",
              "pageSize": 20
              }
    )

    converter = PythonConverter()
    response = AssetQueryResponse(**request.execute())
    for row in response.query_result.rows:
        print(converter.row(response.query_result.table_schema, row))

Das ist alles, was Sie tun müssen: Installieren Sie es und los geht's!

Installation

Um den google-asset-query-converter zu installieren, geben Sie ein:

pip install git+https://github.com/xebia/google-cloud-asset-converter.git@0.0.3

Es erfordert Python 3.12 oder höher.

Fazit

Dieses Dienstprogramm bietet eine einfache Möglichkeit, die Ausgabe einer Google Cloud Asset-Abfrage zur weiteren Verarbeitung in JSON oder ein Python-Objekt zu konvertieren.


Bild von S. Nagel aus Pixabay

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.