Memecahkan masalah

Halaman ini menunjukkan cara menyelesaikan masalah yang mungkin Anda alami saat menggunakan Eventarc Advanced.

Masalah CMEK

Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk melindungi Eventarc. Kunci dibuat dan dikelola melalui Cloud Key Management Service (Cloud KMS). Tabel berikut menjelaskan berbagai masalah CMEK dan cara mengatasinya saat menggunakan Cloud KMS dengan Eventarc.

Masalah yang terjadi saat membuat atau memperbarui resource Eventarc

Masalah CMEK Pesan error Deskripsi
Kunci dinonaktifkan $KEY is not enabled, current state is: DISABLED

Kunci Cloud KMS yang diberikan telah dinonaktifkan untuk resource Eventarc. Acara atau pesan yang terkait dengan resource tidak lagi dilindungi.

Solusi:

  1. Menampilkan kunci yang digunakan untuk resource:
  2. Aktifkan kembali kunci Cloud KMS.
Melebihi kuota Quota exceeded for limit

Batas kuota Anda untuk permintaan Cloud KMS telah tercapai.

Solusi:

  • Batasi jumlah panggilan Cloud KMS.
  • Naikkan kuota.
Untuk mengetahui informasi selengkapnya, lihat Memantau dan menyesuaikan kuota Cloud KMS.
Wilayah tidak cocok Key region $REGION must match the resource to be protected

Region kunci KMS yang diberikan berbeda dengan region resource.

Solusi:

Gunakan kunci Cloud KMS dari region yang sama.

Batasan kebijakan organisasi project/PROJECT_ID violated org policy constraint

Eventarc terintegrasi dengan dua batasan kebijakan organisasi berikut untuk membantu memastikan penggunaan CMEK di seluruh organisasi. Resource Eventarc yang ada tidak tunduk pada kebijakan yang ditetapkan setelah resource dibuat; namun, memperbarui resource mungkin gagal.

  • constraints/gcp.restrictNonCmekServices menyebabkan semua permintaan pembuatan resource tanpa kunci Cloud KMS yang ditentukan akan gagal.

    Solusi:

    Tentukan kunci Cloud KMS untuk resource Eventarc. Untuk mengetahui informasi selengkapnya, lihat Mewajibkan CMEK untuk resource Eventarc baru.

  • constraints/gcp.restrictCmekCryptoKeyProjects membatasi kunci Cloud KMS yang dapat Anda gunakan untuk melindungi resource Eventarc.

    Solusi:

    Gunakan kunci Cloud KMS yang didukung dari project, folder, atau organisasi Eventarc yang diizinkan. Untuk mengetahui informasi selengkapnya, lihat Membatasi kunci Cloud KMS untuk project Eventarc.

Masalah yang terjadi selama pengiriman acara

Masalah CMEK Pesan error Deskripsi
Kunci dinonaktifkan $KEY is not enabled, current state is: DISABLED

Kunci Cloud KMS yang diberikan telah dinonaktifkan untuk resource Eventarc. Acara atau pesan yang terkait dengan resource tidak lagi dilindungi.

Solusi:

  1. Menampilkan kunci yang digunakan untuk resource:
  2. Aktifkan kembali kunci Cloud KMS.
Melebihi kuota Quota exceeded for limit

Batas kuota Anda untuk permintaan Cloud KMS telah tercapai.

Solusi:

  • Batasi jumlah panggilan Cloud KMS.
  • Naikkan kuota.
Untuk mengetahui informasi selengkapnya, lihat Memantau dan menyesuaikan kuota Cloud KMS.
Error izin Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource $KEY (or it may not exist)

Kunci Cloud KMS yang diberikan tidak ada atau izin Identity and Access Management (IAM) tidak dikonfigurasi dengan benar.

Solusi:

Untuk mengatasi masalah yang mungkin Anda alami saat menggunakan kunci yang dikelola secara eksternal melalui Cloud External Key Manager (Cloud EKM), lihat Referensi error Cloud EKM.

Error HTTP 400 Bad Request

Menemukan error HTTP 400 Bad Request umum untuk pipeline sering kali menandakan masalah transformasi atau pengikatan pesan, atau masalah yang terkait dengan endpoint yang ditargetkan. Pastikan untuk melakukan hal berikut:

  • Cari error sintaksis atau logika dalam ekspresi CEL Anda. Misalnya, dalam dokumen ini, lihat Masalah transformasi.
  • Pastikan pesan peristiwa sesuai dengan skema yang diharapkan. Misalnya, dalam dokumen ini, lihat Format permintaan tidak valid.
  • Jika tujuan peristiwa itu sendiri menampilkan error, periksa endpoint yang ditargetkan.

Error HTTP 503 Service Unavailable

