Memantau perubahan aset dengan Pub/Sub

Anda dapat menerima notifikasi real-time tentang perubahan resource dan kebijakan dengan membuat dan berlangganan feed.

Saat membuat feed, Anda dapat menentukan bahwa Anda ingin memantau perubahan jenis resource yang didukung, kebijakan IAM, kebijakan akses, dan kebijakan organisasi dalam suatu organisasi, folder, project. Selain itu, Anda dapat menambahkan kondisi ke feed sehingga Anda hanya menerima notifikasi untuk jenis perubahan tertentu pada aset.

Setelah membuat feed, Anda akan menerima notifikasi melalui Pub/Sub setiap kali aset yang ditentukan berubah. Tujuan pesan pertama yang dipublikasikan ke topik Pub/Sub adalah pesan selamat datang di format string, dan semua pesan berikutnya dalam format TemporalAsset.

Berikut adalah contoh pesan Pub/Sub untuk jenis konten 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"
  }
}

Untuk mempelajari Pub/Sub lebih lanjut atau cara menyiapkan langganan, lihat Dokumentasi Pub/Sub.

Sebelum memulai

  1. Aktifkan Cloud Asset Inventory API di project tempat Anda menjalankan perintah Cloud Asset Inventory.

    Mengaktifkan Cloud Asset Inventory API

  2. Pastikan akun Anda memiliki peran yang benar untuk memanggil Cloud Asset Inventory API. Untuk izin individual bagi setiap jenis panggilan, lihat Izin.

  3. Buat topik Pub/Sub, jika Anda belum sudah memilikinya.

Batasan

  • Diperlukan waktu hingga 10 menit untuk setiap pembuatan, pembaruan, atau penghapusan feed diberlakukan.

  • Project tempat feed dibuat harus lebih lama dari feed. Hal ini karena akun layanan yang digunakan untuk memublikasikan ke topik Pub/Sub tujuan yang ada dalam project tersebut. Feed tidak lagi berfungsi dan akan dihapus segera setelah penghapusan project bersifat permanen.

  • Anda dapat membuat hingga 200 feed pada induk. Batas ini hanya berlaku untuk feed mengikuti induk secara langsung dan tidak menghitung feed turunannya. Misalnya, jika Anda memiliki 10 project dalam organisasi, setiap project dapat memiliki hingga 200 feed, dan organisasi juga dapat memiliki hingga 200 feed.

Membuat feed

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"

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project tempat membuat feed.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat membuat feed.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed dibuat.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: ID feed aset unik.
  • BILLING_PROJECT_ID: Opsional. Project ID tempat agen layanan Cloud Asset Inventory default berada yang memiliki izin untuk mengelola topik Pub/Sub Anda. Baca selengkapnya tentang cara menetapkan project penagihan.

  • TOPIC_PROJECT_ID: ID project tempat topik Pub/Sub berada.
  • TOPIC_ID: ID topik Pub/Sub untuk memublikasikan notifikasi.
  • Setidaknya salah satu definisi aset berikut:
  • CONTENT_TYPE: Opsional. Tujuan jenis konten dari metadata yang ingin Anda ambil. Jika --content-type tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, waktu terakhir kali aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.
  • RELATIONSHIP_TYPE_#: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma untuk jenis hubungan aset yang ingin Anda ambil. Anda harus menetapkan CONTENT_TYPE ke RELATIONSHIP agar fitur ini berfungsi.
  • Jika menambahkan kondisi feed opsional, sertakan detail berikut dalam perintah Anda:
    • CONDITION_TITLE: Judul yang akan ditetapkan ke kondisi feed.
    • CONDITION_DESCRIPTION: Deskripsi yang akan ditetapkan ke kondisi feed.
    • CONDITION_EXPRESSION: Ekspresi kondisi yang akan diterapkan ke feed.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh

Jalankan perintah berikut untuk membuat feed di topik Pub/Sub my-topic yang memberi tahu saat perubahan dilakukan pada resource berikut dalam my-project proyek.

  • Bucket Cloud Storage my-bucket
  • Semua tabel BigQuery
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

