Halaman ini menunjukkan cara menyelidiki dan menyelesaikan masalah terkait izin Dataflow.
Agar berhasil menjalankan tugas Dataflow, akun pengguna dan akun layanan Dataflow harus memiliki akses yang diperlukan ke resource. Untuk mengetahui daftar peran dan langkah yang diperlukan untuk memberikan peran ini, lihat Keamanan dan izin untuk pipeline di Google Cloud di halaman keamanan dan izin Dataflow.
Selain itu, saat pipeline Apache Beam Anda mengakses resource Google Cloud, akun layanan pekerja project Dataflow memerlukan akses ke resource tersebut. Untuk daftar peran yang mungkin diperlukan akun layanan pekerja Anda, lihat Contoh penetapan peran.
Jika satu atau beberapa peran yang diperlukan untuk menjalankan tugas tidak ada, error mungkin muncul di log tugas atau di log pekerja. Untuk petunjuk yang menjelaskan cara menemukan error saat tugas gagal, lihat Menemukan informasi tentang kegagalan pipeline.
Untuk mengatasi masalah izin, Anda perlu memahami izin mana yang tidak ada dan akun mana yang harus memiliki izin tersebut. Untuk memahami izin mana yang tidak ada, lihat izin yang tercantum dalam pesan error dan temukan peran yang berisi izin tersebut. Sering kali, tetapi tidak selalu, Anda perlu menetapkan peran yang relevan ke akun layanan pekerja Dataflow.
Agar dapat menambahkan izin, akun pengguna Anda harus diberi izin untuk mengelola akses. Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke akun layanan dan Mengelola akses ke resource lain.
Pengguna tidak memiliki akses tulis ke project
Saat Anda mencoba menjalankan tugas Dataflow, tugas tersebut gagal dan Anda melihat error yang serupa dengan berikut:
PERMISSION_DENIED: (Could not create workflow; user does not have write access to project: $PROJECT_ID Causes: (...): Permission 'dataflow.jobs.create' denied on project: '$PROJECT_ID'
Error ini terjadi jika akun pengguna Anda tidak memiliki peran roles/dataflow.developer
.
Untuk mengatasi masalah ini, beri akun pengguna Anda peran roles/dataflow.developer
. Selain itu, pastikan akun pengguna Anda memiliki peran roles/iam.serviceAccountUser
.
Untuk mengetahui informasi selengkapnya, lihat Memberikan satu peran
dalam dokumentasi Identity and Access Management.
Pengguna tidak memiliki izin yang memadai pada project
Saat mencoba membatalkan tugas Dataflow, Anda melihat error yang mirip dengan berikut:
Could not cancel workflow; user does not have sufficient permissions on project:PROJECT_ID, or the job does not exist in the project. Causes: (...): Permission 'dataflow.jobs.cancel' denied on project: 'PROJECT_ID' Please ensure you have permission to access the job
Error serupa mungkin terjadi saat mencoba menguras atau memperbarui tugas.
Error ini terjadi karena salah satu alasan berikut:
- Akun pengguna Anda tidak memiliki peran
roles/dataflow.developer
. Untuk mengatasi masalah ini, beri akun pengguna Anda peranroles/dataflow.developer
. Selain itu, pastikan akun pengguna Anda memiliki peranroles/iam.serviceAccountUser
. Untuk mengetahui informasi selengkapnya, lihat Memberikan satu peran dalam dokumentasi Identity and Access Management. - ID pekerjaan salah. Tugas ini mungkin berisi kesalahan ketik, atau Anda mungkin menggunakan nama tugas untuk membatalkan tugas, bukan ID tugas.
Verifikasi izin untuk akun layanan pekerja gagal
Saat mencoba menjalankan tugas Dataflow, Anda melihat error yang mirip dengan berikut:
Workflow failed. Causes: Permissions verification for controller service account failed. All permissions in IAM role roles/dataflow.worker should be granted to controller service account PROJECT_NUMBER-compute@developer.gserviceaccount.com.
Error ini terjadi jika akun layanan pekerja tidak memiliki peran
roles/dataflow.worker
.
Untuk mengatasi masalah ini, berikan peran roles/dataflow.worker
kepada akun layanan pekerja.
Untuk mengetahui informasi selengkapnya, lihat Memberikan satu peran
dalam dokumentasi Identity and Access Management.
Validasi pipeline gagal
Sebelum tugas Dataflow baru diluncurkan, Dataflow melakukan pemeriksaan validasi pada pipeline. Saat pemeriksaan validasi menemukan masalah pada pipeline, untuk menghemat waktu dan resource komputasi, Dataflow akan gagal mengirim tugas lebih awal. Dalam log tugas, Dataflow menyertakan pesan log yang berisi temuan validasi dan petunjuk untuk menyelesaikan masalah.
Saat pemeriksaan validasi pipeline menemukan masalah izin, Anda mungkin melihat error berikut di log tugas:
[The preflight pipeline validation failed for job JOB_ID.] Missing permissions
PERMISSION when accessing RESOURCE_PATH as Dataflow worker service account WORKER_SERVICE_ACCOUNT.
Jika izin tidak ada untuk lebih dari satu resource, log tugas akan berisi beberapa pesan error izin.
Sebelum mencoba mengirim ulang tugas Dataflow, perbaiki masalah izin. Resource berikut memberikan informasi tentang cara memodifikasi peran dan izin.
Jika Anda perlu menemukan peran yang memberikan izin tertentu, lihat referensi izin IAM.
Untuk memberikan peran ke akun utama untuk suatu project, lihat Memberikan peran IAM dengan menggunakan Konsol Google Cloud.
Untuk menambahkan izin yang tidak ada ke project, administrator IAM dapat menggunakan perintah
gcloud projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL --role=ROLE
Untuk memberikan atau mengubah peran tertentu, lihat bagian Memberikan atau mencabut peran.
Untuk mengetahui informasi tentang peran dan izin yang diperlukan bagi akun layanan pekerja Dataflow, lihat Akun layanan pekerja di halaman keamanan dan izin Dataflow.
Jika Anda ingin mengganti validasi pipeline dan meluncurkan tugas dengan error validasi, gunakan opsi pipeline berikut:
--experiment=enable_ppv_effect=false
Terjadi error saat memuat ulang kredensial Anda
Saat mencoba menjalankan tugas Dataflow, Anda melihat error yang mirip dengan berikut:
Workflow failed. Causes: There was a problem refreshing your credentials.
Please check: 1. The Dataflow API is enabled for your project.
2. Make sure both the Dataflow service account and the controller service account have sufficient permissions.
If you are not specifying a controller service account, ensure the default Compute Engine service account PROJECT_NUMBER-compute@developer.gserviceaccount.com exists and has sufficient permissions.
If you have deleted the default Compute Engine service account, you must specify a controller service account
Error ini terjadi jika akun layanan pekerja tidak memiliki peran roles/dataflow.worker
atau jika Dataflow API tidak diaktifkan.
Pertama, verifikasi bahwa layanan pekerja memiliki peran roles/dataflow.worker
. Jika perlu, berikan roles/dataflow.worker
ke akun layanan pekerja.
Untuk mengetahui informasi selengkapnya, lihat Memberikan satu peran
dalam dokumentasi Identity and Access Management.
Untuk mengaktifkan Dataflow API, lihat Mengaktifkan API di project Google Cloud.
Izin 'compute.subnetworks.get' yang diperlukan
Saat mencoba menjalankan tugas Dataflow di jaringan VPC Bersama, Anda akan melihat error seperti berikut:
Required 'compute.subnetworks.get' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403
VPC Bersama memungkinkan Anda mengekspor subnet dari jaringan VPC dalam project host ke project layanan lain dalam organisasi yang sama. Instance dalam project layanan dapat memiliki koneksi jaringan di subnet bersama project host. Untuk mengetahui informasi selengkapnya, lihat Ringkasan VPC Bersama.
Untuk mengatasi masalah ini, verifikasi terlebih dahulu bahwa project layanan dikaitkan ke project host. Untuk informasi selengkapnya, lihat Melampirkan project layanan di halaman Menyediakan VPC Bersama.
Selanjutnya, berikan peran berikut ke akun layanan Compute Engine dari project host, akun layanan pekerja Dataflow dari project layanan, dan akun layanan yang digunakan untuk mengirim tugas:
roles/dataflow.admin
roles/dataflow.serviceAgent
roles/compute.networkUser
roles/storage.objectViewer
Untuk mengetahui informasi selengkapnya, lihat Memberikan satu peran dalam dokumentasi Identity and Access Management.
Runner Dataflow tidak memiliki akses ke bucket
Saat Anda mencoba mencantumkan objek di bucket Cloud Storage, tugas Dataflow akan gagal, dan Anda melihat error seperti berikut:
"dataflow-runner@project-id.iam.gserviceaccount.com" does not have `storage.objects.list` access to the Google Cloud Storage Bucket
Error ini terjadi jika akun layanan pekerja tidak memiliki peran
roles/storage.objectViewer
.
Untuk mengatasi masalah ini, berikan peran roles/storage.objectViewer
kepada akun pengguna Anda.
Untuk mengetahui informasi selengkapnya, lihat Memberikan satu peran
dalam dokumentasi Identity and Access Management.
Izin kunci Cloud KMS ditolak pada resource
Saat Anda menggunakan kunci enkripsi yang dikelola pelanggan dan mencoba membuat tugas Dataflow, tugas tersebut akan gagal, dan Anda melihat error seperti berikut:
Cloud KMS key permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource
'projects/project-id/locations/location/keyRings/keyRingName/cryptoKeys/keyname' (or it may not exist). cannot be validated.
Please confirm the full key path is used (starts with projects) and that there are no typos.
Error ini terjadi jika akun layanan pekerja dan akun layanan Dataflow tidak memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter
.
Untuk mengatasi masalah ini, berikan peran roles/cloudkms.cryptoKeyEncrypterDecrypter
ke akun layanan pekerja dan ke akun layanan Dataflow.
Untuk informasi selengkapnya, lihat Memberikan izin Encrypter/Decrypter
di halaman Menggunakan kunci enkripsi yang dikelola pelanggan.
Izin ditolak pada resource
Saat Anda mencoba membuat pipeline, pipeline tersebut gagal dengan error berikut:
Permission 'datapipelines.pipelines.create' denied on resource '//datapipelines.googleapis.com/projects/PROJECT_ID/locations/REGION' (or it may not exist).
Error ini terjadi jika akun layanan pekerja project Anda tidak memiliki akses ke file dan resource lain yang terkait dengan pipeline.
Untuk mengatasi masalah ini, tetapkan peran berikut ke akun layanan pekerja:
roles/dataflow.admin
roles/dataflow.worker
Untuk mengetahui informasi selengkapnya, lihat Akun layanan pekerja di "Keamanan dan izin Dataflow".
Alur kerja gagal
Saat Anda menggunakan kunci enkripsi yang dikelola pelanggan dan mencoba membuat tugas Dataflow, tugas tersebut akan gagal dengan error berikut:
Workflow failed
Error ini dapat terjadi karena alasan berikut:
- Kunci dan tugas Dataflow tidak berada di region yang sama, atau kunci multi-regional digunakan. Kunci global dan multi-regional tidak didukung. Region untuk CMEK dan region untuk tugas Dataflow Anda harus sama.
- Nama kunci tidak ditentukan dengan benar. Kunci mungkin tidak ada, atau nama mungkin salah ketik.
Kunci Cloud KMS tidak dapat melindungi resource untuk tugas ini
Saat Anda menjalankan tugas Dataflow dan mencoba mengaktifkan kunci enkripsi yang dikelola pelanggan, tugas tersebut akan gagal, dan Anda melihat error seperti berikut:
Cloud KMS key can't protect resources for this job. Please make sure the KMS key's region matches the Dataflow region
Error ini dapat terjadi karena alasan berikut:
- Kunci dan tugas Dataflow tidak berada di region yang sama, atau kunci multi-regional digunakan. Kunci global dan multi-regional tidak didukung. Region untuk CMEK dan region untuk tugas Dataflow Anda harus sama.
- Parameter
dataflowKMSKey
tidak ditentukan dengan benar.
Penskalaan Otomatis Vertikal tidak berfungsi
Saat Anda menggunakan Penskalaan Vertikal, tugas tidak otomatis diskalakan secara vertikal, dan error berikut muncul di log tugas:
{"level":"error","ts":1708815877.1246133,"caller":"exporter/exporter.go:232","msg":"failed to get response from UAS: %v","error":"rpc error: code = PermissionDenied desc = The caller does not have permission","stacktrace":"google3/autoscaler/vitor/external/go/exporter/exporter.receiver\n\tautoscaler/vitor/external/go/exporter/exporter.go:232"}
Error ini terjadi jika akun layanan pekerja tidak memiliki peran
Pekerja Dataflow (roles/dataflow.worker
).
Untuk mengatasi masalah ini, berikan peran roles/dataflow.worker
kepada akun layanan pekerja. Untuk mengetahui informasi selengkapnya, lihat
Memberikan satu peran
dalam dokumentasi Identity and Access Management.
Jika Anda menggunakan peran khusus untuk akun layanan pekerja, tambahkan izin berikut ke peran khusus tersebut:
autoscaling.sites.readRecommendations
autoscaling.sites.writeMetrics
autoscaling.sites.writeState