Menerima notifikasi dengan feed perubahan metadata

Dokumen ini menjelaskan cara mengonfigurasi feed perubahan metadata Dataplex Universal Catalog untuk menerima notifikasi melalui Pub/Sub saat metadata dalam Dataplex Universal Catalog dibuat, diperbarui, atau dihapus.

Untuk mengetahui informasi selengkapnya tentang feed perubahan metadata, lihat Ringkasan feed perubahan metadata.

Sebelum memulai

Pahami Pub/Sub dan Dataplex Universal Catalog API.

  1. Enable the Dataplex Universal Catalog and Pub/Sub APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  2. Buat topik Pub/Sub untuk menerima notifikasi. Untuk mengetahui informasi selengkapnya, lihat Membuat topik.

  3. Instal gcloud. Pastikan alias pendek gcloud telah ditetapkan.

  4. Tetapkan alias gcurl. Tindakan ini akan membuat pintasan yang menyertakan token autentikasi Anda dan menetapkan jenis konten JSON untuk permintaan API:

    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    
  5. Tetapkan variabel DATAPLEX_API:

    DATAPLEX_API="dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION"
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda tempat Dataplex API diaktifkan
    • LOCATION: lokasi tempat tugas berjalan—misalnya, us-central1, europe-west3, atau asia-south1

Peran dan izin yang diperlukan

Untuk mengonfigurasi feed perubahan metadata, pastikan Anda dan akun layanan Dataplex Universal Catalog memiliki peran dan izin IAM yang diperlukan.

Peran dan izin pengguna

Untuk mendapatkan izin yang diperlukan untuk mengekspor metadata dan mengakses pesan feed perubahan metadata, minta administrator untuk memberi Anda peran IAM berikut pada project atau organisasi:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengekspor metadata dan mengakses pesan feed perubahan metadata. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengekspor metadata dan mengakses pesan feed perubahan metadata:

  • Mengekspor metadata:
    • dataplex.metadataFeeds.create dalam project
    • dataplex.entryGroups.export pada resource yang menentukan cakupan feed (Organisasi, Project, atau Grup Entri)
    • resourcemanager.projects.get dalam project
    • resourcemanager.projects.list dalam project
  • Mengakses pesan feed perubahan metadata:
    • pubsub.subscriptions.consume pada langganan
    • pubsub.topics.attachSubscription tentang topik

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Peran dan izin akun layanan Dataplex Universal Catalog

Untuk memastikan akun layanan Dataplex Universal Catalog memiliki izin yang diperlukan untuk memublikasikan pesan feed perubahan metadata, minta administrator Anda untuk memberikan peran IAM Pub/Sub Publisher (roles/pubsub.publisher) kepada akun layanan Dataplex Universal Catalog di topik Pub/Sub.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin pubsub.topics.publish yang diperlukan untuk memublikasikan pesan feed perubahan metadata.

Administrator Anda mungkin juga dapat memberi akun layanan Dataplex Universal Catalog izin ini dengan peran khusus atau peran bawaan lainnya.

Memberikan izin ke akun layanan Dataplex Universal Catalog

Agen layanan Dataplex Universal Catalog dibuat saat Anda mengaktifkan Dataplex API. Anda dapat mengidentifikasi agen layanan berdasarkan emailnya:

service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com

Di sini, PROJECT_NUMBER adalah nomor project tempat Anda mengaktifkan Dataplex API.

Akun layanan Dataplex Universal Catalog memerlukan kemampuan untuk memublikasikan pesan ke topik Pub/Sub Anda. Untuk memberikan izin ini, berikan peran Pub/Sub Publisher (roles/pubsub.publisher) kepada akun layanan di topik Pub/Sub:

gcloud

Jalankan perintah gcloud pubsub topics add-iam-policy-binding:

gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
    --role="roles/pubsub.publisher"

Ganti kode berikut:

  • TOPIC_ID: ID topik Pub/Sub Anda tempat pesan feed perubahan metadata dipublikasikan.
  • PROJECT_NUMBER: nomor project Dataplex Universal Catalog tempat akun layanan berada.

