Mengelola pemicu

Anda dapat mengelola pemicu menggunakan konsol Google Cloud atau Google Cloud CLI di terminal atau Cloud Shell. Anda juga dapat mengelola pemicu melalui Eventarc API.

Mencantumkan pemicu

Anda dapat mencantumkan, memfilter, dan mengurutkan pemicu di semua lokasi.

  1. Di konsol Google Cloud, buka halaman Pemicu Eventarc.

    Buka Pemicu

    Halaman ini mencantumkan semua pemicu di project Anda untuk semua lokasi, dan menyertakan detail seperti nama pemicu, region, penyedia peristiwa, tujuan, dan jenis peristiwa.

  2. Untuk memfilter pemicu menurut properti tertentu:

    1. Klik kotak Filter .
    2. Dari daftar Properti, pilih opsi untuk memfilter pemicu berdasarkan—misalnya, Nama atau Saluran peristiwa.

    Anda dapat memilih satu properti atau menggunakan operator logika OR untuk menambahkan lebih banyak properti yang akan digunakan sebagai filter.

  3. Untuk mengurutkan pemicu, klik Urutkan di samping judul kolom yang sesuai.

    Hanya beberapa kolom yang dapat diurutkan—misalnya, Nama, Wilayah, atau Saluran peristiwa.

gcloud eventarc triggers list --location=-

Perintah ini mencantumkan nama, jenis, tujuan, dan status pemicu di semua lokasi.

Untuk mencantumkan pemicu di project dan lokasi tertentu, gunakan metode projects.locations.triggers.list.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID Google Cloud Anda.
  • LOCATION: Region tempat pemicu dibuat—misalnya, us-central1.

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers"

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers" | Select-Object -Expand Content

Jika berhasil, isi respons akan berisi instance Trigger dan responsnya akan mirip dengan berikut ini:

{
  "triggers": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
      "uid": "d700773a-698b-47b2-a712-2ee10b690062",
      "createTime": "2022-12-06T22:44:04.744001514Z",
      "updateTime": "2022-12-06T22:44:09.116459550Z",
      "eventFilters": [
        {
          "attribute": "type",
          "value": "google.cloud.pubsub.topic.v1.messagePublished"
        }
      ],
      "serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
      "destination": {
        "workflow": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME"
      },
      "transport": {
        "pubsub": {
          "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
          "subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
        }
      }
    },
    {
      object (Trigger)
    }
  ],
  "nextPageToken": string,
  "unreachable": [
    string
  ]
}

Menjelaskan pemicu

Anda dapat mendeskripsikan pemicu di lokasi tertentu.

  1. Di konsol Google Cloud, buka halaman Pemicu Eventarc.

    Buka Pemicu

  2. Dari daftar pemicu, klik pemicu yang detailnya ingin Anda ketahui.

Halaman Detail pemicu menampilkan detail pemicu seperti nama, wilayah, penyedia peristiwa, jenis peristiwa, jenis konten data peristiwa, dan tujuan.

gcloud eventarc triggers describe TRIGGER \
    --location=LOCATION

Ganti kode berikut:

  • TRIGGER: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
  • LOCATION: lokasi pemicu Eventarc.

Perintah ini menampilkan informasi tentang pemicu yang mirip dengan berikut:

  createTime: '2023-03-16T13:40:44.889670204Z'
  destination:
    cloudRun:
      path: /
      region: us-central1
      service: hello
  eventDataContentType: application/protobuf
  eventFilters:
  - attribute: serviceName
    value: cloudscheduler.googleapis.com
  - attribute: methodName
    value: google.cloud.scheduler.v1.CloudScheduler.DeleteJob
  - attribute: type
    value: google.cloud.audit.log.v1.written
  name: projects/project-name/locations/us-central1/triggers/name-of-trigger
  serviceAccount: project-number-compute@developer.gserviceaccount.com
  transport:
    pubsub:
      subscription: projects/project-name/subscriptions/eventarc-us-central1-name-of-trigger-sub-034
      topic: projects/project-name/topics/eventarc-us-central1-name-of-trigger-931

Untuk mendeskripsikan pemicu di project dan lokasi tertentu, gunakan metode projects.locations.triggers.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • TRIGGER_NAME: nama pemicu yang ingin Anda jelaskan.
  • PROJECT_ID: project ID Google Cloud Anda.
  • LOCATION: Region tempat pemicu dibuat—misalnya, us-central1.

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME"

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME" | Select-Object -Expand Content

Jika berhasil, isi respons berisi instance Trigger yang mirip dengan berikut:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
  "uid": "d700773a-698b-47b2-a712-2ee10b690062",
  "createTime": "2022-12-06T22:44:04.744001514Z",
  "updateTime": "2022-12-06T22:44:09.116459550Z",
  "eventFilters": [
    {
      "attribute": "type",
      "value": "google.cloud.pubsub.topic.v1.messagePublished"
    }
  ],
  "serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
  "destination": {
    "workflow": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME"
  },
  "transport": {
    "pubsub": {
      "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
      "subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
    }
  }
}