Jika Anda mengalami error HTTP 503 Service Unavailable untuk pipeline yang merutekan pesan ke tujuan Google menggunakan alamat DNS—misalnya, Cloud Run—pastikan Akses Google Pribadi diaktifkan di subnet yang digunakan dalam lampiran jaringan; jika tidak, alamat DNS tidak dapat diselesaikan.

Izin ditolak saat menggunakan agen layanan Eventarc

Jika Anda mengalami error berikut saat mencoba membuat resource Eventarc Advanced, tunggu beberapa menit (mungkin tujuh), lalu coba buat resource lagi:

Permission denied while using the Eventarc Service Agent. If you recently started to use
Eventarc, it may take a few minutes before all necessary permissions are propagated to the
Service Agent. Otherwise, verify that it has Eventarc Service Agent role.

Agen layanan bertindak sebagai identitas layanan Google Cloud tertentu untuk project tertentu. Untuk mengetahui informasi selengkapnya, lihat Agen layanan dan lihat izin Identity and Access Management (IAM) untuk peran Agen Layanan Eventarc (roles/eventarc.serviceAgent).

Jika Anda masih mengalami error sebelumnya setelah mencoba membuat resource lagi, selesaikan langkah-langkah berikut untuk memverifikasi bahwa agen layanan Eventarc ada di project Google Cloud Anda dan memiliki peran yang diperlukan:

  1. Di konsol Google Cloud , buka halaman IAM.

    Buka IAM

  2. Di tab Lihat menurut prinsipal, centang kotak Sertakan pemberian peran yang disediakan Google.
  3. Dalam daftar akun utama, cari agen layanan Eventarc, yang menggunakan format berikut:

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

  4. Pastikan agen layanan memiliki peran Eventarc Service Agent. Jika agen layanan tidak memiliki peran tersebut, maka berikan peran tersebut.

Masalah saat memublikasikan ke tugas Cloud Run

Bagian ini menjelaskan cara menyelesaikan masalah yang mungkin Anda alami saat memublikasikan peristiwa ke tugas Cloud Run. Untuk demonstrasi end-to-end, lihat panduan memulai.

Error HTTP 403 Forbidden

Jika Anda mengalami error HTTP 403 Forbidden saat mencoba mengeksekusi tugas Cloud Run yang menggantikan konfigurasi tugas—misalnya, dengan menentukan binding pesan—pastikan Anda telah memberikan peran IAM Cloud Run Developer (roles/run.developer) atau Cloud Run Jobs Executor With Overrides (roles/run.jobsExecutorWithOverrides) ke akun layanan OAuth yang digunakan oleh pipeline Eventarc. Untuk mengetahui informasi selengkapnya, lihat Mengganti konfigurasi tugas untuk eksekusi tertentu.

Format permintaan tidak valid

Saat menentukan binding pesan, Anda harus menggunakan kunci http_endpoint_message_binding_template untuk mengubah peristiwa menjadi format yang diharapkan oleh Cloud Run Admin API—misalnya: {"body": ""}.

Jika kunci tidak ada atau kosong, pesan peristiwa yang dirutekan ke tugas tidak akan sesuai dengan skema yang diharapkan untuk endpoint tugas Cloud Run, dan hal ini mencegah pesan peristiwa berhasil memicu eksekusi tugas.

Masalah transformasi

Jika data peristiwa Anda tidak dapat atau tidak diubah seperti yang diharapkan saat menentukan pengikatan pesan, pastikan sintaksis ekspresi CEL Anda sudah benar.

Ekspresi CEL salah

Misalnya, dalam ekspresi berikut, penggantian string yang dikutip—seperti \"${message.data}\"—digunakan untuk mengevaluasi dan menyisipkan nilai variabel saat fungsi ekstensi CEL seharusnya digunakan:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"${message.data}\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"${message.attributes}\"}]}]}}}"

Selain itu, atribut peristiwa adalah kolom tingkat teratas pada objek pesan dan tidak terdapat dalam kolom atribut terpisah—seperti message.attributes. Setiap atribut pesan CloudEvents yang masuk harus diakses menggunakan nilai message.key, dengan key adalah nama atribut.

Ekspresi CEL yang benar

Untuk mengatasi masalah ini, tambahkan fungsi toJsonString() langsung ke objek untuk meneruskan data pesan sebagai string JSON. Untuk merekam atribut peristiwa sebagai string JSON sambil mengecualikan payload, gunakan message.removeFields(["data"]).toJsonString(). Contoh:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"message.data.toJsonString()\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"message.removeFields(['data']).toJsonString()\"}]}]}}}"

Untuk mengetahui informasi selengkapnya, lihat Mengubah peristiwa yang diterima.

Langkah berikutnya