Asset-Änderungen mit Pub/Sub überwachen

Sie können in Echtzeit Benachrichtigungen über Ressourcen- und Richtlinienänderungen erhalten, indem Sie Erstellen und Abonnieren eines Feeds.

Beim Erstellen des Feeds können Sie angeben, dass Sie Änderungen der Ressourcentypen, IAM-Richtlinien, Zugriffsrichtlinien und Organisationsrichtlinien in einer Organisation, einem Ordner oder einem Projekt. Darüber hinaus können Sie Ihrem Feed Bedingungen hinzufügen, damit Sie nur Benachrichtigungen für bestimmte Änderungen an einem Inhalt erhalten.

Nachdem Sie einen Feed erstellt haben, erhalten Sie über Pub/Sub Benachrichtigungen, wenn sich die angegebenen Assets ändern. Die erste im Pub/Sub-Thema veröffentlichte Nachricht ist eine Begrüßungsnachricht im Format eines Strings und alle folgenden Nachrichten haben das Format einer TemporalAsset an.

Hier ist ein Beispiel für eine Pub/Sub-Nachricht für den Inhaltstyp RESOURCE.

{
  "asset":{
    "ancestors":[
      "projects/000000000000",
      "folders/000000000000",
      "organizations/000000000000"
    ],
    "assetType":"storage.googleapis.com/Bucket",
    "name":"//storage.googleapis.com/my-bucket",
    "resource":{
      "data":{
        LATEST_ASSET_METADATA
      },
      "discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
      "discoveryName":"Bucket",
      "location":"us",
      "parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
      "version":"v1"
    },
    "updateTime":"2024-01-30T00:00:00.000000Z"
  },
  "priorAsset":{
    "ancestors":[
      "projects/000000000000",
      "folders/000000000000",
      "organizations/000000000000"
    ],
    "assetType":"storage.googleapis.com/Bucket",
    "name":"//storage.googleapis.com/my-bucket",
    "resource":{
      "data":{
        PREVIOUS_ASSET_METADATA
      },
      "discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
      "discoveryName":"Bucket",
      "location":"us",
      "parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
      "version":"v1"
    },
    "updateTime":"2024-01-29T00:00:00.000000Z"
  },
  "priorAssetState":"PRESENT",
  "window":{
    "startTime":"2024-01-30T00:00:00.000000Z"
  }
}

Weitere Informationen zu Pub/Sub oder zum Einrichten von Abos finden Sie in der Pub/Sub-Dokumentation.

Hinweise

  1. Die Cloud Asset Inventory API in dem Projekt aktivieren, in dem Sie Cloud Asset Inventory-Befehle ausführen aus.

    Cloud Asset Inventory API aktivieren

  2. Stellen Sie sicher, dass Ihr Konto über die richtige Rolle zum Aufrufen der Cloud Asset Inventory API. Informationen zu den einzelnen Berechtigungen für die einzelnen Anruftypen finden Sie unter Berechtigungen:

  3. Erstellen Sie ein Pub/Sub-Thema, falls noch nicht geschehen.

Beschränkungen

  • Es kann bis zu 10 Minuten dauern, bis ein Feed erstellt, aktualisiert oder gelöscht wird. in Kraft treten.

  • Das Projekt, in dem ein Feed erstellt wird, muss den Feed überdauern. Das liegt daran, das Dienstkonto für die Veröffentlichung im Pub/Sub-Zielthema die sich in diesem Projekt befinden. Ein Feed funktioniert nicht mehr und wird gelöscht, sobald das Projekt endgültig gelöscht wird.

  • Pro übergeordnetem Element können bis zu 200 Feeds erstellt werden. Dieses Limit gilt nur für Feeds direkt auf ein übergeordnetes Element folgt und zählt nicht die Feeds seiner untergeordneten Elemente. Wenn Sie beispielsweise zehn Projekte in einer Organisation haben, kann jedes Projekt bis zu 200 Feeds enthalten und die Organisation kann ebenfalls bis zu 200 Feeds haben.

Feeds erstellen

gcloud

gcloud asset feeds create FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

Geben Sie folgende Werte an:

  • SCOPE: Verwenden Sie einen der folgenden Werte:

    • project=PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem der Feed erstellt werden soll.
    • folder=FOLDER_ID, wobei FOLDER_ID der Wert ID des Ordners, in dem der Feed erstellt werden soll.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID ist die ID der Organisation, in der der Feed erstellt werden soll.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: Eine eindeutige Asset-Feed-ID.
  • BILLING_PROJECT_ID: Optional. Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienst-Agent befindet, der Berechtigungen zum Verwalten Ihres Pub/Sub-Themas hat. Weitere Informationen zum Einrichten des Abrechnungsprojekts

  • TOPIC_PROJECT_ID: Die ID des Projekts, in dem sich das Pub/Sub-Thema befindet.
  • TOPIC_ID: die ID des Pub/Sub-Themas, für das Benachrichtigungen zu veröffentlichen.
  • Mindestens eine der folgenden Asset-Definitionen:
    • ASSET_NAME_#: Optional. Eine durch Kommas getrennte Liste mit vollständigen Asset-Namen.
    • ASSET_TYPE_#: Optional. Eine durch Kommas getrennte Liste von durchsuchbare Asset-Typen. RE2-kompatible reguläre Ausdrücke werden unterstützt. Wenn der reguläre Ausdruck nicht mit bei jedem unterstützten Asset-Typ, wird der Fehler INVALID_ARGUMENT zurückgegeben. Wann? --asset-types nicht angegeben ist, werden alle Asset-Typen zurückgegeben.
  • CONTENT_TYPE: Optional. Der Inhaltstyp der Metadaten, die Sie abrufen möchten. Wenn --content-type nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, das Datum der letzten Aktualisierung der Assets und zu welchen Projekten, Ordnern und Organisationen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Nur für Abonnenten der Premium- und Enterprise-Stufen von Security Command Center verfügbar. Eine durch Kommas getrennte Liste von Arten der Asset-Beziehungen die Sie abrufen möchten. Sie müssen CONTENT_TYPE festlegen auf RELATIONSHIP dafür.
  • Wenn Sie eine optionale Feedbedingung hinzufügen, machen Sie folgende Angaben: in Ihrem Befehl verwenden:
    • CONDITION_TITLE: Ein Titel, der der Feedbedingung zugewiesen werden soll.
    • CONDITION_DESCRIPTION: Eine Beschreibung, die dem Feed zugewiesen werden soll .
    • CONDITION_EXPRESSION: Der Bedingungsausdruck, der auf den Feed angewendet werden soll.

