Häufig gestellte Fragen und Fehlerbehebung

Nachfolgend wird erläutert, welche Probleme bei der Interaktion mit der Cloud Asset API unter anderem auftreten können und wie Sie diese beheben.

Ist Cloud Asset Inventory ein globaler Dienst?

Ja. Die Cloud Asset API hat keinen Standort. Er hat einen globalen Endpunkt, der die Metadaten aller unterstützten regionalen und globalen Assets in Cloud Asset Inventory bereitstellt. Cloud Asset API kann in jeder Zone aufgerufen werden.

Warum hat meine Anfrage ungültige Anmeldedaten zur Authentifizierung?

Wenn Sie den OAuth-Header nicht korrekt eingerichtet haben, wird bei einem Aufruf folgender Fehler zurückgegeben:

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected
               OAuth 2 access token, login cookie or other valid
               authentication credential. See
               https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "Authentication error: 2"
      }
    ]
  }
}

Wiederholen Sie die Schritte zum Überprüfen der Ersteinrichtung, um dieses Problem zu beheben.

Warum habe ich keine Berechtigung zur Verwendung der Cloud Asset API?

Es wird ein Fehler zurückgegeben, wenn Sie nicht die Berechtigung zum Exportieren von Assets oder zum Abrufen des Verlaufs für eine Organisation, ein Projekt oder einen Ordner haben.

Wenn Sie beispielsweise keine Berechtigung haben und folgenden Befehl ausführen:

gcurl -d '{"outputConfig":{"gcsDestination": \
{"uri":gs://YOUR_BUCKET/NEW_FILE}}}' \
https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

wird folgender Fehler zurückgegeben:

{
 "error": {
  "code": 403,
  "message": "The caller does not have permission",
  "status": "PERMISSION_DENIED",
  "details": [
   {
    "@type": "type.googleapis.com/google.rpc.DebugInfo",
    "detail": "[ORIGINAL ERROR] generic::permission_denied: Request
    denied by Cloud IAM."
   }
  ]
 }
}

Bitten Sie Ihren Projekt-, Ordner- oder Organisationsadministrator um Zugriff, damit Sie dieses Problem beheben können. Abhängig von den Assets, die Sie exportieren oder deren Verlauf Sie abrufen möchten, benötigen Sie eine der folgenden Rollen oder andere Rollen, die die erforderlichen Cloud Asset API-Berechtigungen enthalten:

  • cloudasset.viewer
  • cloudasset.owner

Weitere Informationen zu Rollen und Berechtigungen finden Sie unter Informationen zu Rollen.

Weitere Informationen zu Zugriffssteuerungsoptionen für Cloud Asset APIs finden Sie unter Zugriffssteuerung.

Warum schlagen meine Befehle für den Export nach Cloud Storage fehl?

Wenn sich der Cloud Storage-Bucket, den Sie zum Speichern von exportierten Daten verwenden, nicht im Projekt mit der aktivierten Cloud Asset API befindet, über das Sie den Export ausführen, wird bei Ausführung der Anfrage der folgende Fehler angezeigt:

    {
     "error": {
      "code": 7,
      "message": "Failed to write to: YOUR_BUCKET/FILE",
     }
    }
    

Zur Behebung dieses Problems verwenden Sie entweder einen Cloud Storage-Bucket, der zum Cloud Asset API-Projekt gehört, über das Sie den Export ausführen, oder Sie weisen dem Dienstkonto service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com die Rolle roles/storage.admin zu. Dabei ist PROJECT_NUMBER die Projektnummer des Cloud Asset API-Projekts, aus dem Sie die Daten exportieren.

Warum ist das Ergebnis der Cloud Asset API veraltet?

Die Datenaktualität in der Cloud Asset API folgt dem Best-Effort-Prinzip. Obwohl fast alle Asset-Aktualisierungen in Minutenschnelle für Clients zur Verfügung stehen, kann es in seltenen Fällen vorkommen, dass das Ergebnis der Cloud Asset API-Methoden nicht die neuesten Asset-Updates enthält.

Warum werden temporäre Dateien nach der Ausführung von ExportAssets ausgegeben?

Der Vorgang ExportAssets kann temporäre Dateien im Ausgabeordner erstellen. Entfernen Sie diese temporären Dateien nicht, während der Vorgang ausgeführt wird. Wenn der Vorgang abgeschlossen ist, werden die temporären Dateien automatisch entfernt.

Wenn die temporären Dateien weiterhin vorhanden sind, können Sie sie nach Abschluss des ExportAssets-Vorgangs sicher entfernen.

Was geschieht, wenn die Anfrage-URL für BatchGetAssetsHistory zu lang ist?

Die Methode BatchGetAssetsHistory ist eine HTTP GET-Aktion, die alle Anfragedaten in einer URL mit begrenzter Länge sendet. Deshalb wird ein Fehler ausgegeben, wenn die Anfrage zu lang ist.

