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:
|
| Melebihi kuota | Quota exceeded for limit |
Batas kuota Anda untuk permintaan Cloud KMS telah tercapai. Solusi:
|
| 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.
|
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:
|
| Melebihi kuota | Quota exceeded for limit |
Batas kuota Anda untuk permintaan Cloud KMS telah tercapai. Solusi:
|
| 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:
- Di konsol Google Cloud , buka halaman IAM.
- Di tab Lihat menurut prinsipal, centang kotak Sertakan pemberian peran yang disediakan Google.
Dalam daftar akun utama, cari agen layanan Eventarc, yang menggunakan format berikut:
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com- 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.