Eine vollständige Liste aller Optionen finden Sie in der Referenz zur gcloud CLI.

Beispiel

Führen Sie den folgenden Befehl aus, um einen Feed im Pub/Sub-Thema my-topic zu erstellen, der benachrichtigt, wenn Änderungen an den folgenden Ressourcen im Projekt my-project vorgenommen werden.

  • Der Cloud Storage-Bucket my-bucket
  • Beliebige BigQuery-Tabelle
gcloud asset feeds create my-feed \
    --project=my-project \
    --pubsub-topic=projects/my-project/topics/my-topic \
    --asset-names=//storage.googleapis.com/my-bucket \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

Beispielantwort

assetNames:
- //storage.googleapis.com/my-bucket
assetTypes:
- bigquery.googleapis.com/Table
condition: {}
contentType: RESOURCE
feedOutputConfig:
  pubsubDestination:
    topic: projects/my-project/topics/my-topic
name: projects/000000000000/feeds/my-feed

REST

HTTP-Methode und URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

JSON-Text anfordern:

{
  "feedId": "FEED_ID",
  "feed": {
    "assetNames": [
      "ASSET_NAME_1",
      "ASSET_NAME_2",
      "..."
    ],
    "assetTypes": [
      "ASSET_TYPE_1",
      "ASSET_TYPE_2",
      "..."
    ],
    "contentType": "CONTENT_TYPE",
    "relationshipTypes": [
      "RELATIONSHIP_TYPE_1",
      "RELATIONSHIP_TYPE_2",
      "..."
    ],
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID"
      }
    },
    "condition": {
      "title": "CONDITION_TITLE",
      "description": "CONDITION_DESCRIPTION",
      "expression": "CONDITION_EXPRESSION"
    }
  }
}

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem der Feed erstellt werden soll.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, in dem der Feed erstellt werden soll.

      Google Cloud-Projektnummer ermitteln

      Google Cloud Console

      So finden Sie die Nummer eines Google Cloud-Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Seite „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.

      gcloud-CLI

      Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem der Feed erstellt werden soll.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, in der der Feed erstellt werden soll.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienst-Agent befindet, der Berechtigungen zum Verwalten Ihres Pub/Sub-Themas hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts

  • FEED_ID: Eine eindeutige Asset-Feed-ID.
  • Mindestens eine der folgenden Asset-Definitionen:
  • CONTENT_TYPE: Optional. Die Inhaltstyp der Metadaten, die Sie abrufen möchten. Ist contentType nicht angegeben, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, wann der letzte Aufruf Assets aktualisiert wurden und zu welchen Projekten, Ordnern und Organisationen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Nur für Abonnenten der Premium- und Enterprise-Stufen von Security Command Center verfügbar. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die abgerufen werden sollen. Sie müssen CONTENT_TYPE festlegen auf RELATIONSHIP dafür.
  • TOPIC_PROJECT_ID: Die ID des Projekts, in dem der Pub/Sub-Thema wurde gefunden.
  • TOPIC_ID: die ID des Pub/Sub-Themas, für das Benachrichtigungen zu veröffentlichen.
  • Wenn Sie eine optionale Feedbedingung hinzufügen, fügen Sie dem Befehl die folgenden Details hinzu:
    • CONDITION_TITLE: Ein Titel, der der Feedbedingung zugewiesen werden soll.
    • CONDITION_DESCRIPTION: Eine Beschreibung, die dem Feed zugewiesen werden soll .
    • CONDITION_EXPRESSION: Der Bedingungsausdruck, der auf den Feed.

Weitere Informationen zu allen Optionen finden Sie in der REST-Referenz.

Befehlsbeispiele

Führen Sie einen der folgenden Befehle aus, um einen Feed in my-topic Pub/Sub zu erstellen. Thema, das benachrichtigt, wenn Änderungen an den folgenden Ressourcen im my-project-Projekt

  • Der Cloud Storage-Bucket my-bucket
  • Eine beliebige BigQuery-Tabelle

curl (Linux, macOS oder Cloud Shell)

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "feedId": "my-feed",
            "feed": {
              "assetNames": [
                "//storage.googleapis.com/my-bucket"
              ],
              "assetTypes": [
                "bigquery.googleapis.com/Table"
              ],
              "contentType": "RESOURCE",
              "feedOutputConfig": {
                "pubsubDestination": {
                  "topic": "projects/my-project/topics/my-topic"
                }
              }
            }
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "feedId": "my-feed",
  "feed": {
    "assetNames": [
      "//storage.googleapis.com/my-bucket"
    ],
    "assetTypes": [
      "bigquery.googleapis.com/Table"
    ],
    "contentType": "RESOURCE",
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/my-project/topics/my-topic"
      }
    }
  }
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content

Beispielantwort

