Memublikasikan peristiwa dari sumber Google

Anda dapat mengaktifkan pengumpulan dan publikasi peristiwa dari sumber Google untuk bus Eventarc Advanced tertentu dengan membuat resource GoogleApiSource.

Peristiwa dari sumber Google dipicu langsung oleh peristiwa yang tidak dimediasi seperti pembuatan fungsi Cloud Run atau perubahan status pada tugas Dataflow. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa Google yang didukung oleh Eventarc.

Perhatikan hal berikut:

  • Secara default, peristiwa dikumpulkan dari project Google Cloud tempat resource GoogleApiSource berada. Anda juga dapat menggunakan gcloud CLI untuk mengumpulkan peristiwa dari beberapa project yang berada dalam organisasi yang sama dengan resource GoogleApiSource. Untuk mengetahui informasi selengkapnya, dalam dokumen ini, lihat Memublikasikan peristiwa dari beberapa project.
  • Anda dapat memublikasikan peristiwa ke bus yang berada di Google Cloud project yang berbeda dengan project tempat resource GoogleApiSource berada. Anda dapat mengonfigurasi ini menggunakan gcloud CLI atau dengan mengirim permintaan ke Eventarc API (tetapi tidak melalui konsol Google Cloud ).
  • Ada batas satu GoogleApiSource resource per Google Cloud project per region.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menyelesaikan langkah-langkah berikut:

  1. Jika Anda menggunakan Google Cloud CLI untuk menjalankan perintah di halaman ini, instal, lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

  2. Aktifkan Eventarc API dan Eventarc Publishing API:

    Konsol

    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

    gcloud

    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.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

Mengaktifkan peristiwa dari sumber Google

Untuk memublikasikan peristiwa dari sumber Google, Anda harus membuat resource GoogleApiSource. Resource ini merepresentasikan langganan ke peristiwa Google API di project Google Cloud tertentu untuk bus Eventarc Advanced tertentu.

Anda dapat mengaktifkan publikasi acara dari sumber Google dengan cara berikut:

  • Di Google Cloud console
  • Dengan menggunakan Google Cloud CLI di terminal atau Cloud Shell
  • Dengan mengirim permintaan ke Eventarc API

Konsol

  1. Di konsol Google Cloud , buka halaman Eventarc > Bus.

    Buka Bus

  2. Anda dapat membuat bus atau, jika Anda memperbarui bus, klik Edit.

  3. Di halaman Edit bus, untuk menambahkan sumber pesan, klik Tambahkan sumber.

    1. Di panel Tambahkan sumber pesan, untuk penyedia pesan Google API, terima default google-api-source atau masukkan nama sumber pesan yang berbeda.
    2. Klik Buat.
  4. Klik Simpan.

gcloud

  1. Buka terminal.

  2. Anda dapat mengaktifkan peristiwa dari sumber Google menggunakan perintah gcloud eventarc google-api-sources create:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID

    Ganti kode berikut:

    • GOOGLE_API_SOURCE_NAME: ID atau ID yang sepenuhnya memenuhi syarat dari resource GoogleApiSource yang mewakili langganan ke peristiwa Google API untuk bus tertentu
    • BUS_NAME: ID atau ID yang sepenuhnya memenuhi syarat dari bus yang ingin Anda gunakan untuk berlangganan peristiwa Google API
    • BUS_PROJECT_ID: Google Cloud project ID untuk bus

    Opsional: Anda juga dapat menggunakan flag berikut:

    • --async untuk segera kembali dari perintah, tanpa menunggu operasi yang sedang berlangsung selesai.
    • --crypto-key untuk menentukan nama yang sepenuhnya memenuhi syarat dari kunci enkripsi yang dikelola pelanggan; jika tidak ditentukan, Google-owned and managed keys akan digunakan.
    • --logging-config untuk mengonfigurasi tingkat logging yang harus berupa salah satu dari berikut ini: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. Untuk mengetahui informasi selengkapnya, lihat LogSeverity.

REST API

Untuk mengaktifkan peristiwa dari sumber Google, gunakan metode projects.locations.googleApiSources.create.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • GOOGLE_API_SOURCE_NAME: nama tampilan resource GoogleApiSource yang merepresentasikan langganan ke peristiwa Google API untuk bus tertentu—misalnya, my_google_source.
  • LABEL_KEY dan LABEL_VALUE: opsional. Peta pasangan nilai dan kunci label yang membantu Anda mengatur resource. Google Cloud Untuk mengetahui informasi selengkapnya, lihat Apa yang dimaksud dengan label?
  • ANNOTATION_KEY dan ANNOTATION_VALUE: opsional. Peta pasangan nilai kunci anotasi teks bentuk bebas. Anda dapat menggunakannya untuk melampirkan informasi arbitrer yang terkait dengan resource. Untuk mengetahui informasi selengkapnya, lihat Anotasi.
  • DESTINATION: ID yang sepenuhnya memenuhi syarat dari bus Eventarc Advanced tempat peristiwa sumber Google harus dipublikasikan dalam format projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME. Untuk mengetahui informasi selengkapnya, lihat Membuat bus untuk merutekan pesan.
  • ENCRYPT_KEY: optional. Kunci Cloud KMS yang harus digunakan resource GoogleApiSource untuk enkripsi data dalam format projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Untuk informasi selengkapnya, lihat Menggunakan kunci enkripsi yang dikelola pelanggan.
  • PROJECT_ID: ID Google Cloud project tempat membuat resource GoogleApiSource.
  • LOCATION: region yang didukung untuk membuat resource GoogleApiSource—misalnya, us-central1.
  • LOG_SEVERITY: optional. Tingkat keparahan minimum peristiwa yang dijelaskan dalam entri log. Salah satu dari: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. Defaultnya adalah NONE. Untuk mengetahui informasi selengkapnya, lihat LogSeverity.