Konsol

  1. Di konsol Google Cloud , buka halaman Topics Pub/Sub.

    Buka topik

  2. Pilih topik yang Anda gunakan untuk notifikasi feed metadata dan jika diperlukan, klik Tampilkan panel info.

  3. Di tab Permissions, klik Add principal.

  4. Di kolom New principals, masukkan akun layanan Dataplex Universal Catalog: service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com.

  5. Di kolom Assign roles, pilih Pub/Sub Publisher.

  6. Klik Simpan.

Membuat feed perubahan metadata

Untuk mengontrol perubahan mana yang memicu notifikasi, Anda dapat mengonfigurasi feed perubahan metadata untuk memantau resource tertentu. Anda melakukannya dengan menentukan cakupan, seperti seluruh organisasi, project tertentu, atau grup entri tertentu. Meskipun cakupan memungkinkan Anda menentukan resource mana yang akan dipantau, Anda dapat menggunakan filter untuk lebih menyempurnakan kapan Dataplex Universal Catalog mengirimkan notifikasi.

Untuk mengetahui informasi selengkapnya, lihat Feed perubahan metadata.

REST

Untuk membuat feed perubahan metadata, gunakan metode projects.locations.metadataFeeds.create.

Cakupan organisasi

Jalankan perintah berikut untuk membuat feed perubahan metadata yang memantau seluruh organisasi:

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "organizationLevel": true
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

Ganti kode berikut:

  • PROJECT_ID_PUBSUB: project ID tempat topik Pub/Sub berada—misalnya, example-project
  • TOPIC_ID: ID topik Pub/Sub tempat pesan feed perubahan metadata dipublikasikan—misalnya, example-topic
  • FEED_ID: ID feed perubahan metadata yang ingin Anda buat—misalnya, example-feed

Cakupan project

Jalankan perintah berikut untuk membuat feed perubahan metadata yang memantau project tertentu:

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "projects": [
      "projects/PROJECT_ID_1",
      "projects/PROJECT_ID_2"
    ]
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

Ganti kode berikut:

  • PROJECT_ID_PUBSUB: project ID tempat topik Pub/Sub berada—misalnya, example-project
  • TOPIC_ID: ID topik Pub/Sub tempat pesan feed perubahan metadata dipublikasikan—misalnya, example-topic
  • FEED_ID: ID feed perubahan metadata yang ingin Anda buat—misalnya, example-feed

Cakupan grup entri

Jalankan perintah berikut untuk membuat feed perubahan metadata yang memantau grup entri tertentu:

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "entryGroups": [
      "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_1",
      "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_2"
    ]
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

Ganti kode berikut:

  • PROJECT_ID_PUBSUB: project ID tempat topik Pub/Sub berada—misalnya, example-project
  • LOCATION: lokasi tempat Anda ingin membuat feed—misalnya, us-central1
  • ENTRY_GROUP_ID: ID grup entri yang akan dipantau—misalnya, example-entry-group
  • TOPIC_ID: ID topik Pub/Sub tempat pesan feed perubahan metadata dipublikasikan—misalnya, example-topic
  • FEED_ID: ID feed perubahan metadata yang ingin Anda buat—misalnya, example-feed

Dengan filter

Jalankan perintah berikut untuk membuat feed perubahan metadata dengan filter (memfilter menurut jenis entri):

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "projects": [
      "projects/PROJECT_ID_1",
      "projects/PROJECT_ID_2"
    ]
  },
  "filter": {
    "entryTypes": [
      "projects/PROJECT_ID/locations/global/entryTypes/bigquery-table"
    ]
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

Ganti kode berikut:

  • PROJECT_ID_PUBSUB: project ID tempat topik Pub/Sub berada—misalnya, example-project
  • TOPIC_ID: ID topik Pub/Sub tempat pesan feed perubahan metadata dipublikasikan—misalnya, example-topic
  • FEED_ID: ID feed perubahan metadata yang ingin Anda buat—misalnya, example-feed

Respons:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataplex.v1.OperationMetadata",
    "createTime": "2023-10-02T15:01:23Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/metadataFeeds/FEED_ID",
    "verb": "create",
    "apiVersion": "v1"
  },
  "done": false
}