Sie können dies umgehen, wenn Sie im Clientcode mit HTTP POST eine Anfrage senden, in der Content-Type auf application/x-www-form-urlencoded gesetzt ist. Außerdem muss der HTTP-Header X-HTTP-Method-Override: GET angegeben werden. Weitere Informationen finden Sie unter Lange Anfrage-URLs.

Das folgende Beispiel zeigt eine Anfrage für BatchGetAssetsHistory mit HTTP POST:

curl -X POST -H "X-HTTP-Method-Override: GET" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -H "Authorization: Bearer " \
     -d 'assetNames=&contentType=1&readTimeWindow.startTime=2018-09-01T09:00:00Z' \
     https://cloudasset.googleapis.com/v1/projects/:batchGetAssetsHistory

Warum werden meine Anmeldedaten für Cloud SDK oder Cloud Shell abgelehnt?

Wenn ein Nutzerprojekt in einer Anfrage von Cloud SDK oder Cloud Shell an cloudasset.googleapis.com gesendet wird, erhalten Sie eine Fehlermeldung wie diese:

Your application has authenticated using end user credentials from the
Cloud SDK or Cloud Shell which are not supported by the
cloudasset.googleapis.com. We recommend that most server applications
use service accounts instead. For more information about service accounts
and how to use them in your application, see
https://cloud.google.com/docs/authentication/.

Um dieses Problem zu beheben, setzen Sie das Nutzerprojekt auf die Projekt-ID der für die Cloud Asset API aktivierten Nutzer. Dazu geben Sie in der HTTP-Anfrage den HTTP-Header X-Goog-User-Project an.

Wenn Sie curl verwenden, können Sie den folgenden Parameter hinzufügen:

-H 'X-Goog-User-Project: PROJECT_ID'

Wenn Sie das gcloud-Tool verwenden, geben Sie zusammen mit dem Befehl gcloud asset das Flag --billing-project <var>PROJECT_ID</var> an oder führen Sie den folgenden Befehl aus:

gcloud config set billing/quota_project PROJECT_ID

Wie exportiere ich Inhalte in BigQuery-Tabellen, die nicht zum aktuellen Projekt gehören?

Wenn Sie die ExportAssets API über das für die Cloud Asset API aktivierte Projekt (A) aufrufen, verwendet es das Dienstkonto service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com, um in die BigQuery-Zieltabelle zu schreiben. So schreiben Sie in eine BigQuery-Tabelle in einem anderen Projekt (B):

Gewähren Sie dem Dienstkonto (service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com) in der IAM-Richtlinie (Identity and Access Management) des Projekts B die Rollen roles/bigquery.user und roles/bigquery.dataEditor.

Warum sehe ich unterschiedliche Ancestors für dieselben Assets?

Wenn Sie mit der Cloud Asset API verschiedene Metadatentypen abrufen, z. B. RESOURCE-Metadaten und IAM POLICY-Metadaten für dasselbe Asset, ist es möglich, dass das Feld ancestors für die unterschiedlichen Inhaltstypen nicht konsistent ist. Dies liegt daran, dass für jeden Inhaltstyp unterschiedliche Zeitpläne für die Datenaufnahme vorliegen. Bis zum Abschluss des Aufnahmevorgangs kann es zu Inkonsistenzen kommen. Prüfen Sie das Feld update_time, um sicherzustellen, dass das Asset aktuelle Informationen enthält.

Kontaktieren Sie uns, wenn die Inkonsistenzen länger als 24 Stunden andauern.

Wie oft sollte ich die ExportAssets API aufrufen?

Wir empfehlen, die ExportAssets API für dieselbe Organisation, denselben Ordner oder dasselbe Projekt in sequenzieller Weise aufzurufen. Führen Sie beispielsweise den zweiten Aufruf nach Abschluss des vorherigen Aufrufs aus. Wenn Sie Asset-Aktualisierungen in Echtzeit erfassen möchten, sollten Sie Echtzeitbenachrichtigungen in Betracht ziehen.

Warum erhalte ich doppelte Asset-Aktualisierungen?

Nach der Einrichtung von Echtzeitbenachrichtigungen erhalten Sie möglicherweise doppelte Asset-Aktualisierungen in Ihrem Pub/Sub-Thema. Dies wird durch einen automatischen Neuversuch der Übermittlung verursacht, da Pub/Sub eine mindestens einmalige Übermittlung nicht garantieren kann.

Warum habe ich keine Benachrichtigungen zum Löschen von Projekten erhalten?

Wenn Sie ein Projekt beenden, haben Sie 30 Tage Zeit, um den Vorgang rückgängig zu machen. Das Feld deleted in der Benachrichtigung wird erst festgelegt, wenn das Projekt endgültig gelöscht wird. Zum Überwachen von Projekten, die gelöscht werden können, können Sie einen Feed mit einer Bedingung für lifecycleState des Projekts festlegen, z.B. temporal_asset.asset.resource.data.lifecycleState == "DELETE_REQUESTED".