Memecahkan masalah izin Dataflow

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 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.
  • 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 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:

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