Contoh respons

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

Metode HTTP dan URL:

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

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Meminta isi JSON:

{
  "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"
    }
  }
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project untuk membuat feed.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project tempat membuat feed.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud.

        Buka Sambutan

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat halaman Welcome {i>heading<i}.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang dicari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed akan dibuat.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed akan dibuat.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Project ID yang agen layanan Inventaris Aset Cloud default, yang memiliki izin untuk mengelola Topik Pub/Sub. Baca selengkapnya tentang cara menetapkan project penagihan.

  • FEED_ID: ID feed aset unik.
  • Setidaknya salah satu definisi aset berikut:
  • CONTENT_TYPE: Opsional. Jenis konten metadata yang ingin Anda ambil. Jika contentType tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, waktu terakhir aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.
  • RELATIONSHIP_TYPE_#: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma dari jenis hubungan aset yang ingin diambil. Anda harus menetapkan CONTENT_TYPE ke RELATIONSHIP agar berfungsi.
  • TOPIC_PROJECT_ID: ID project tempat Topik Pub/Sub ditemukan.
  • TOPIC_ID: ID topik Pub/Sub untuk memublikasikan notifikasi.
  • Jika menambahkan kondisi feed opsional, sertakan detail berikut dalam perintah Anda:
    • CONDITION_TITLE: Judul yang akan ditetapkan ke kondisi feed.
    • CONDITION_DESCRIPTION: Deskripsi yang akan ditetapkan ke kondisi feed.
    • CONDITION_EXPRESSION: Ekspresi kondisi yang akan diterapkan ke feed.

Lihat referensi REST untuk semua lainnya.

Contoh perintah

Jalankan salah satu perintah berikut untuk membuat feed di Pub/Sub my-topic yang memberi tahu saat terjadi perubahan pada resource berikut dalam project my-project.

  • Bucket Cloud Storage my-bucket
  • Semua tabel BigQuery