Jika kondisi pemicu menunjukkan masalah pada topik Pub/Sub, lihat Pemicu tidak mengirimkan peristiwa.

Memperbarui pemicu

Anda dapat memperbarui pemicu untuk tujuan Cloud Run, Google Kubernetes Engine (GKE), dan Alur Kerja. Bergantung pada tujuan, kolom tertentu dapat diperbarui.

  1. Di konsol Google Cloud, buka halaman Pemicu Eventarc.

    Buka Pemicu

  2. Dari daftar pemicu, klik pemicu yang detailnya ingin Anda ketahui.

  3. Di halaman Detail pemicu, klik Edit.

  4. Edit kolom sesuai kebutuhan, lalu klik Simpan.

    Perhatikan bahwa Anda tidak dapat memperbarui kolom yang tidak tersedia seperti Penyedia peristiwa dan Tujuan peristiwa. Untuk informasi selengkapnya tentang kolom, lihat petunjuk Konsol untuk penyedia, jenis peristiwa, dan tujuan tertentu.

gcloud eventarc triggers update TRIGGER \
    --location=LOCATION \
    --event-filters=NEW_EVENT_FILTERS \
    --service-account=NEW_SERVICE_ACCOUNT \
    --destination-run-region=NEW_REGION \
    --destination-run-service=NEW_SERVICE \
    --destination-run-path=NEW_PATH \
    --event-data-content-type="NEW_EVENT_DATA_TYPE"

Ganti kode berikut:

  • TRIGGER: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
  • LOCATION: lokasi pemicu Eventarc.

Anda dapat memperbarui salah satu dari hal berikut:

  • NEW_EVENT_FILTERS: filter yang digunakan untuk mengonfigurasi pemilihan rute peristiwa pemicu; misalnya, methodName=storage.objects.create dapat diperbarui menjadi methodName=storage.objects.delete. Perhatikan bahwa setelah pemicu dibuat, filter peristiwa type tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru.
  • NEW_SERVICE_ACCOUNT: email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu.
  • NEW_REGION: region tempat layanan Cloud Run tujuan dapat ditemukan.
  • NEW_SERVICE: nama layanan Cloud Run yang menerima peristiwa untuk pemicu.
  • NEW_PATH: jalur relatif di layanan Cloud Run tujuan yang akan menerima peristiwa untuk pemicu.
  • NEW_EVENT_DATA_TYPE: encoding payload peristiwa; bergantung pada penyedia peristiwa, ini dapat berupa application/json atau application/protobuf.

Misalnya, untuk memperbarui akun layanan untuk pemicu:

gcloud eventarc triggers update my-cloud-run-trigger \
    --service-account=new-serviceaccount@${PROJECT_ID}.iam.gserviceaccount.com

Perintah ini memperbarui akun layanan pemicu bernama my-cloud-run-trigger menjadi new-serviceaccount@PROJECT_ID.iam.gserviceaccount.com.

Perhatikan bahwa bagian ini juga berlaku untuk endpoint publik layanan pribadi dan publik yang berjalan di cluster GKE.

gcloud eventarc triggers update TRIGGER \
    --location=LOCATION \
    --destination-gke-namespace=NEW_NAMESPACE \
    --destination-gke-service=NEW_SERVICE \
    --destination-gke-path=NEW_PATH \
    --event-data-content-type="NEW_EVENT_DATA_TYPE"

Ganti kode berikut:

  • TRIGGER: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
  • LOCATION: lokasi pemicu Eventarc.

Anda dapat memperbarui salah satu dari hal berikut:

  • NEW_NAMESPACE: namespace tempat layanan GKE tujuan berjalan.
  • NEW_SERVICE: nama layanan GKE yang menerima peristiwa untuk pemicu.
  • NEW_PATH: jalur relatif di layanan GKE tujuan yang akan menerima peristiwa untuk pemicu.
  • NEW_EVENT_DATA_TYPE: encoding payload peristiwa; bergantung pada penyedia peristiwa, ini dapat berupa application/json atau application/protobuf.

Misalnya, untuk memperbarui layanan penerima peristiwa untuk pemicu:

gcloud eventarc triggers update my-gke-trigger \
    --destination-gke-service=helloworld-events

Perintah ini memperbarui layanan penerima peristiwa untuk pemicu bernama my-gke-trigger ke layanan GKE bernama helloworld-events.

gcloud eventarc triggers update TRIGGER \
    --location=LOCATION \
    --event-filters=NEW_EVENT_FILTERS \
    --service-account=NEW_SERVICE_ACCOUNT \
    --destination-workflow=NEW_DESTINATION_WORKFLOW \
    --destination-workflow-location=NEW_DESTINATION_WORKFLOW_LOCATION \
    --event-data-content-type="NEW_EVENT_DATA_TYPE"

