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 Anda 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 Anda memerlukan akses ke resource tersebut. Untuk mengetahui 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.

Untuk menambahkan izin, akun pengguna Anda harus diizinkan untuk mengelola akses. Untuk informasi selengkapnya, lihat Mengelola akses ke akun layanan dan Mengelola akses ke resource lain.

Pengguna tidak memiliki akses tulis ke project

Saat mencoba menjalankan tugas Dataflow, tugas akan gagal dan Anda akan melihat error seperti 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, berikan peran roles/dataflow.developer ke akun pengguna Anda. 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 di project

Saat mencoba membatalkan tugas Dataflow, Anda akan 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 menghabiskan atau memperbarui tugas.

Error ini terjadi karena salah satu alasan berikut:

  • Akun pengguna Anda tidak memiliki peran roles/dataflow.developer. Untuk mengatasi masalah ini, berikan peran roles/dataflow.developer ke akun pengguna Anda. 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 tugas salah. ID tersebut 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 akan 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 saat akun layanan pekerja tidak memiliki peran roles/dataflow.worker.

Untuk mengatasi masalah ini, berikan peran roles/dataflow.worker ke 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 akan melakukan pemeriksaan validasi pada pipeline. Jika pemeriksaan validasi menemukan masalah pada pipeline, untuk menghemat waktu dan resource komputasi, Dataflow akan gagal mengirimkan 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. Referensi berikut memberikan informasi tentang cara mengubah 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 akan 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 saat akun layanan pekerja tidak memiliki peran roles/dataflow.worker atau saat Dataflow API tidak diaktifkan.

Pertama, pastikan akun 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 yang mirip dengan salah satu dari berikut ini:

Required 'compute.subnetworks.get' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403
Required 'compute.subnetworks.use' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403

Dengan VPC Bersama, Anda dapat mengekspor subnet dari jaringan VPC dalam project host ke project layanan lainnya 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 terpasang ke project host. Untuk mengetahui informasi selengkapnya, lihat Melampirkan project layanan di halaman Penyediaan VPC Bersama.

Selanjutnya, berikan peran berikut ke akun layanan Compute Engine project host, akun layanan pekerja Dataflow project layanan, dan akun layanan yang digunakan untuk mengirimkan tugas:

Untuk mengetahui informasi selengkapnya, lihat Panduan untuk menentukan parameter subjaringan untuk VPC Bersama dan Memberikan satu peran dalam dokumentasi Identity and Access Management.

Runner Dataflow tidak memiliki akses ke bucket

Saat Anda mencoba membuat daftar objek di bucket Cloud Storage, tugas Dataflow gagal, dan Anda akan melihat error yang mirip dengan 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 ke 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 akan gagal, dan Anda akan melihat error yang mirip dengan berikut ini:

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 saat 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 akan 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 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 menjalankan tugas Dataflow dan mencoba mengaktifkan kunci enkripsi yang dikelola pelanggan, tugas akan gagal, dan Anda akan melihat error yang mirip dengan berikut ini:

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 Otomatis 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 Dataflow Worker (roles/dataflow.worker).

Untuk mengatasi masalah ini, berikan peran roles/dataflow.worker ke 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:

  • autoscaling.sites.readRecommendations
  • autoscaling.sites.writeMetrics
  • autoscaling.sites.writeState