Questa pagina mostra come analizzare e risolvere i problemi relativi a: Autorizzazioni Dataflow.
Per eseguire correttamente i job Dataflow, il tuo account utente e Gli account di servizio Dataflow devono avere l'accesso necessario alle risorse. Per un elenco dei ruoli obbligatori e dei passaggi per concederli, vedi Sicurezza e autorizzazioni per le pipeline su Google Cloud nella pagina Sicurezza e autorizzazioni di Dataflow.
Inoltre, quando le pipeline Apache Beam accedono alle risorse Google Cloud, il tuo account di servizio del worker del progetto Dataflow deve accedere alle risorse. Per un elenco di ruoli che potrebbero essere necessari per il tuo account di servizio worker, vedi Esempio di assegnazione del ruolo.
Quando mancano uno o più ruoli necessari per l'esecuzione di un job, potrebbe essere visualizzato un errore nei log del job o nei log del worker. Per istruzioni su come trovare gli errori quando un job non riesce, consulta Trova informazioni sugli errori della pipeline.
Per risolvere i problemi relativi alle autorizzazioni, devi sapere quale autorizzazione mancante e a quale account deve essere assegnata. Per capire quale autorizzazione manca, controlla l'autorizzazione elencato nel messaggio di errore e individua il ruolo che contiene l'autorizzazione. Spesso, ma non sempre, è necessario assegnare i token pertinenti all'account di servizio worker Dataflow.
Per aggiungere autorizzazioni, il tuo account utente deve essere autorizzato a gestire l'accesso. Per maggiori informazioni informazioni, consulta Gestire l'accesso agli account di servizio e Gestire l'accesso ad altre risorse.
L'utente non dispone dell'accesso in scrittura al progetto
Quando provi a eseguire un job Dataflow, il job non riesce e viene visualizzato un errore simile al seguente:
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'
Questo errore si verifica quando il tuo account utente non dispone dell'autorizzazione roles/dataflow.developer
ruolo.
Per risolvere il problema, concedi al tuo account utente la roles/dataflow.developer
ruolo. Inoltre, assicurati che il tuo account utente abbia il ruolo roles/iam.serviceAccountUser
.
Per ulteriori informazioni, vedi Concedere un singolo ruolo.
nella documentazione di Identity and Access Management.
L'utente non dispone di autorizzazioni sufficienti sul progetto
Quando provi ad annullare un job Dataflow, viene visualizzato un errore simile al seguente:
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
Errori simili potrebbero verificarsi durante il tentativo di svuotare o aggiornare un job.
Questo errore si verifica per uno dei seguenti motivi:
- Il tuo account utente non ha il ruolo
roles/dataflow.developer
. Per risolvere il problema, concedi al tuo account utente laroles/dataflow.developer
ruolo. Inoltre, assicurati che il tuo account utente abbia il ruoloroles/iam.serviceAccountUser
. Per ulteriori informazioni, vedi Concedere un singolo ruolo. nella documentazione di Identity and Access Management. - L'ID job non è corretto. Potrebbe contenere un errore di battitura o il nome del job annullare il job anziché l'ID job.
Verifica delle autorizzazioni per l'account di servizio worker non riuscita
Quando provi a eseguire un job Dataflow, viene visualizzato un errore simile al seguente:
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.
Questo errore si verifica quando l'account di servizio worker non ha roles/dataflow.worker
ruolo.
Per risolvere il problema, concedi all'account di servizio worker l'autorizzazione roles/dataflow.worker
ruolo.
Per ulteriori informazioni, vedi Concedere un singolo ruolo.
nella documentazione di Identity and Access Management.
Convalida della pipeline non riuscita
Prima del lancio di un nuovo job Dataflow, Dataflow esegue i controlli di convalida sulla pipeline. Quando i controlli di convalida individuano problemi con la pipeline, per risparmiare tempo e risorse di calcolo, Dataflow non riesce a inviare il job in anticipo. Nella log dei job, Dataflow include messaggi di log contenenti i risultati della convalida e le istruzioni per risolvere i problemi.
Quando il controllo di convalida della pipeline rileva problemi di autorizzazione, potresti vedere seguente errore nei log del job:
[The preflight pipeline validation failed for job JOB_ID.] Missing permissions
PERMISSION when accessing RESOURCE_PATH as Dataflow worker service account WORKER_SERVICE_ACCOUNT.
Se mancano autorizzazioni per più risorse, i log dei job contengono messaggi di errore relativi a più autorizzazioni.
Prima di tentare di inviare nuovamente il job Dataflow, correggi i problemi di autorizzazione. Le seguenti risorse forniscono informazioni modificare ruoli e autorizzazioni.
Se hai bisogno di trovare un ruolo che conceda un'autorizzazione specifica, consulta Riferimento alle autorizzazioni IAM.
Per concedere un ruolo a un'entità per un progetto, consulta Concedi un ruolo IAM utilizzando la console Google Cloud.
Per aggiungere un'autorizzazione mancante per un progetto, gli amministratori IAM puoi usare il comando
gcloud projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL --role=ROLE
Per concedere o modificare ruoli specifici, consulta Concedere o revocare ruoli.
Per informazioni sui ruoli e sulle autorizzazioni richiesti per Account di servizio worker Dataflow, consulta Account di servizio worker nella pagina Sicurezza e autorizzazioni di Dataflow.
Se vuoi eseguire l'override della convalida della pipeline e avviare il job con errori di convalida, utilizza la seguente opzione di pipeline:
--experiment=enable_ppv_effect=false
Si è verificato un problema durante l'aggiornamento delle tue credenziali
Quando provi a eseguire un job Dataflow, viene visualizzato un errore simile al seguente:
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
Questo errore si verifica quando l'account di servizio worker non ha roles/dataflow.worker
o quando l'API Dataflow non è abilitata.
Innanzitutto, verifica che il servizio worker account roles/dataflow.worker
ruolo. Se necessario, concedi roles/dataflow.worker
all'account di servizio del worker.
Per ulteriori informazioni, vedi Concedere un singolo ruolo.
nella documentazione di Identity and Access Management.
Per abilitare l'API Dataflow, consulta Abilitare un'API nel progetto Google Cloud.
"compute.subnetworks.get" obbligatorio autorizzazione
Quando provi a eseguire un job Dataflow su una rete VPC condiviso, viene visualizzato un errore simile a uno dei seguenti:
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
Un VPC condiviso consente di esportare le subnet da Rete VPC in un progetto host ad altri progetti di servizio in della stessa organizzazione. Le istanze nei progetti di servizio possono avere connessioni di rete e le subnet del progetto host. Per ulteriori informazioni, vedi Panoramica della rete VPC condivisa.
Per risolvere il problema, verifica innanzitutto che il progetto di servizio sia collegato progetto host. Per saperne di più, consulta Collegare i progetti di servizio nella pagina Provisioning della rete VPC condivisa.
Successivamente, concedi i seguenti ruoli all'account di servizio Compute Engine del progetto host: l'account di servizio worker Dataflow del progetto di servizio e account di servizio utilizzato per inviare il job:
roles/dataflow.admin
roles/dataflow.serviceAgent
roles/compute.networkUser
roles/storage.objectViewer
Per ulteriori informazioni, vedi Linee guida per specificare un parametro della subnet per il VPC condiviso e Concedi un singolo ruolo nella documentazione di Identity and Access Management.
L'esecutore Dataflow non ha accesso al bucket
Quando provi a elencare gli oggetti in un bucket Cloud Storage, Dataflow del job non va a buon fine e viene visualizzato un errore simile al seguente:
"dataflow-runner@project-id.iam.gserviceaccount.com" does not have `storage.objects.list` access to the Google Cloud Storage Bucket
Questo errore si verifica quando l'account di servizio worker non ha roles/storage.objectViewer
ruolo.
Per risolvere il problema, concedi al tuo account utente la roles/storage.objectViewer
ruolo.
Per ulteriori informazioni, vedi Concedere un singolo ruolo.
nella documentazione di Identity and Access Management.
Autorizzazione per la chiave Cloud KMS negata per la risorsa
Se utilizzi chiavi di crittografia gestite dal cliente e provi a creare un job Dataflow, il job non riesce e viene visualizzato un errore simile al seguente:
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.
Questo errore si verifica quando l'account di servizio worker e Dataflow
l'account di servizio non include roles/cloudkms.cryptoKeyEncrypterDecrypter
role.
Per risolvere il problema, concedi il ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter
all'account di servizio worker e all'account di servizio Dataflow.
Per ulteriori informazioni, consulta l'articolo Concessione delle autorizzazioni di crittografia/decrittografia.
della pagina Utilizzo delle chiavi di crittografia gestite dal cliente.
Autorizzazione negata per la risorsa
Quando provi a creare una pipeline, questa non funziona e viene restituito il seguente errore:
Permission 'datapipelines.pipelines.create' denied on resource '//datapipelines.googleapis.com/projects/PROJECT_ID/locations/REGION' (or it may not exist).
Questo errore si verifica se l'account di servizio worker del progetto non dispone ai file e ad altre risorse associate alla pipeline.
Per risolvere il problema, assegna i ruoli seguenti all'account di servizio worker:
roles/dataflow.admin
roles/dataflow.worker
Per ulteriori informazioni, vedi Account di servizio worker in "Sicurezza e autorizzazioni di Dataflow".
Flusso di lavoro non riuscito
Se utilizzi chiavi di crittografia gestite dal cliente e prova a creare un job Dataflow, il job non riesce e restituisce il seguente errore:
Workflow failed
Questo errore può verificarsi per i seguenti motivi:
- La chiave e il job Dataflow non si trovano nella stessa regione o in più regioni . Le chiavi globali e multiregionali non sono supportate. La regione per la tua CMEK e la regione per il job Dataflow deve essere lo stesso.
- Il nome della chiave non è specificato correttamente. La chiave potrebbe non esistere o il nome potrebbe contenere un errore di battitura.
La chiave Cloud KMS non può proteggere le risorse per questo job
Quando esegui un job Dataflow e tenti di abilitare una chiave di crittografia gestita dal cliente, il job non riesce e viene visualizzato un errore simile al seguente:
Cloud KMS key can't protect resources for this job. Please make sure the KMS key's region matches the Dataflow region
Questo errore può verificarsi per i seguenti motivi:
- La chiave e il job Dataflow non si trovano nella stessa regione o in più regioni . Le chiavi globali e multiregionali non sono supportate. La regione per la tua CMEK e la regione per il job Dataflow deve essere lo stesso.
- La
dataflowKMSKey
non è specificato correttamente.
La scalabilità automatica verticale non funziona
Quando utilizzi la scalabilità automatica verticale, il job non scala automaticamente in verticale, e nei log del job viene visualizzato il seguente errore:
{"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"}
Questo errore si verifica quando l'account di servizio worker non ha
Ruolo Worker Dataflow (roles/dataflow.worker
).
Per risolvere il problema, concedi all'account di servizio worker l'autorizzazione roles/dataflow.worker
ruolo. Per ulteriori informazioni, vedi
Assegna un singolo ruolo
nella documentazione di Identity and Access Management.
Se utilizzi un ruolo personalizzato per l'account di servizio worker, aggiungi le seguenti autorizzazioni al ruolo personalizzato:
autoscaling.sites.readRecommendations
autoscaling.sites.writeMetrics
autoscaling.sites.writeState