Memublikasikan peristiwa secara langsung

Anda dapat memublikasikan peristiwa CloudEvents langsung ke bus Eventarc Advanced dalam format yang didukung menggunakan Google Cloud CLI atau dengan mengirim permintaan ke Eventarc Publishing REST API. Anda juga dapat menggunakan library klien Eventarc untuk mengakses Eventarc API dari bahasa yang didukung.

Sebelum memulai

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

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Instal Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  6. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  7. Aktifkan Eventarc API dan Eventarc Publishing API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
  8. Instal Google Cloud CLI.

  9. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  10. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  11. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  12. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  13. Aktifkan Eventarc API dan Eventarc Publishing API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

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

Publikasikan secara langsung

Pesan peristiwa yang Anda publikasikan secara langsung harus sesuai dengan spesifikasi CloudEvents.

gcloud

  1. Buka terminal.

  2. Anda dapat memublikasikan peristiwa ke bus menggunakan perintah gcloud eventarc message-buses publish. Contoh:

    gcloud eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    Atau:
    gcloud eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    Atau:
    gcloud eventarc message-buses publish BUS_NAME \
        --event-data=DATA_PAYLOAD \
        --event-id=EVENT_ID \
        --event-source=EVENT_SOURCE \
        --event-type=EVENT_TYPE \
        --event-attributes=EVENT_ATTRIBUTE

    Ganti kode berikut:

    • BUS_NAME: ID atau ID yang memenuhi syarat sepenuhnya dari bus tempat memublikasikan peristiwa.

    Anda hanya boleh menggunakan salah satu dari berikut ini:

    • AVRO_MESSAGE: pesan peristiwa dalam format Avro sesuai dengan spesifikasi ini.
    • JSON_MESSAGE: pesan peristiwa dalam format JSON sesuai dengan spesifikasi ini.
    • DATA_PAYLOAD: data peristiwa yang dipublikasikan.

    Jika menggunakan flag --event-data, Anda juga harus menggunakan hal berikut:

    • EVENT_ID: ID peristiwa. Produser acara harus memastikan bahwa source + id bersifat unik untuk setiap acara yang berbeda.
    • EVENT_SOURCE: sumber peristiwa dari peristiwa yang dipublikasikan.
    • EVENT_TYPE: jenis peristiwa yang terkait dengan kemunculan awal.

    Jika menggunakan flag --event-data, Anda dapat menggunakan opsi berikut:

    • EVENT_ATTRIBUTE: atribut peristiwa yang dipublikasikan. Anda dapat mengulangi tanda --event-attributes untuk menambahkan lebih banyak atribut.

      Perhatikan bahwa peristiwa dapat mencakup sejumlah atribut CloudEvents kustom tambahan dengan nama yang berbeda (juga dikenal sebagai atribut ekstensi).

Contoh:

gcloud eventarc message-buses publish my-bus \
    --event-data='{"key": "hello-world-data"}' \
    --event-id=hello-world-id-1234 \
    --event-source=hello-world-source \
    --event-type=hello-world-type \
    --event-attributes="datacontenttype=application/json"

gcloud eventarc message-buses publish my-bus --json-message='{
    "specversion" : "1.0",
    "type" :"com.example.someevent",
    "source" : "google.cloud.storage.object.v1.finalized",
    "id" : "A234-1234-1234",
    "time" : "2024-04-05T17:31:00Z",
    "bucket" : "bucketName",
    "datacontenttype" : "application/json",
    "data":{"key": "value"}
}'

REST API

Untuk memublikasikan peristiwa ke bus, gunakan metode projects.locations.messageBuses.publish.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • Nama lengkap resource bus dalam format projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud project ID untuk project bus.
    • LOCATION: region tempat bus di-deploy—misalnya, us-central1.
    • BUS_NAME: nama bus tempat memublikasikan peristiwa.
  • SPEC_VERSION: versi spesifikasi CloudEvents yang digunakan peristiwa—misalnya, 1.0.
  • EVENT_TYPE: jenis peristiwa yang terkait dengan kemunculan asal.
  • EVENT_SOURCE: sumber peristiwa dari peristiwa yang dipublikasikan.
  • EVENT_ID: ID peristiwa. Produser harus memastikan bahwa source + id bersifat unik untuk setiap acara yang berbeda.
  • CONTENT_TYPE (opsional): jenis konten nilai data. Jika peristiwa format JSON tidak memiliki atribut datacontenttype, maka diasumsikan bahwa data adalah nilai JSON yang sesuai dengan jenis media application/json.
  • DATA_PAYLOAD (opsional): payload peristiwa yang dienkode ke dalam format media yang ditentukan oleh datacontenttype dan mematuhi dataschema jika atribut tersebut ada.

Meminta isi JSON:

{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jika berhasil, server akan menampilkan kode status HTTP 200 OK dan isi respons kosong dalam format JSON:

200 OK

{}

Langkah berikutnya