{
  "name": "projects/000000000000/feeds/my-feed",
  "assetNames": [
    "//storage.googleapis.com/my-bucket"
  ],
  "assetTypes": [
    "bigquery.googleapis.com/Table"
  ],
  "contentType": "RESOURCE",
  "feedOutputConfig": {
    "pubsubDestination": {
      "topic": "projects/my-project/topics/my-topic"
    }
  }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


// Sample create-feed create feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	feedParent := fmt.Sprintf("projects/%s", projectID)
	assetNames := []string{"YOUR_ASSET_NAME"}
	topic := fmt.Sprintf("projects/%s/topics/%s", projectID, "YOUR_TOPIC_NAME")

	req := &assetpb.CreateFeedRequest{
		Parent: feedParent,
		FeedId: *feedID,
		Feed: &assetpb.Feed{
			AssetNames: assetNames,
			FeedOutputConfig: &assetpb.FeedOutputConfig{
				Destination: &assetpb.FeedOutputConfig_PubsubDestination{
					PubsubDestination: &assetpb.PubsubDestination{
						Topic: topic,
					},
				},
			},
		}}
	response, err := client.CreateFeed(ctx, req)
	if err != nil {
		log.Fatalf("client.CreateFeed: %v", err)
	}
	fmt.Print(response)
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.ContentType;
import com.google.cloud.asset.v1.CreateFeedRequest;
import com.google.cloud.asset.v1.Feed;
import com.google.cloud.asset.v1.FeedOutputConfig;
import com.google.cloud.asset.v1.ProjectName;
import com.google.cloud.asset.v1.PubsubDestination;
import java.io.IOException;
import java.util.Arrays;

public class CreateFeedExample {
  // Create a feed
  public static void createFeed(
      String[] assetNames, String feedId, String topic, String projectId, ContentType contentType)
      throws IOException, IllegalArgumentException {
    // String[] assetNames = {"MY_ASSET_NAME"}
    // ContentType contentType = contentType
    // String FeedId = "MY_FEED_ID"
    // String topic = "projects/[PROJECT_ID]/topics/[TOPIC_NAME]"
    // String projectID = "MY_PROJECT_ID"
    Feed feed =
        Feed.newBuilder()
            .addAllAssetNames(Arrays.asList(assetNames))
            .setContentType(contentType)
            .setFeedOutputConfig(
                FeedOutputConfig.newBuilder()
                    .setPubsubDestination(PubsubDestination.newBuilder().setTopic(topic).build())
                    .build())
            .build();
    CreateFeedRequest request =
        CreateFeedRequest.newBuilder()
            .setParent(String.format(ProjectName.of(projectId).toString()))
            .setFeedId(feedId)
            .setFeed(feed)
            .build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      Feed response = client.createFeed(request);
      System.out.println("Feed created successfully: " + response.getName());
    } catch (IOException | IllegalArgumentException e) {
      System.out.println("Error during CreateFeed: \n" + e.toString());
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const feedId = 'my feed';
// const assetNames = '//storage.googleapis.com/<BUCKET_NAME1>,//storage.googleapis.com/<BUCKET_NAME2>';
// const topicName = 'projects/<PROJECT_ID>/topics/<TOPIC_ID>'
// const contentType = 'RESOURCE';

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function createFeed() {
  const projectId = await client.getProjectId();
  // TODO(developer): Choose asset names, such as //storage.googleapis.com/[YOUR_BUCKET_NAME].
  // const assetNames = ['ASSET_NAME1', 'ASSET_NAME2', ...];

  const request = {
    parent: `projects/${projectId}`,
    feedId: feedId,
    feed: {
      assetNames: assetNames.split(','),
      contentType: contentType,
      feedOutputConfig: {
        pubsubDestination: {
          topic: topicName,
        },
      },
    },
  };

  // Handle the operation using the promise pattern.
  const result = await client.createFeed(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import asset_v1

# TODO project_id = 'Your Google Cloud Project ID'
# TODO feed_id = 'Feed ID you want to create'
# TODO asset_names = 'List of asset names the feed listen to'
# TODO topic = "Topic name of the feed"
# TODO content_type ="Content type of the feed"

client = asset_v1.AssetServiceClient()
parent = f"projects/{project_id}"
feed = asset_v1.Feed()
feed.asset_names.extend(asset_names)
feed.feed_output_config.pubsub_destination.topic = topic
feed.content_type = content_type
response = client.create_feed(
    request={"parent": parent, "feed_id": feed_id, "feed": feed}
)
print(f"feed: {response}")

Ruby

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

require "google/cloud/asset"

# project_id = 'YOUR_PROJECT_ID'
# feed_id = 'NAME_OF_FEED'
# pubsub_topic = 'YOUR_PUBSUB_TOPIC'
# asset names, e.g.: //storage.googleapis.com/[YOUR_BUCKET_NAME]
# asset_names = [ASSET_NAMES, COMMMA_DELIMTTED]
asset_service = Google::Cloud::Asset.asset_service

formatted_parent = asset_service.project_path project: project_id

feed = {
  asset_names:        asset_names,
  feed_output_config: {
    pubsub_destination: {
      topic: pubsub_topic
    }
  }
}
response = asset_service.create_feed(
  parent:  formatted_parent,
  feed_id: feed_id,
  feed:    feed
)
puts "Created feed: #{response.name}"

Feeds abrufen

gcloud

gcloud asset feeds describe FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • SCOPE: Verwenden Sie einen der folgenden Werte:

    • project=PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem sich der Feed befindet.
    • folder=FOLDER_ID, wobei FOLDER_ID der Wert ID des Ordners, in dem sich der Feed befindet.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID ist die ID der Organisation, in der sich der Feed befindet.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, die vom Der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet sich darin, der Berechtigungen zum Verwalten Ihres Pub/Sub-Thema. Weitere Informationen zum Einrichten des Abrechnungsprojekts

  • FEED_ID: Eine eindeutige Asset-Feed-ID.

In der Referenz zur gcloud CLI finden Sie alle Optionen.

Beispielantwort

assetNames:
- //storage.googleapis.com/my-bucket
assetTypes:
- bigquery.googleapis.com/Table
condition: {}
contentType: RESOURCE
feedOutputConfig:
  pubsubDestination:
    topic: projects/my-project/topics/my-topic
name: projects/000000000000/feeds/my-feed

REST

HTTP-Methode und URL:

GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem sich der Feed befindet.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER ist die Nummer des Projekts, in dem sich der Feed befindet.

      Google Cloud-Projektnummer ermitteln

      Google Cloud Console

      So finden Sie die Nummer eines Google Cloud-Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Seite „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.

      gcloud-CLI

      Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem sich der Feed befindet.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, zu der der Feed gehört.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, in der sich der standardmäßige Cloud Asset Inventory-Dienstagent befindet, der Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und ‑Tabellen hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts

  • FEED_ID: Eine eindeutige Asset-Feed-ID.

Weitere Informationen finden Sie in der REST-Referenz. Optionen.

Beispiele für Befehle

Führen Sie einen der folgenden Befehle aus, um einen bestimmten Feed abzurufen.

curl (Linux, macOS oder Cloud Shell)

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content

Beispielantwort

{
  "name": "projects/000000000000/feeds/my-feed",
  "assetNames": [
    "//storage.googleapis.com/my-bucket"
  ],
  "assetTypes": [
    "bigquery.googleapis.com/Table"
  ],
  "contentType": "RESOURCE",
  "feedOutputConfig": {
    "pubsubDestination": {
      "topic": "projects/my-project/topics/my-topic"
    }
  }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


// Sample get-feed get feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	feedName := fmt.Sprintf("projects/%s/feeds/%s", projectNumber, *feedID)
	req := &assetpb.GetFeedRequest{
		Name: feedName}
	response, err := client.GetFeed(ctx, req)
	if err != nil {
		log.Fatalf("client.GetFeed: %v", err)
	}
	fmt.Print(response)
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.Feed;

public class GetFeedExample {

  // Get a feed with full feed name
  public static void getFeed(String feedName) throws Exception {
    // String feedName = "MY_FEED_NAME"

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      Feed feed = client.getFeed(feedName);
      System.out.println("Get a feed: " + feedName);
    } catch (Exception e) {
      System.out.println("Error during GetFeed: \n" + e.toString());
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function getFeed() {
  const request = {
    name: feedName,
  };

  // Handle the operation using the promise pattern.
  const result = await client.getFeed(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));
}
getFeed();

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import asset_v1

# TODO feed_name = 'Feed Name you want to get'

client = asset_v1.AssetServiceClient()
response = client.get_feed(request={"name": feed_name})
print(f"gotten_feed: {response}")

Feeds auflisten

Wenn Sie alle Feeds für ein Projekt, einen Ordner oder eine Organisation auflisten möchten, erstellen Sie einen der für alle weiteren Anträge.

gcloud

gcloud asset feeds list \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • SCOPE: Verwenden Sie einen der folgenden Werte:

    • project=PROJECT_ID, wobei PROJECT_ID die ID des Projekts ist, in dem sich die Feeds befinden.
    • folder=FOLDER_ID, wobei FOLDER_ID der Wert ID des Ordners, in dem sich die Feeds befinden.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID ist die ID der Organisation, in der sich die Feeds befinden.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienst-Agent befindet, der Berechtigungen zum Verwalten Ihres Pub/Sub-Themas hat. Weitere Informationen zum Einrichten des Abrechnungsprojekts

In der Referenz zur gcloud CLI finden Sie alle Optionen.

Beispielantwort

- assetNames:
  - //storage.googleapis.com/my-bucket
  assetTypes:
  - bigquery.googleapis.com/Table
  condition: {}
  contentType: RESOURCE
  feedOutputConfig:
    pubsubDestination:
      topic: projects/my-project/topics/my-topic
  name: projects/000000000000/feeds/my-feed

REST

HTTP-Methode und URL:

GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem sich die Feeds befinden.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, in dem sich die Feeds befinden.

      Google Cloud-Projektnummer ermitteln

      Google Cloud Console

      So finden Sie die Nummer eines Google Cloud-Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Seite „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht sehen, gehe zu Seite Ressourcen verwalten und die Liste nach dem Projektnamen.

      gcloud-CLI

      Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem sich die Feeds befinden.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, zu der die Feeds gehören.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, in der sich der standardmäßige Cloud Asset Inventory-Dienstagent befindet, der Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und ‑Tabellen hat. Weitere Informationen zum Einrichten des Abrechnungsprojekts

Weitere Informationen finden Sie in der REST-Referenz. Optionen.

Beispiele für Befehle

Führen Sie einen der folgenden Befehle aus, um alle Feeds im my-project-Projekt aufzulisten.

curl (Linux, macOS oder Cloud Shell)

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content

Beispielantwort

{
  "feeds": [
    {
      "name": "projects/000000000000/feeds/my-feed",
      "assetNames": [
        "//storage.googleapis.com/my-bucket"
      ],
      "assetTypes": [
        "bigquery.googleapis.com/Table"
      ],
      "contentType": "RESOURCE",
      "feedOutputConfig": {
        "pubsubDestination": {
          "topic": "projects/my-project/topics/my-topic"
        }
      }
    }
  ]
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


// Sample list-feeds list feeds.
package main

import (
	"context"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
)

func main() {
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	parent := fmt.Sprintf("projects/%s", projectNumber)
	req := &assetpb.ListFeedsRequest{
		Parent: parent}
	response, err := client.ListFeeds(ctx, req)
	if err != nil {
		log.Fatalf("client.ListFeeds: %v", err)
	}
	fmt.Print(response)
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.ListFeedsResponse;
import com.google.cloud.asset.v1.ProjectName;

public class ListFeedsExample {
  // List feeds in a project.
  public static void listFeeds(String projectId) throws Exception {
    // String projectId = "MY_PROJECT_ID"
    // String topic = "projects/[PROJECT_ID]/topics/[TOPIC_NAME]"

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      ListFeedsResponse response = client.listFeeds(ProjectName.of(projectId).toString());
      System.out.println("Listed feeds under: " + projectId);
    } catch (Exception e) {
      System.out.println("Error during ListFeeds: \n" + e.toString());
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function listFeeds() {
  const projectId = await client.getProjectId();

  const request = {
    parent: `projects/${projectId}`,
  };

  // Handle the operation using the promise pattern.
  const result = await client.listFeeds(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import asset_v1

# TODO parent_resource = 'Parent resource you want to list all feeds'

client = asset_v1.AssetServiceClient()
response = client.list_feeds(request={"parent": parent_resource})
print(f"feeds: {response.feeds}")

Feeds aktualisieren

Sie können die Attribute eines vorhandenen Feeds folgendermaßen aktualisieren:

  • Bestimmte Asset-Namen hinzufügen oder entfernen oder alle Asset-Namen aus dem Feed.

  • Bestimmte Asset-Typen hinzufügen und entfernen oder alle aus dem Feed löschen

  • Bedingungen überschreiben oder aus dem Feed löschen

gcloud

gcloud asset feeds update FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \
    --clear-asset-names \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --remove-asset-names=ASSET_NAME_3,ASSET_NAME_4,... \
    --clear-asset-types \
    --add-asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --remove-asset-types=ASSET_TYPE_3,ASSET_TYPE_4,... \
    --clear-content-type \
    --content-type=CONTENT_TYPE \
    --clear-relationship-types \
    --remove-relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \
    --add-relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \
    --clear-condition-title \
    --condition-title="CONDITION_TITLE" \
    --clear-condition-description \
    --condition-description="CONDITION_DESCRIPTION" \
    --clear-condition-expression
    --condition-expression="CONDITION_EXPRESSION"

Geben Sie folgende Werte an:

  • SCOPE: Verwenden Sie einen der folgenden Werte:

    • project=PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem der Feed aktualisiert werden soll.
    • folder=FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem der Feed aktualisiert werden soll.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID ist die ID der Organisation, in der der Feed aktualisiert werden soll.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: Eine eindeutige Asset-Feed-ID.
  • BILLING_PROJECT_ID: Optional. Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienst-Agent befindet, der Berechtigungen zum Verwalten Ihres Pub/Sub-Themas hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts

  • TOPIC_PROJECT_ID: Die ID des Projekts, in dem sich das Pub/Sub-Thema befindet.
  • TOPIC_ID: die ID des Pub/Sub-Themas, für das Benachrichtigungen zu veröffentlichen.
  • Mindestens eine der folgenden Asset-Definitionen:
    • ASSET_NAME_#: Optional. Eine durch Kommas getrennte Liste mit vollständigen Asset-Namen.
    • ASSET_TYPE_#: Optional. Eine durch Kommas getrennte Liste von suchbaren Asset-Typen. RE2-kompatible reguläre Ausdrücke werden unterstützt. Wenn der reguläre Ausdruck nicht mit bei jedem unterstützten Asset-Typ, wird der Fehler INVALID_ARGUMENT zurückgegeben. Wann? --asset-types nicht angegeben ist, werden alle Asset-Typen zurückgegeben.
  • CONTENT_TYPE: Optional. Der Inhaltstyp der Metadaten, die Sie abrufen möchten. Wann? --content-type nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, wann der letzte Aufruf Assets aktualisiert wurden und zu welchen Projekten, Ordnern und Organisationen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Nur verfügbar für Security Command Center Premium- und Enterprise-Stufe Abonnenten. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die abgerufen werden sollen. Sie müssen CONTENT_TYPE festlegen auf RELATIONSHIP dafür.
  • Wenn Sie eine optionale Feedbedingung hinzufügen, fügen Sie dem Befehl die folgenden Details hinzu:
    • CONDITION_TITLE: Ein Titel, der der Feedbedingung zugewiesen werden soll.
    • CONDITION_DESCRIPTION: Eine Beschreibung, die dem Feed zugewiesen werden soll .
    • CONDITION_EXPRESSION: Der Bedingungsausdruck, der auf den Feed angewendet werden soll.

Eine vollständige Liste aller Optionen finden Sie in der Referenz zur gcloud CLI.

Beispiel

Führen Sie den folgenden Befehl aus, um das Pub/Sub-Thema my-topic im Projekt my-project zu aktualisieren. Mit dieser Anfrage werden alle Asset-Namen aus dem Monitoring entfernt und der Asset-Typ gkemulticloud.googleapis.com/AttachedCluster hinzugefügt.

gcloud asset feeds update my-feed \
    --project=my-project \
    --pubsub-topic=projects/my-project/topics/my-topic \
    --clear-asset-names \
    --add-asset-types=gkemulticloud.googleapis.com/AttachedCluster

Beispielantwort

assetTypes:
- bigquery.googleapis.com/Table
- gkemulticloud.googleapis.com/AttachedCluster
condition: {}
contentType: RESOURCE
feedOutputConfig:
  pubsubDestination:
    topic: projects/my-project/topics/my-topic
name: projects/000000000000/feeds/my-feed

Um die Attribute eines Feeds zu aktualisieren, müssen Sie das Attribut angeben. im update_mask und dem Wert dieses Attributs.

REST

HTTP-Methode und URL:

PATCH https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

JSON-Text anfordern:

{
  "feed": {
    "assetNames": [
      "ASSET_NAME_1",
      "ASSET_NAME_2",
      "..."
    ],
    "assetTypes": [
      "ASSET_TYPE_1",
      "ASSET_TYPE_2",
      "..."
    ],
    "contentType": "CONTENT_TYPE",
    "relationshipTypes": [
      "RELATIONSHIP_TYPE_1",
      "RELATIONSHIP_TYPE_2",
      "..."
    ],
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID"
      }
    }
  },
  "condition": {
    "title": "CONDITION_TITLE",
    "description": "CONDITION_DESCRIPTION",
    "expression": "CONDITION_EXPRESSION"
  },
  "update_mask": {
    "paths": [
      "feed_output_config.pubsub_destination.topic",
      ATTRIBUTE_PATH_1,
      ATTRIBUTE_PATH_2,
      ...
    ]
  }
}

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem der Feed aktualisiert werden soll.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER ist die Nummer des Projekts, in dem der Feed aktualisiert werden soll.

      Google Cloud-Projektnummer ermitteln

      Google Cloud Console

      So finden Sie die Nummer eines Google Cloud-Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Seite „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht sehen, gehe zu Seite Ressourcen verwalten und die Liste nach dem Projektnamen.

      gcloud-CLI

      Mit dem folgenden Befehl können Sie eine Google Cloud-Projektnummer abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID der Wert ID des Ordners, in dem der Feed aktualisiert werden soll.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID ist die ID der Organisation, in der der Feed aktualisiert werden soll.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, die vom Der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet sich darin, der Berechtigungen zum Verwalten Ihres Pub/Sub-Thema. Weitere Informationen zum Festlegen des Abrechnungsprojekts

  • FEED_ID: Eine eindeutige Asset-Feed-ID.
  • Mindestens eine der folgenden Asset-Definitionen:
  • CONTENT_TYPE: Optional. Die Inhaltstyp der Metadaten, die Sie abrufen möchten. Ist contentType nicht angegeben, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, wann der letzte Aufruf Assets aktualisiert wurden und zu welchen Projekten, Ordnern und Organisationen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Nur verfügbar für Security Command Center Premium- und Enterprise-Stufe Abonnenten. Eine durch Kommas getrennte Liste von Arten der Asset-Beziehungen die Sie abrufen möchten. Sie müssen CONTENT_TYPE auf RELATIONSHIP setzen, damit das funktioniert.
  • TOPIC_PROJECT_ID: Die ID des Projekts, in dem der Pub/Sub-Thema wurde gefunden.
  • TOPIC_ID: Die ID des Pub/Sub-Themas, in dem Benachrichtigungen veröffentlicht werden sollen.
  • Wenn Sie eine optionale Feedbedingung hinzufügen, machen Sie folgende Angaben: in Ihrem Befehl verwenden:
    • CONDITION_TITLE: Ein Titel, der der Feedbedingung zugewiesen werden soll.
    • CONDITION_DESCRIPTION: Eine Beschreibung, die dem Feed zugewiesen werden soll .
    • CONDITION_EXPRESSION: Der Bedingungsausdruck, der auf den Feed.

Weitere Informationen zu allen Optionen finden Sie in der REST-Referenz.

Befehlsbeispiele

Führen Sie einen der folgenden Befehle aus, um das Pub/Sub-Thema my-topic im Projekt my-project zu aktualisieren. Mit dieser Anfrage werden alle Asset-Namen aus dem Monitoring entfernt und der Asset-Typ gkemulticloud.googleapis.com/AttachedCluster hinzugefügt.

curl (Linux, macOS oder Cloud Shell)

curl -X PATCH \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "feed": {
              "assetNames": [],
              "assetTypes": [
                "gkemulticloud.googleapis.com/AttachedCluster"
              ],
              "feedOutputConfig": {
                "pubsubDestination": {
                  "topic": "projects/my-project/topics/my-topic"
                }
              }
            },
            "update_mask": {
              "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"]
            }
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "feed": {
    "assetNames": [],
    "assetTypes": [
      "gkemulticloud.googleapis.com/AttachedCluster"
    ],
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/my-project/topics/my-topic"
      }
    }
  },
  "update_mask": {
    "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"]
  }
}
"@

Invoke-WebRequest `
  -Method PATCH `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content

Beispielantwort

{
  "feeds": [
    {
      "name": "projects/000000000000/feeds/my-feed",
      "assetTypes": [
        "bigquery.googleapis.com/Table",
        "gkemulticloud.googleapis.com/AttachedCluster"
      ],
      "contentType": "RESOURCE",
      "feedOutputConfig": {
        "pubsubDestination": {
          "topic": "projects/my-project/topics/my-topic"
        }
      }
    }
  ]
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


// Sample update-feed update feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
	field_mask "google.golang.org/genproto/protobuf/field_mask"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	feedName := fmt.Sprintf("projects/%s/feeds/%s", projectNumber, *feedID)
	topic := fmt.Sprintf("projects/%s/topics/%s", projectID, "TOPIC_TO_UPDATE")

	req := &assetpb.UpdateFeedRequest{
		Feed: &assetpb.Feed{
			Name: feedName,
			FeedOutputConfig: &assetpb.FeedOutputConfig{
				Destination: &assetpb.FeedOutputConfig_PubsubDestination{
					PubsubDestination: &assetpb.PubsubDestination{
						Topic: topic,
					},
				},
			},
		},
		UpdateMask: &field_mask.FieldMask{
			Paths: []string{"feed_output_config.pubsub_destination.topic"},
		},
	}
	response, err := client.UpdateFeed(ctx, req)
	if err != nil {
		log.Fatalf("client.UpdateFeed: %v", err)
	}
	fmt.Print(response)
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.Feed;
import com.google.cloud.asset.v1.FeedOutputConfig;
import com.google.cloud.asset.v1.PubsubDestination;
import com.google.cloud.asset.v1.UpdateFeedRequest;
import com.google.protobuf.FieldMask;

public class UpdateFeedExample {

  // Update a feed
  public static void updateFeed(String feedName, String topic) throws Exception {
    // String feedName = "MY_FEED_NAME"
    // String topic = "projects/[PROJECT_ID]/topics/[TOPIC_NAME]"
    Feed feed =
        Feed.newBuilder()
            .setName(feedName)
            .setFeedOutputConfig(
                FeedOutputConfig.newBuilder()
                    .setPubsubDestination(PubsubDestination.newBuilder().setTopic(topic).build())
                    .build())
            .build();
    UpdateFeedRequest request =
        UpdateFeedRequest.newBuilder()
            .setFeed(feed)
            .setUpdateMask(
                FieldMask.newBuilder()
                    .addPaths("feed_output_config.pubsub_destination.topic")
                    .build())
            .build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      Feed response = client.updateFeed(request);
      System.out.println("Feed updated successfully: " + response.getName());
    } catch (Exception e) {
      System.out.println("Error during UpdateFeed: \n" + e.toString());
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();
// example inputs:
// const fullQueryName = 'folders/<FOLDER_NUMBER>/savedQueries/<QUERY_ID>';
// const description = 'a new description';
async function updateSavedQuery() {
  const request = {
    savedQuery: {
      name: fullQueryName,
      description: description,
    },
    updateMask: {
      paths: ['description'],
    },
  };

  // Handle the operation using the promise pattern.
  const [query] = await client.updateSavedQuery(request);
  // Do things with with the response.
  console.log('Query name:', query.name);
  console.log('Query description:', query.description);
  console.log('Created time:', query.createTime);
  console.log('Updated time:', query.lastUpdateTime);
  console.log('Query type:', query.content.queryContent);
  console.log('Query content:', JSON.stringify(query.content, null, 4));

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import asset_v1
from google.protobuf import field_mask_pb2

# TODO feed_name = 'Feed Name you want to update'
# TODO topic = "Topic name you want to update with"

client = asset_v1.AssetServiceClient()
feed = asset_v1.Feed()
feed.name = feed_name
feed.feed_output_config.pubsub_destination.topic = topic
update_mask = field_mask_pb2.FieldMask()
# In this example, we update topic of the feed
update_mask.paths.append("feed_output_config.pubsub_destination.topic")
response = client.update_feed(request={"feed": feed, "update_mask": update_mask})
print(f"updated_feed: {response}")

Feeds löschen

Wenn Sie nicht mehr über Asset-Änderungen benachrichtigt werden möchten, können Sie einen Feed mit einer der folgenden Anfragen löschen.

gcloud

gcloud asset feeds delete FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • SCOPE: Verwenden Sie einen der folgenden Werte:

    • project=PROJECT_ID, wobei PROJECT_ID der Wert ID des Projekts, in dem sich der Feed befindet.
    • folder=FOLDER_ID, wobei FOLDER_ID der Wert ID des Ordners, in dem sich der Feed befindet.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID ist die ID der Organisation, in der sich der Feed befindet.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, die vom Der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet sich darin, der Berechtigungen zum Verwalten Ihres Pub/Sub-Thema. Weitere Informationen zum Einrichten des Abrechnungsprojekts

In der Referenz zur gcloud CLI finden Sie alle Optionen.

Beispielantwort

Bei einem erfolgreichen Löschvorgang wird keine Antwort zurückgegeben.

REST

HTTP-Methode und URL:

DELETE https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER ist die Nummer des Projekts, in dem sich der Feed befindet.

      Google Cloud-Projektnummer ermitteln

      Google Cloud Console

      So finden Sie die Nummer eines Google Cloud-Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Seite „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.

      gcloud-CLI

      Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem sich der Feed befindet.

      ID eines Google Cloud-Ordners ermitteln

      Google Cloud Console

      So finden Sie die ID eines Google Cloud-Ordners:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud-Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für die Ordnernamen. Entfernen Sie das Flag --format, um weitere Informationen zum Ordner gefunden.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, zu der der Feed gehört.

      ID einer Google Cloud-Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud-Organisation:

      1. Öffnen Sie die Google Cloud Console.

        Zur Google Cloud Console gehen

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienst-Agent befindet, der Berechtigungen zum Verwalten Ihres Pub/Sub-Themas hat. Weitere Informationen zum Einrichten des Abrechnungsprojekts

Weitere Informationen zu allen Optionen finden Sie in der REST-Referenz.

Beispiele für Befehle

Führen Sie einen der folgenden Befehle aus, um einen bestimmten Feed zu löschen.

curl (Linux, macOS oder Cloud Shell)

curl -X DELETE \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method DELETE `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed" | Select-Object -Expand Content

Beispielantwort

{}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


// Sample delete-feed delete feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	feedName := fmt.Sprintf("projects/%s/feeds/%s", projectNumber, *feedID)
	req := &assetpb.DeleteFeedRequest{
		Name: feedName,
	}
	if err = client.DeleteFeed(ctx, req); err != nil {
		log.Fatalf("client.DeleteFeed: %v", err)
	}
	fmt.Print("Deleted Feed")
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.asset.v1.AssetServiceClient;

public class DeleteFeedExample {

  // Delete a feed with full feed name
  public static void deleteFeed(String feedName) throws Exception {
    // String feedName = "MY_FEED_NAME"

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      client.deleteFeed(feedName);
      System.out.println("Feed deleted");
    } catch (Exception e) {
      System.out.println("Error during DeleteFeed: \n" + e.toString());
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function deleteFeed() {
  const request = {
    name: feedName,
  };

  // Handle the operation using the promise pattern.
  const result = await client.deleteFeed(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import asset_v1

# TODO feed_name = 'Feed name you want to delete'

client = asset_v1.AssetServiceClient()
client.delete_feed(request={"name": feed_name})
print("deleted_feed")

Feedbedingungen

Wenn Sie nur bestimmte Arten von Änderungen für ein bestimmtes Asset sehen möchten, können Sie eine Bedingung hinzufügen in Ihrem Feed. Bedingungen sind geschrieben in Common Expression Language (CEL):

Bedingungen werden nur eingeschränkt unterstützt. In einigen Fällen ist das Erstellen oder Aktualisieren von Feeds mit Bedingungen zu einer Verzögerung führen.

Beschränkungen

  • Bedingungsausdrücke haben eine Längenbeschränkung von 3.000 Zeichen.

  • Die meisten Variablennamen in Bedingungsausdrücken sind in Kleinbuchstaben mit Unterstrichen zwischen den einzelnen Wörtern dargestellt. Beispiel: example_variable.

    Einzige Ausnahme sind die Variablennamen der Unterfelder von data im Objekt Resource. Sie haben kein Worttrennzeichen und das erste Zeichen jedes Wortes nach der Groß- und Kleinschreibung. Beispiel: exampleVariable

  • Einige Validierungen für Bedingungsausdrücke werden während der Erstellung oder Aktualisierung des Feeds durchgeführt. Solche Validierungen sind jedoch nicht umfassend, insbesondere für Bedingungen in temporal_asset.asset.resource.data das einen dynamischen Typ hat. Filtern Sie Ihren Feed nach Möglichkeit mithilfe der die entsprechenden gcloud CLI- oder REST API-Parameter verwenden.

  • Wenn während der Auswertung Fehler auftreten, werden keine Benachrichtigungen gesendet. Der Fehler werden protokolliert.

  • Bei dynamischen Typen in temporal_asset.asset.resource.data lösen Bedingungen für fehlende Felder Laufzeitfehler aus und die Benachrichtigung wird nicht veröffentlicht. Für die Bedingung temporal_asset.asset.resource.data.name != "my_name", wenn das Feld name gleich fehlt, schlägt die Bewertung fehl und Sie erhalten keine Benachrichtigungen. Funktioniert die Bedingung nur bei bestimmten Feldern, fügen Sie der Bedingung eine Existenzprüfung hinzu, um sicherzustellen, dass sie ordnungsgemäß evaluiert wird.

  • Statische Enum-Typen können entweder als vollständig qualifizierte Pfadnamen oder als rohe Ganzzahlen dargestellt werden. Die folgenden Ausdrücke sind beispielsweise für prior_asset_state gültig:

    temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
    

    und

    temporal_asset.prior_asset_state == 3
    

    Dynamische Enum-Typen in temporal_asset.asset.resource.data werden als Rohstrings dargestellt. Der folgende Ausdruck ist beispielsweise für den Asset-Typ gültig cloudresourcemanager.googleapis.com/Project:

    temporal_asset.asset.resource.data.lifecycleState == "ACTIVE"
    

Bedingungsausdruck mit CEL erstellen

In einer Feedbedingung wird Common Expression Language (CEL) verwendet, um auf Grundlage von Attributdaten boolesche Entscheidungen zu treffen. Einen Bedingungsausdruck besteht aus einer oder mehreren Anweisungen, die mit logischen Operatoren verbunden sind. Jedes -Anweisung gibt eine attributbasierte Steuerungsregel wieder, die für die TemporalAsset, um zu ermitteln, ob eine Benachrichtigung gesendet wird.

Die folgenden CEL-Features sind für Feedbedingungen am wichtigsten:

  • Variablen: In Bedingungen wird ein bestimmtes Attribut mithilfe von Variablen ausgedrückt, z. B.: temporal_asset.deleted (Boolean) oder temporal_asset.asset.name (String) Diese Variablen werden basierend auf dem Kontext unter Laufzeit.

  • Operatoren: Jeder Datentyp, z. B. String, unterstützt eine Reihe von Operatoren, die zum Erstellen eines logischen Ausdrucks verwendet werden können. Meist werden Operatoren verwendet, um den Wert einer Variablen mit einem Literalwert wie temporal_asset.asset.name == "//cloudresourcemanager.googleapis.com/projects/12345" zu vergleichen. Wenn der Eingabewert von temporal_asset.asset.name in diesem Beispiel //cloudresourcemanager.googleapis.com/projects/12345 ist, wird der Ausdruck als true ausgewertet.

  • Funktionen: Eine Funktion ist ein zusammengesetzter Operator für Datentypen, die komplexere Vorgänge unterstützen. In Bedingungsausdrücken gibt es vordefinierte Funktionen, die in Verbindung mit bestimmten Datentypen genutzt werden können. Beispiel: temporal_asset.asset.name.contains("keyword") verwendet eine Funktion namens contains, um zu prüfen, ob der Wert von temporal_asset.asset.name Folgendes enthält: "keyword". Wenn ja, wird true zurückgegeben.

  • Logische Operatoren: Bedingungen unterstützen logische Operatoren, die verwendet werden können. , um komplexe logische Ausdrücke aus grundlegenden Ausdrucksanweisungen zu erstellen: && (AND) und || (OR). Diese logischen Operatoren ermöglichen die Verwendung mehrerer Eingabevariablen in einem Bedingungsausdruck. Beispiel: In temporal_asset.deleted && temporal_asset.window.start_time.getFullYear() > 2020 werden zwei einfache Anweisungen verknüpft, die beide erfüllt sein müssen, damit die Auswertung insgesamt true ergibt.

Weitere Informationen zu den CEL-Funktionen finden Sie in der Sprachdefinition.

Bedingungsvariablen verwenden

Mithilfe von Bedingungsvariablen können Sie Bedingungen für verschiedene Attribute erstellen. Unterstützte Bedingungsvariablen sind:

  • temporal_asset: Die letzte Asset-Änderung im TemporalAsset-Format. Wenn die Bedingung als „true“ ausgewertet wird, wird TemporalAsset an das konfigurierte Ziel gesendet.

Beispiele für Bedingungsausdrücke

Der folgende Bedingungsausdruck sendet Benachrichtigungen zu Erstellungsereignissen:

temporal_asset.deleted == false &&
temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST

Der folgende Bedingungsausdruck sendet Benachrichtigungen für Ressourcen, die sich in den Ordnern 12345 und 23456 befinden:

"folders/12345" in temporal_asset.asset.ancestors ||
"folders/23456" in temporal_asset.asset.ancestors

Mit dem folgenden Bedingungsausdruck werden Benachrichtigungen gesendet, wenn neue zulässige Regeln vorhanden sind werden Firewalls hinzugefügt, vorausgesetzt, der Asset-Typ ist bereits auf compute.googleapis.com/Firewall im Feed:

size(temporal_asset.asset.resource.data.allowed) >
size(temporal_asset.prior_asset.resource.data.allowed)

Der folgende Bedingungsausdruck sendet Benachrichtigungen für VM-Instanzen mit dem Maschinentyp n1-standard-1, unter der Annahme, dass der Asset-Typ im Feed bereits auf compute.googleapis.com/Instance gesetzt ist:

temporal_asset.asset.resource.data.machineType.endsWith('/machineTypes/n1-standard-1')

Der folgende Bedingungsausdruck sendet Benachrichtigungen für Storage-Buckets mit beliebigen IAM-Richtlinien für allUsers, unter der Annahme, dass der Asset-Typ auf storage.googleapis.com/Bucket und der Inhaltstyp auf IAM_POLICY festgelegt ist:

temporal_asset.asset.iam_policy.bindings.exists(b, b.members.exists(m, m == "allUsers"))

Mit dem folgenden Bedingungsausdruck wird eine Benachrichtigung gesendet, wenn ein Storage-Bucket mit dem Schlüssel test im Label gelöscht wird:

temporal_asset.deleted == true && temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.PRESENT && "test" in temporal_asset.prior_asset.resource.data.labels

Fehlerbehebung

Wenn Sie keine Benachrichtigungen zu Aktualisierungen für Ressourcen oder IAM-Richtlinien erhalten, können Sie mit den folgenden Schritten versuchen, das Problem zu beheben:

  • Die Metadaten der Inhalte müssen geändert werden. Der Echtzeitfeed sendet nur Aktualisierungen, wenn sich die Metadaten der unterstützten Ressourcentypen geändert haben. Vorgänge wie das Hochladen einer neuen Datei in den Cloud Storage-Bucket löst keine Metadatenänderung aus.

  • Ihre Assets müssen mit einem der im Feed angegebenen Asset-Namen oder ‑Typen übereinstimmen.

  • Wenn Sie ein Projekt löschen, haben Sie 30 Tage Zeit, den Vorgang rückgängig zu machen. Aus diesem Grund wird das Feld deleted in den Asset-Metadaten wird erst dann festgelegt, wenn das Projekt endgültig gelöscht wurde. Wenn Sie Projekte überwachen möchten, die noch gelöscht werden sollen, können Sie stattdessen eine Bedingung für das Feld lifecycleState des Projekts festlegen. Für Beispiel: temporal_asset.asset.resource.data.lifecycleState == "DELETE_REQUESTED"

  • Prüfen Sie die Logs auf Fehler beim Veröffentlichen von Updates. zu Ihrem Thema.

Cloud Logging

Wenn Echtzeitfeeds keine Ressourcen oder Aktualisierungen von IAM-Richtlinien über Pub/Sub senden, protokolliert Cloud Asset Inventory den Fehlerstatus und die Meldung in Logging. Die Protokollierung ist standardmäßig aktiviert und gehört zu Google Cloud Observability. Weitere Informationen zu den Preisen für Google Cloud Observability

Echtzeit-Feedlogs ansehen

Das Echtzeit-Feedprotokoll wird durch ein Pub/Sub-Thema indexiert. Alle anzeigen Protokolle:

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf die Liste Ressource, die sich neben dem Feld Alle Felder durchsuchen befindet. .

  3. Suchen Sie nach Cloud Pub/Sub Topic und klicken Sie dann auf den Ressourcentyp Cloud Pub/Sub-Thema.

  4. Klicken Sie auf die Themen-ID, die Sie aufrufen möchten.

  5. Klicken Sie auf Anwenden.

Für Logfelder wird eine UTF-8-Codierung erzwungen. Zeichen, bei denen es sich nicht um UTF-8-Zeichen handelt, werden durch Fragezeichen ersetzt.

Log-Daten

Echtzeitfeed-Logeinträge enthalten folgende Arten von Informationen:

  • Allgemeine Informationen, die in Google Cloud-Logs angezeigt werden, wie Wichtigkeit, Projekt-ID, Projektnummer und Zeitstempel.

  • Felder im Echtzeit-Feed-Protokoll in jsonPayload, die Asset-Name und Feed enthalten Ausgabekonfiguration und Fehlerstatus beim Veröffentlichen von Ressourcen oder IAM Richtlinienaktualisierungen.

Die folgende Tabelle zeigt, welche Art von Informationen die einzelnen Felder enthalten.

Feld Typ und Beschreibung
name

string

Vollständiger Name des Feeds. Das Format ist eines der folgenden:

  • projects/PROJECT_ID/feeds/FEED_ID
  • folders/FOLDER_ID/feeds/FEED_ID
  • organizations/ORGANIZATION_ID/feeds/FEED_ID
asset_name

string

Vollständiger Name des Assets, um Aktualisierungen zu erhalten. Beispiel:

//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1

Weitere Informationen finden Sie unter Ressourcennamen .

condition

Expr

Feedbedingung, die bestimmt, ob eine Asset-Aktualisierung veröffentlicht werden soll.

error_status

Status

Status, wenn Asset-Updates nicht in einem Feed veröffentlicht werden können.

feed_output_config

FeedOutputConfig

Konfiguration der Feedausgabe, die definiert, wo die Asset-Aktualisierungen veröffentlicht werden.