curl (Linux, macOS, atau 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

Contoh respons

{
  "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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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}"

Mendapatkan feed

gcloud

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

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed berada.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed berada.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed berada.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Project ID yang agen layanan Inventaris Aset Cloud default, yang memiliki izin untuk mengelola Topik Pub/Sub. Baca selengkapnya tentang cara menetapkan project penagihan.

  • FEED_ID: ID feed aset unik.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh respons

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

Metode HTTP dan URL:

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

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed berada.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah jumlah project tempat feed berada.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud.

        Buka Sambutan

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat halaman Welcome {i>heading<i}.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang dicari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed berada.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed berada.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Project ID yang agen layanan Inventaris Aset Cloud default, yang memiliki izin untuk mengelola set data dan tabel BigQuery. Baca selengkapnya tentang cara menetapkan project penagihan.

  • FEED_ID: ID feed aset unik.

Lihat referensi REST untuk semua lainnya.

Contoh perintah

Jalankan salah satu perintah berikut untuk mendapatkan feed tertentu.

curl (Linux, macOS, atau 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

Contoh respons

{
  "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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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}")

Membuat daftar feed

Untuk menampilkan daftar semua feed untuk project, folder, atau organisasi, buat salah satu terhadap permintaan berikut.

gcloud

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

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed berada.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed berada.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed berada.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: ID project tempat agen layanan Cloud Asset Inventory default berada yang memiliki izin untuk mengelola topik Pub/Sub Anda. Baca selengkapnya tentang cara menetapkan project penagihan.

Baca referensi gcloud CLI untuk mengetahui semua opsi.

Contoh respons

- 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

Metode HTTP dan URL:

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

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed berada.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah jumlah project tempat feed berada.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Welcome di Konsol Google Cloud.

        Buka Selamat Datang

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat halaman Welcome {i>heading<i}.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang Anda cari, pergi ke Halaman Mengelola resource dan memfilter daftar menggunakan nama proyek tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed berada.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed berada.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: ID project tempat agen layanan Cloud Asset Inventory default berada yang memiliki izin untuk mengelola set data dan tabel BigQuery Anda. Baca selengkapnya tentang cara menetapkan project penagihan.

Lihat referensi REST untuk semua lainnya.

Contoh perintah

Jalankan salah satu perintah berikut untuk mencantumkan semua feed dalam project my-project.

curl (Linux, macOS, atau 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

Contoh respons

{
  "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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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}")

Memperbarui feed

Anda dapat memperbarui atribut feed yang ada dengan cara berikut:

  • Menambahkan dan menghapus nama aset tertentu, atau menghapus semuanya dari feed.

  • Menambahkan dan menghapus jenis aset tertentu, atau menghapus semuanya dari feed.

  • Menutupi kondisi atau menghapusnya dari feed.

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"

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed akan diperbarui.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder untuk memperbarui feed.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed akan diperbarui.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: ID feed aset unik.
  • BILLING_PROJECT_ID: Opsional. Project ID tempat agen layanan Cloud Asset Inventory default berada yang memiliki izin untuk mengelola topik Pub/Sub Anda. Baca selengkapnya tentang cara menetapkan project penagihan.

  • TOPIC_PROJECT_ID: ID project tempat topik Pub/Sub berada.
  • TOPIC_ID: ID topik Pub/Sub untuk memublikasikan notifikasi.
  • Setidaknya salah satu definisi aset berikut:
  • CONTENT_TYPE: Opsional. Jenis konten metadata yang ingin Anda ambil. Kapan --content-type tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, saat terakhir kali aset diperbarui, dan project, folder, serta organisasi apa yang mereka miliki.
  • RELATIONSHIP_TYPE_#: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma dari jenis hubungan aset yang ingin diambil. Anda harus menetapkan CONTENT_TYPE ke RELATIONSHIP agar fitur ini berfungsi.
  • Jika menambahkan kondisi feed opsional, sertakan detail berikut dalam perintah Anda:
    • CONDITION_TITLE: Judul yang akan ditetapkan ke kondisi feed.
    • CONDITION_DESCRIPTION: Deskripsi yang akan ditetapkan ke kondisi feed.
    • CONDITION_EXPRESSION: Ekspresi kondisi yang akan diterapkan ke feed Anda.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh

Jalankan perintah berikut untuk mengupdate topik Pub/Sub my-topic di project my-project. Permintaan ini menghapus semua nama aset dari pemantauan, dan menambahkan jenis aset gkemulticloud.googleapis.com/AttachedCluster.

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

Contoh respons

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

Untuk memperbarui atribut feed, Anda harus menentukan atributnya jalur di update_mask dan nilai atribut tersebut.

REST

Metode HTTP dan URL:

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

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Meminta isi JSON:

{
  "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,
      ...
    ]
  }
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project untuk memperbarui feed.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project tempat feed akan diperbarui.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Welcome di Konsol Google Cloud.

        Buka Selamat Datang

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat halaman Welcome {i>heading<i}.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang Anda cari, pergi ke Halaman Mengelola resource dan memfilter daftar menggunakan nama proyek tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder untuk memperbarui feed.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang akan menjadi tempat memperbarui feed.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Project ID yang agen layanan Inventaris Aset Cloud default, yang memiliki izin untuk mengelola Topik Pub/Sub. Baca selengkapnya tentang cara menetapkan project penagihan.

  • FEED_ID: ID feed aset unik.
  • Setidaknya salah satu definisi aset berikut:
  • CONTENT_TYPE: Opsional. Tujuan jenis konten dari metadata yang ingin Anda ambil. Jika contentType tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, waktu terakhir aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.
  • RELATIONSHIP_TYPE_#: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma untuk jenis hubungan aset yang ingin Anda ambil. Anda harus menetapkan CONTENT_TYPE ke RELATIONSHIP agar fitur ini berfungsi.
  • TOPIC_PROJECT_ID: ID project tempat Topik Pub/Sub ditemukan.
  • TOPIC_ID: ID topik Pub/Sub yang akan menjadi tujuan publikasi notifikasi.
  • Jika menambahkan kondisi feed opsional, sertakan detail berikut dalam perintah Anda:
    • CONDITION_TITLE: Judul yang akan ditetapkan pada kondisi feed.
    • CONDITION_DESCRIPTION: Deskripsi yang akan ditetapkan ke kondisi feed.
    • CONDITION_EXPRESSION: Ekspresi kondisi yang akan diterapkan ke feed.

Lihat referensi REST untuk semua opsi.

Contoh perintah

Jalankan salah satu perintah berikut untuk mengupdate topik Pub/Sub my-topic di project my-project. Permintaan ini menghapus semua nama aset dari pemantauan, dan menambahkan jenis aset gkemulticloud.googleapis.com/AttachedCluster.

curl (Linux, macOS, atau 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

Contoh respons

{
  "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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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}")

Hapus feed

Jika Anda tidak ingin lagi menerima notifikasi tentang perubahan aset, lakukan salah satu hal berikut menghapus feed.

gcloud

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

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed berada.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed berada.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed berada.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka Konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Project ID yang agen layanan Inventaris Aset Cloud default, yang memiliki izin untuk mengelola Topik Pub/Sub. Baca selengkapnya tentang cara menetapkan project penagihan.

Baca referensi gcloud CLI untuk mengetahui semua opsi.

Contoh respons

Jika penghapusan berhasil, tidak akan ada respons.

REST

Metode HTTP dan URL:

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

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah jumlah project tempat feed berada.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud.

        Buka Selamat Datang

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat halaman Welcome {i>heading<i}.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang dicari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed berada.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder akan ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang terletak di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed berada.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: ID project tempat agen layanan Inventaris Aset Cloud default berada yang memiliki izin untuk mengelola topik Pub/Sub Anda. Baca selengkapnya tentang cara menetapkan project penagihan.

Lihat referensi REST untuk semua opsi.

Contoh perintah

Jalankan salah satu perintah berikut untuk menghapus feed tertentu.

curl (Linux, macOS, atau 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

Contoh respons

{}

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.

Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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")

Kondisi feed

Untuk melihat jenis perubahan tertentu saja pada aset tertentu, Anda dapat menambahkan kondisi pada feed Anda. Kondisi ditulis dalam Common Expression Language (CEL).

Dukungan untuk kondisi terbatas. Dalam beberapa kasus, pembuatan atau pembaruan feed dengan kondisi dapat menyebabkan penundaan.

Batasan

  • Ekspresi kondisi memiliki batas panjang 3.000 karakter.

  • Sebagian besar nama variabel dalam ekspresi kondisi diwakili oleh huruf kecil dengan garis bawah di antara setiap kata. Misalnya, example_variable.

    Pengecualiannya adalah nama variabel sub-kolom data di Referensi . Nama ini tidak memiliki pemisah kata, dan karakter pertama dari setiap kata setelah yang pertama ditulis dengan huruf kapital. Misalnya, exampleVariable.

  • Beberapa validasi pada ekspresi kondisi dilakukan selama pembuatan feed atau waktu pembaruan feed. Namun, validasi tersebut tidak komprehensif, terutama untuk kondisi yang ditetapkan pada temporal_asset.asset.resource.data yang memiliki jenis dinamis. Jika memungkinkan, filter feed menggunakan parameter gcloud CLI atau REST API yang sesuai.

  • Notifikasi tidak akan dikirim jika error terjadi selama waktu evaluasi, tetapi error akan dicatat ke dalam log.

  • Untuk jenis dinamis di temporal_asset.asset.resource.data, kondisi yang ditentukan pada kolom yang tidak ada akan memicu error runtime dan notifikasi tidak dipublikasikan. Misalnya, untuk kondisi temporal_asset.asset.resource.data.name != "my_name", jika kolom name adalah hilang dalam update, evaluasi gagal dan Anda tidak menerima notifikasi. Jika kondisi Anda hanya berfungsi dengan adanya kolom tertentu, menambahkan pemeriksaan keberadaan ke kondisi untuk memastikan kondisi tersebut dievaluasi dengan benar.

  • Jenis enum statis dapat direpresentasikan sebagai nama jalur yang sepenuhnya memenuhi syarat atau bilangan bulat mentah. Misalnya, ekspresi berikut valid untuk prior_asset_state:

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

    dan

    temporal_asset.prior_asset_state == 3
    

    Jenis enum dinamis di temporal_asset.asset.resource.data direpresentasikan sebagai string mentah. Misalnya, ekspresi berikut valid untuk jenis aset cloudresourcemanager.googleapis.com/Project:

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

Membuat ekspresi kondisi dengan CEL

Dalam kondisi feed, Common Expression Language (CEL) digunakan untuk membuat keputusan boolean berdasarkan data atribut. Ekspresi kondisi terdiri dari satu atau beberapa pernyataan yang digabungkan menggunakan operator logika. Masing-masing menyatakan aturan kontrol berbasis atribut yang berlaku untuk TemporalAsset untuk menentukan apakah notifikasi dikirim.

Fitur CEL berikut adalah yang paling penting untuk kondisi feed:

  • Variabel: Kondisi menggunakan variabel untuk menyatakan atribut tertentu, seperti temporal_asset.deleted (Boolean) atau temporal_asset.asset.name (String). Variabel ini diisi dengan nilai berdasarkan konteks saat runtime.

  • Operator: Setiap jenis data, seperti String, mendukung kumpulan operator yang dapat digunakan untuk membuat ekspresi logika. Paling umum, operator digunakan untuk membandingkan nilai yang terdapat dalam variabel dengan nilai literal, seperti temporal_asset.asset.name == "//cloudresourcemanager.googleapis.com/projects/12345". Dalam contoh ini, jika nilai input temporal_asset.asset.name adalah //cloudresourcemanager.googleapis.com/projects/12345, lalu ekspresi mengevaluasi ke true.

  • Fungsi: Fungsi adalah operator gabungan untuk jenis data yang mendukung dan operasi yang lebih kompleks. Dalam ekspresi kondisi, ada fungsi yang telah ditetapkan sebelumnya yang dapat digunakan bersama dengan jenis data tertentu. Misalnya, temporal_asset.asset.name.contains("keyword") menggunakan fungsi yang disebut contains untuk memeriksa apakah nilai temporal_asset.asset.name berisi "keyword". Jika ya, hasil evaluasinya adalah true.

  • Operator logika: Kondisi mendukung operator logika yang dapat digunakan untuk membangun ekspresi logika yang kompleks dari pernyataan ekspresi dasar: && (AND) dan || (OR). Operator logis ini memungkinkan penggunaan beberapa variabel input dalam ekspresi kondisi. Misalnya: temporal_asset.deleted && temporal_asset.window.start_time.getFullYear() > 2020 menggabungkan dua pernyataan dasar, dan mengharuskan kedua pernyataan tersebut terpenuhi untuk menghasilkan hasil evaluasi true.

Untuk informasi selengkapnya tentang fitur CEL, lihat definisi bahasa.

Menggunakan variabel kondisi

Variabel kondisi memungkinkan Anda membuat kondisi pada atribut yang berbeda. Variabel kondisi yang didukung adalah:

  • temporal_asset: Perubahan aset terbaru dalam format TemporalAsset. Jika kondisi bernilai benar, TemporalAsset akan dikirim ke tujuan yang dikonfigurasi.

Contoh ekspresi kondisi

Ekspresi kondisi berikut mengirim notifikasi pada peristiwa pembuatan:

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

Ekspresi kondisi berikut mengirim notifikasi untuk resource yang berada di folder 12345 dan 23456:

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

Ekspresi kondisi berikut mengirimkan notifikasi saat aturan baru yang diizinkan ditambahkan ke firewall, dengan asumsi jenis aset sudah ditetapkan ke compute.googleapis.com/Firewall di feed:

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

Ekspresi kondisi berikut mengirimkan notifikasi untuk instance VM dengan Jenis mesin n1-standard-1, dengan asumsi jenis aset sudah ditetapkan ke compute.googleapis.com/Instance dalam feed:

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

Ekspresi kondisi berikut mengirimkan notifikasi untuk bucket penyimpanan dengan kebijakan IAM apa pun untuk allUsers, dengan asumsi jenis aset ditetapkan ke storage.googleapis.com/Bucket, dan jenis konten ditetapkan ke IAM_POLICY di feed:

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

Ekspresi kondisi berikut mengirimkan notifikasi saat bucket penyimpanan dengan kunci test di labelnya dihapus:

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

Pemecahan masalah

Jika Anda tidak menerima notifikasi untuk resource atau kebijakan IAM pembaruan, langkah-langkah berikut dapat membantu Anda memecahkan masalah:

  • Pastikan metadata telah berubah di aset Anda. Feed real-time hanya mengirimkan pembaruan ketika metadata dari jenis resource telah diubah. Operasi seperti mengupload file baru ke bucket Cloud Storage Anda tidak memicu perubahan metadata.

  • Pastikan aset Anda cocok dengan salah satu nama atau jenis aset yang Anda tentukan di feed.

  • Untuk penghapusan project, perlu diingat bahwa saat menonaktifkan project, Anda memiliki waktu 30 hari untuk mengurungkan operasi tersebut. Karena itu, kolom deleted dalam metadata aset tidak disetel hingga project dihapus secara permanen. Untuk memantau project yang menunggu penghapusan, Anda dapat menetapkan kondisi pada kolom lifecycleState project. Sebagai contoh: temporal_asset.asset.resource.data.lifecycleState == "DELETE_REQUESTED".

  • Periksa log untuk melihat apakah ada error saat memublikasikan update dengan topik Anda.

Cloud Logging

Jika feed real-time gagal mengirim resource atau pembaruan kebijakan IAM melalui Pub/Sub, Cloud Asset Inventory akan mencatat status dan pesan error dalam Logging. Pencatatan log diaktifkan secara {i>default<i}, dan termasuk dalam Google Cloud Observability. Pelajari tentang Harga Google Cloud Observability.

Melihat log feed real-time

Log feed real-time diindeks oleh topik Pub/Sub. Untuk melihat semua log:

  1. Buka halaman Logs Explorer di konsol Google Cloud.

    Buka Logs Explorer

  2. Klik daftar Resource, yang berada di dekat Search all fields .

  3. Telusuri Cloud Pub/Sub Topic, lalu klik jenis resource Cloud Pub/Sub Topic.

  4. Klik ID topik yang ingin Anda lihat.

  5. Klik Terapkan.

Encoding UTF-8 diterapkan untuk kolom log. Karakter yang bukan karakter UTF-8 akan diganti dengan tanda tanya.

Informasi yang dicatat

Entri log feed real-time berisi jenis informasi berikut:

  • Informasi umum yang ditampilkan di sebagian besar log Google Cloud, seperti tingkat keparahan, project ID, nomor project, atau stempel waktu.

  • Kolom log feed real-time di jsonPayload, yang berisi nama aset, feed konfigurasi output, dan status error saat memublikasikan resource atau IAM pembaruan kebijakan.

Tabel berikut menunjukkan jenis informasi yang terdapat di setiap kolom.

Kolom Jenis dan deskripsi
name

string

Nama Lengkap feed. Formatnya adalah salah satu dari berikut ini:

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

string

Nama lengkap aset yang akan menerima update. Contoh:

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

Lihat Nama resource untuk mengetahui info selengkapnya.

condition

Expr

Kondisi feed yang menentukan apakah pembaruan aset harus dipublikasikan.

error_status

Status

Status saat ada kegagalan untuk memublikasikan pembaruan aset ke feed.

feed_output_config

FeedOutputConfig

Konfigurasi output feed yang menentukan lokasi pembaruan aset dipublikasikan ke.