Meminta isi JSON:

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jika berhasil, isi respons berisi instance Operation yang baru dibuat:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Peristiwa dari sumber Google dalam Google Cloud project yang sama dengan resource GoogleApiSource kini dikumpulkan dan dipublikasikan ke bus.

Menonaktifkan peristiwa dari sumber Google

Untuk menonaktifkan publikasi peristiwa dari sumber Google di projectGoogle Cloud tertentu ke bus Eventarc Advanced, Anda harus menghapus resource GoogleApiSource.

Anda dapat menonaktifkan publikasi acara dari sumber Google dengan cara berikut:

  • Di Google Cloud console
  • Dengan menggunakan gcloud CLI di terminal atau Cloud Shell
  • Dengan mengirim permintaan ke Eventarc API

Konsol

  1. Di konsol Google Cloud , buka halaman Eventarc > Bus details.

    Buka Detail bus

  2. Klik Edit.

  3. Di halaman Edit bus, untuk menghapus penyedia pesan Google API, klik Hapus resource untuk sumber pesan google-api-source (atau nama yang telah Anda berikan).

  4. Saat diminta untuk Hapus resource, klik Konfirmasi.

  5. Klik Simpan.

gcloud

  1. Buka terminal.

  2. Anda dapat menonaktifkan peristiwa dari sumber Google menggunakan perintah gcloud eventarc google-api-sources delete:

    gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    Ganti kode berikut:

    • GOOGLE_API_SOURCE_NAME: ID atau ID yang memenuhi syarat sepenuhnya dari resource GoogleApiSource
    • REGION: lokasi resource GoogleApiSource

REST API

Untuk menonaktifkan peristiwa dari sumber Google, gunakan metode projects.locations.googleApiSources.delete.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID Google Cloud project tempat resource GoogleApiSource dibuat.
  • LOCATION: region tempat resource GoogleApiSource dibuat—misalnya, us-central1.
  • GOOGLE_API_SOURCE_NAME: nama resource GoogleApiSource yang ingin Anda hapus.

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jika berhasil, isi respons berisi instance Operation yang baru dibuat:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Peristiwa dari sumber Google di project yang sama dengan resource Google Cloud yang dihapus GoogleApiSource tidak lagi dikumpulkan dan dipublikasikan.

Memublikasikan peristiwa dari beberapa project

Untuk mengumpulkan dan memublikasikan peristiwa sumber Google dari beberapa project Google Cloud , Anda harus membuat resource GoogleApiSource, dan project harus berada dalam organisasi yang sama dengan resource GoogleApiSource. Untuk mengetahui informasi selengkapnya tentang organisasi, lihat Hierarki resource.

Perhatikan hal berikut:

  • Penerbitan peristiwa dari beberapa project harus dikonfigurasi menggunakan gcloud CLI dan tidak ditampilkan di konsol Google Cloud .
  • Jika project yang berisi resource GoogleApiSource dipindahkan ke organisasi lain, memublikasikan peristiwa dari beberapa project tidak akan berfungsi seperti yang diharapkan. Anda harus memperbarui atau membuat ulang resource GoogleApiSource.

1. Memberikan peran IAM yang sesuai kepada agen layanan Eventarc

Untuk mengumpulkan peristiwa di tingkat organisasi, gunakan perintah gcloud organizations add-iam-policy-binding untuk memberikan peran Identity and Access Management (IAM) yang sesuai kepada agen layanan Eventarc:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="SERVICE_AGENT_EMAIL" \
    --role="roles/eventarc.multiProjectEventCollector"

Ganti kode berikut:

  • ORGANIZATION_ID: ID resource organisasi Anda.
  • SERVICE_AGENT_EMAIL: alamat email untuk agen layanan utama Eventarc di project tempat Anda membuat resource GoogleApiSource. Alamat email dalam format berikut:

    service-PROJECT_NUMBER@gcp-sa-eventarc.
    

    Ganti PROJECT_NUMBER dengan Google Cloud nomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di konsol Google Cloud atau dengan menjalankan perintah berikut:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    

2. Memublikasikan dari semua project atau daftar project

Untuk memublikasikan peristiwa dari sumber Google di beberapa project, gunakan perintah gcloud eventarc google-api-sources create dengan salah satu cara berikut:

  • Publikasikan dari semua Google Cloud project dalam organisasi yang sama dengan resource GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --organization-subscription
  • Memublikasikan dari daftar Google Cloud project dalam organisasi yang sama dengan resource GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --project-subscriptions=LIST_OF_PROJECTS

    Ganti kode berikut:

    • GOOGLE_API_SOURCE_NAME: ID atau ID yang memenuhi syarat sepenuhnya dari resource GoogleApiSource
    • REGION: lokasi resource GoogleApiSource
    • BUS_NAME: ID atau ID yang sepenuhnya memenuhi syarat dari bus yang ingin Anda gunakan untuk berlangganan peristiwa Google API
    • BUS_PROJECT_ID: Google Cloud project ID untuk bus
    • LIST_OF_PROJECTS: daftar yang dibatasi koma dari Google Cloud project ID atau nomor project. Anda dapat menggabungkan ID dan angka dalam daftar yang sama. Untuk memublikasikan peristiwa dari projectGoogle Cloud yang berisi resource GoogleApiSource, Anda harus menyertakan ID atau nomor project secara eksplisit dalam daftar.

Langkah berikutnya