Ganti kode berikut:

  • TRIGGER: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
  • LOCATION: lokasi pemicu Eventarc.

Anda dapat memperbarui salah satu dari hal berikut:

  • NEW_EVENT_FILTERS: filter yang digunakan untuk mengonfigurasi pemilihan rute peristiwa pemicu; misalnya, methodName=storage.objects.create dapat diperbarui menjadi methodName=storage.objects.delete. Perhatikan bahwa setelah pemicu dibuat, filter peristiwa type tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru.
  • NEW_SERVICE_ACCOUNT: email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu.
  • NEW_DESTINATION_WORKFLOW: ID alur kerja yang di-deploy yang menerima peristiwa dari pemicu.
  • NEW_DESTINATION_WORKFLOW_LOCATION: lokasi tempat alur kerja tujuan di-deploy.
  • NEW_EVENT_DATA_TYPE: encoding payload peristiwa; bergantung pada penyedia peristiwa, ini dapat berupa application/json atau application/protobuf.

Misalnya, untuk memperbarui akun layanan untuk pemicu:

gcloud eventarc triggers update my-workflows-trigger \
    --service-account=new-serviceaccount@${PROJECT_ID}.iam.gserviceaccount.com

Perintah ini memperbarui akun layanan pemicu bernama my-workflows-trigger menjadi new-serviceaccount@PROJECT_ID.iam.gserviceaccount.com.

Untuk memperbarui pemicu yang ada, gunakan metode projects.locations.triggers.patch dan secara opsional gunakan parameter kueri updateMask untuk menentukan daftar kolom yang akan diperbarui.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • TRIGGER_NAME: nama pemicu yang ingin Anda perbarui.
  • PROJECT_ID: project ID Google Cloud Anda.
  • LOCATION: Region tempat pemicu dibuat—misalnya, us-central1.
  • SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com: optional. Email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu.
  • DESTINATION: optional. Menentukan target tempat peristiwa harus dikirim dan berisi instance Destination. Contoh:

    {"destination": {"workflow": "projects/my-project/locations/us-central1/workflows/my-first-workflow"}}

    atau

    {"destination": {"cloudRun": {"service": "hello-world", "region": "us-central1"}}}

  • EVENT_FILTER: optional. Atribut peristiwa yang akan digunakan untuk memfilter. Hanya pembaruan jenis metode untuk pemicu Cloud Audit Logs yang didukung. Contoh:

    {"eventFilters": [{"attribute": "methodName", "value": "storage.buckets.create"}, {"attribute": "type", "value": "google.cloud.audit.log.v1.written"}, {"attribute": "serviceName", "value": "storage.googleapis.com"}]}

    Perhatikan bahwa Anda tidak dapat memperbarui jenis metode untuk tujuan GKE.

  • CONTENT_TYPE: optional. Encoding payload peristiwa; bergantung pada penyedia peristiwa, ini dapat berupa application/json atau application/protobuf.
  • UPDATE_FIELDS: optional. Daftar kolom yang akan diperbarui dan dipisahkan koma. Jika tidak diberikan, semua kolom yang diberikan dalam permintaan akan diperbarui. Contoh: serviceAccount,destination

Meminta isi JSON:

{
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "destination": DESTINATION,
  "eventFilters" EVENT_FILTER,
  "eventDataContentType": "CONTENT_TYPE"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

cat > request.json << 'EOF'
{
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "destination": DESTINATION,
  "eventFilters" EVENT_FILTER,
  "eventDataContentType": "CONTENT_TYPE"
}
EOF

Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME?updateMask="UPDATE_FIELDS""

Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

@'
{
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "destination": DESTINATION,
  "eventFilters" EVENT_FILTER,
  "eventDataContentType": "CONTENT_TYPE"
}
'@  | Out-File -FilePath request.json -Encoding utf8

Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME?updateMask="UPDATE_FIELDS"" | Select-Object -Expand Content

Jika berhasil, isi respons akan 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/triggers/TRIGGER_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Jika nilai "done" adalah false, operasi masih berlangsung.

Menghapus pemicu

Anda dapat menghapus pemicu.

  1. Di konsol Google Cloud, buka halaman Pemicu Eventarc.

    Buka Pemicu

  2. Pilih pemicu, lalu klik Hapus.

gcloud eventarc triggers delete TRIGGER

Ganti TRIGGER dengan ID pemicu atau ID yang sepenuhnya memenuhi syarat.

Untuk menghapus pemicu dengan nama yang ditentukan, gunakan metode projects.locations.triggers.delete.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID Google Cloud Anda.
  • LOCATION: Region tempat pemicu dibuat—misalnya, us-central1.
  • TRIGGER_NAME: nama pemicu yang ingin Anda hapus.

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jalankan perintah berikut:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME"

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME" | Select-Object -Expand Content

Jika berhasil, isi respons berisi instance Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-24T17:53:52.834876290Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Jika nilai "done" adalah false, operasi masih berlangsung.

Langkah berikutnya