Melihat feed perubahan metadata

Anda dapat melihat detail feed perubahan metadata.

REST

Untuk melihat feed perubahan metadata, gunakan metode projects.locations.metadataFeeds.get.

Jalankan perintah berikut:

gcurl "https://${DATAPLEX_API}/metadataFeeds/FEED_ID"

Ganti kode berikut:

  • FEED_ID: ID feed perubahan metadata yang ingin Anda lihat—misalnya, example-feed

Mencantumkan feed perubahan metadata

Anda dapat mencantumkan feed perubahan metadata dalam project dan lokasi.

REST

Untuk mencantumkan feed perubahan metadata, gunakan metode projects.locations.metadataFeeds.list.

Jalankan perintah berikut:

gcurl "https://${DATAPLEX_API}/metadataFeeds"

Memperbarui feed perubahan metadata

Anda dapat memperbarui cakupan atau filter feed perubahan metadata yang ada.

REST

Untuk memperbarui feed perubahan metadata, gunakan metode projects.locations.metadataFeeds.patch.

Jalankan perintah berikut untuk memperbarui feed perubahan metadata guna menghapus filter jenis entri:

gcurl -X PATCH -d "$(cat <<EOF
{
  "filter": {
    "entryTypes": []
  }
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds/FEED_ID?updateMask=filter"

Ganti kode berikut:

  • FEED_ID: ID feed perubahan metadata yang ingin Anda perbarui—misalnya, example-feed

Menghapus feed perubahan metadata

Anda dapat menghapus feed perubahan metadata jika tidak perlu lagi menerima notifikasi.

Menghapus feed perubahan metadata akan menghentikan feed memublikasikan perubahan metadata baru ke topik Pub/Sub Anda. Namun, tindakan ini tidak menghapus topik atau langganan yang terkait dengan feed. Anda harus menghapusnya secara manual jika tidak diperlukan lagi.

Sebelum menghapus feed atau langganan, pastikan aplikasi pelanggan Anda telah memproses semua pesan yang belum diproses dalam langganan Pub/Sub.

REST

Untuk menghapus feed perubahan metadata, gunakan metode projects.locations.metadataFeeds.delete.

Jalankan perintah berikut:

gcurl -X DELETE \
"https://${DATAPLEX_API}/metadataFeeds/FEED_ID"

Ganti kode berikut:

  • FEED_ID: ID feed perubahan metadata yang ingin Anda hapus—misalnya, example-feed

Menggunakan pesan notifikasi

Setelah Anda mengonfigurasi feed perubahan metadata, Dataplex Universal Catalog akan memublikasikan pesan ke topik Pub/Sub yang ditentukan saat perubahan metadata terjadi. Untuk menggunakan pesan ini, buat langganan Pub/Sub ke topik tersebut.

Misalnya, Anda dapat membuat langganan pull dan menggunakan Google Cloud CLI untuk melihat pesan:

  1. Buat langganan:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
    

    Ganti kode berikut:

    • SUBSCRIPTION_ID: ID langganan yang ingin Anda buat
    • TOPIC_ID: ID topik Pub/Sub tempat pesan feed perubahan metadata dipublikasikan.
  2. Tarik pesan dari langganan:

    gcloud pubsub subscriptions pull SUBSCRIPTION_ID --auto-ack --limit=10
    

    Ganti kode berikut:

    • SUBSCRIPTION_ID: ID langganan yang ingin Anda tarik pesannya

Untuk mengetahui informasi selengkapnya tentang pemrosesan pesan Pub/Sub, lihat Menerima pesan dari langganan pull. Untuk mengetahui informasi tentang format pesan, lihat Payload data.

Langkah berikutnya