Auf dieser Seite wird gezeigt, wie Sie Probleme mit Dataflow-Berechtigungen untersuchen und beheben.
Damit Sie Dataflow-Jobs erfolgreich ausführen können, müssen Ihr Nutzerkonto und die Dataflow-Dienstkonten den erforderlichen Zugriff auf Ressourcen haben. Eine Liste der erforderlichen Rollen und Schritte zum Zuweisen dieser Rollen finden Sie auf der Dataflow-Seite „Sicherheit und Berechtigungen“ unter Sicherheit und Berechtigungen für Pipelines in Google Cloud.
Wenn Ihre Apache Beam-Pipelines auf Google Cloud-Ressourcen zugreifen, benötigt das Dataflow-Projekt-Worker-Dienstkonto außerdem Zugriff auf die Ressourcen. Eine Liste der Rollen, die Ihr Worker-Dienstkonto möglicherweise benötigt, finden Sie unter Beispiel für die Rollenzuweisung
Wenn eine oder mehrere Rollen, die zum Ausführen eines Jobs erforderlich sind, fehlen, kann ein Fehler in den Joblogs oder in den Worker-Logs angezeigt werden. Eine Anleitung zum Auffinden von Fehlern nach dem Fehlschlagen eines Job finden Sie unter Informationen zu Pipelinefehlern finden.
Um Berechtigungsprobleme zu beheben, müssen Sie wissen, welche Berechtigung fehlt und welches Konto diese Berechtigung hat. Um zu ermitteln, welche Berechtigung fehlt, sehen Sie sich die in der Fehlermeldung aufgeführte Berechtigung an und suchen die Rolle, die diese Berechtigung enthält. Häufig, aber nicht immer, müssen Sie dem Dataflow-Worker-Dienstkonto die entsprechende Rolle zuweisen.
Damit Sie Berechtigungen hinzufügen können, muss Ihr Nutzerkonto den Zugriff verwalten. Weitere Informationen finden Sie unter Zugriff auf Dienstkonten verwalten und Zugriff auf andere Ressourcen verwalten.
Der Nutzer hat keinen Schreibzugriff auf das Projekt
Wenn Sie versuchen, einen Dataflow-Job auszuführen, schlägt der Job fehl und Sie erhalten einen Fehler wie den folgenden:
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'
Dieser Fehler tritt auf, wenn Ihr Nutzerkonto nicht über die Rolle roles/dataflow.developer
verfügt.
Zum Beheben dieses Problems weisen Sie Ihrem Nutzerkonto die Rolle roles/dataflow.developer
zu. Achten Sie außerdem darauf, dass Ihr Nutzerkonto die roles/iam.serviceAccountUser
-Rolle hat.
Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.
Der Nutzer verfügt nicht über ausreichende Berechtigungen für das Projekt
Wenn Sie versuchen, einen Dataflow-Job abzubrechen, wird ein Fehler wie der folgende angezeigt:
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
Ähnliche Fehler können auftreten, wenn Sie versuchen, einen Job schnell zu entladen oder zu aktualisieren.
Dieser Fehler tritt aus einem der folgenden Gründe auf:
- Ihr Nutzerkonto hat die
roles/dataflow.developer
-Rolle nicht. Zum Beheben dieses Problems weisen Sie Ihrem Nutzerkonto die Rolleroles/dataflow.developer
zu. Achten Sie außerdem darauf, dass Ihr Nutzerkonto dieroles/iam.serviceAccountUser
-Rolle hat. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen. - Die Job-ID ist falsch. Sie könnte einen Tippfehler enthalten, oder Sie verwenden die Job-ID anstelle des Jobnamens, um den Job abzubrechen.
Berechtigungsüberprüfung für Worker-Dienstkonto fehlgeschlagen
Wenn Sie versuchen, einen Dataflow-Job auszuführen, wird ein Fehler wie der folgende angezeigt:
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.
Dieser Fehler tritt auf, wenn das Worker-Dienstkonto die roles/dataflow.worker
-Rolle nicht hat.
Zum Beheben dieses Problems weisen Sie dem Worker-Dienstkonto die Rolle roles/dataflow.worker
zu.
Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.
Pipelinevalidierung fehlgeschlagen
Bevor ein neuer Dataflow-Job gestartet wird, führt Dataflow Validierungsprüfungen an der Pipeline aus. Wenn die Validierungsprüfungen Probleme mit der Pipeline finden, bricht Dataflow die Jobübermittlung vorzeitig ab, um Zeit und Rechenressourcen zu sparen. In den Joblogs enthält Dataflow Lognachrichten, die die Validierungsergebnisse und eine Anleitung zur Behebung der Probleme enthalten.
Wenn bei der Pipeline-Validierungsprüfung Berechtigungsprobleme gefunden werden, wird möglicherweise der folgende Fehler in den Joblogs angezeigt:
[The preflight pipeline validation failed for job JOB_ID.] Missing permissions
PERMISSION when accessing RESOURCE_PATH as Dataflow worker service account WORKER_SERVICE_ACCOUNT.
Wenn Berechtigungen für mehr als eine Ressource fehlen, enthalten die Joblogs mehrere Fehlermeldungen zu Berechtigungen.
Beheben Sie die Berechtigungsprobleme, bevor Sie den Dataflow-Job noch einmal senden. Die folgenden Ressourcen bieten Informationen zum Ändern von Rollen und Berechtigungen.
Informationen zu einer Rolle mit einer bestimmten Berechtigung finden Sie in der Referenz für IAM-Berechtigungen.
Informationen zum Zuweisen einer Rolle zu einem Hauptkonto für ein Projekt finden Sie unter IAM-Rolle über die Google Cloud Console zuweisen.
Zum Hinzufügen einer fehlenden Berechtigung für ein Projekt können IAM-Administratoren den Befehl
gcloud projects add-iam-policy-binding
verwenden:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL --role=ROLE
Informationen zum Zuweisen oder Ändern bestimmter Rollen finden Sie unter Rollen zuweisen oder widerrufen.
Informationen zu den erforderlichen Rollen und Berechtigungen für das Dataflow-Worker-Dienstkonto finden Sie auf der Dataflow-Seite „Sicherheit und Berechtigungen“ unter Worker-Dienstkonto.
Verwenden Sie die folgende Pipelineoption, wenn Sie die Pipelinevalidierung überschreiben und den Job mit Validierungsfehlern starten möchten:
--experiment=enable_ppv_effect=false
Beim Aktualisieren Ihrer Anmeldedaten ist ein Problem aufgetreten.
Wenn Sie versuchen, einen Dataflow-Job auszuführen, wird ein Fehler wie der folgende angezeigt:
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
Dieser Fehler tritt auf, wenn das Worker-Dienstkonto nicht die Rolle roles/dataflow.worker
hat oder die Dataflow API nicht aktiviert ist.
Prüfen Sie zuerst, ob das Worker-Dienstkonto die Rolle roles/dataflow.worker
hat. Gewähren Sie dem Worker-Dienstkonto bei Bedarf die Rolle roles/dataflow.worker
.
Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.
Informationen zum Aktivieren der Dataflow API finden Sie unter API im Google Cloud-Projekt aktivieren.
Berechtigung „compute.subnetworks.get“ erforderlich
Wenn Sie versuchen, einen Dataflow-Job in einem freigegebenen VPC-Netzwerk auszuführen, erhalten Sie eine Fehlermeldung wie diese:
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
Über eine freigegebene VPC können Sie in einem Hostprojekt Subnetze von einem VPC-Netzwerk in andere Dienstprojekte innerhalb derselben Organisation exportieren. Instanzen in den Dienstprojekten können Netzwerkverbindungen in den freigegebenen Subnetzen des Hostprojekts haben. Weitere Informationen finden Sie unter Freigegebene VPC – Übersicht.
Um dieses Problem zu beheben, prüfen Sie zuerst, ob das Dienstprojekt an das Hostprojekt angehängt ist. Weitere Informationen finden Sie unter Dienstprojekte anhängen auf der Seite „Freigegebene VPC bereitstellen“.
Als Nächstes erteilen Sie dem Compute Engine-Dienstkonto des Hostprojekts, dem Dataflow-Worker-Dienstkonto des Dienstprojekts und dem Dienstkonto, mit dem Sie den Job senden, die folgenden Rollen:
roles/dataflow.admin
roles/dataflow.serviceAgent
roles/compute.networkUser
roles/storage.objectViewer
Weitere Informationen finden Sie in der Dokumentation zu Identitäts- und Zugriffsverwaltung unter Richtlinien für die Angabe eines Subnetzwerkparameters für eine freigegebene VPC und Einzelne Rolle zuweisen.
Dataflow-Runner hat keinen Zugriff auf den Bucket
Wenn Sie versuchen, Objekte in einem Cloud Storage-Bucket aufzulisten, schlägt der Dataflow-Job fehl und Sie erhalten einen Fehler wie den folgenden:
"dataflow-runner@project-id.iam.gserviceaccount.com" does not have `storage.objects.list` access to the Google Cloud Storage Bucket
Dieser Fehler tritt auf, wenn das Worker-Dienstkonto die roles/storage.objectViewer
-Rolle nicht hat.
Zum Beheben dieses Problems weisen Sie Ihrem Nutzerkonto die roles/storage.objectViewer
-Rolle zu.
Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.
Cloud KMS-Schlüsselberechtigung für Ressource verweigert
Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel nutzen und versuchen, einen Dataflow-Job zu erstellen, schlägt der Job fehl und Sie erhalten einen Fehler wie den folgenden:
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.
Dieser Fehler tritt auf, wenn das Worker- und das Dataflow-Dienstkonto nicht die roles/cloudkms.cryptoKeyEncrypterDecrypter
-Rolle haben.
Zum Beheben dieses Problems weisen Sie dem Worker- und dem Dataflow-Dienstkonto die roles/cloudkms.cryptoKeyEncrypterDecrypter
-Rolle zu.
Weitere Informationen finden Sie unter Verschlüsseler/Entschlüsseler-Berechtigungen erteilen auf der Seite „Vom Kunden verwaltete Verschlüsselungsschlüssel verwenden“.
Berechtigung für Ressource verweigert
Wenn Sie versuchen, eine Pipeline zu erstellen, schlägt die Pipeline mit dem folgenden Fehler fehl:
Permission 'datapipelines.pipelines.create' denied on resource '//datapipelines.googleapis.com/projects/PROJECT_ID/locations/REGION' (or it may not exist).
Dieser Fehler tritt auf, wenn das Worker-Dienstkonto Ihres Projekts keinen Zugriff auf die Dateien und andere Ressourcen hat, die der Pipeline zugeordnet sind.
Weisen Sie dem Worker-Dienstkonto die folgenden Rollen zu, um dieses Problem zu beheben:
roles/dataflow.admin
roles/dataflow.worker
Weitere Informationen finden Sie unter Worker-Dienstkonto in „Sicherheit und Berechtigungen in Dataflow“.
Workflow fehlgeschlagen
Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel nutzen und versuchen, einen Dataflow-Job zu erstellen, schlägt der Job mit folgendem Fehler fehl:
Workflow failed
Dieser Fehler kann folgende Ursachen haben:
- Der Schlüssel und der Dataflow-Job befinden sich nicht in derselben Region oder es wird ein multiregionaler Schlüssel verwendet. Globale und multiregionale Schlüssel werden nicht unterstützt. Die Region für Ihren CMEK und die Region für Ihren Dataflow-Job muss identisch sein.
- Der Schlüsselname wurde nicht korrekt angegeben. Möglicherweise existiert der Schlüssel nicht oder der Name enthält einen Tippfehler.
Der Cloud KMS-Schlüssel kann die Ressourcen für diesen Job nicht schützen
Wenn Sie einen Dataflow-Job ausführen und versuchen, einen vom Kunden verwalteten Verschlüsselungsschlüssel zu aktivieren, schlägt der Job fehl und Sie erhalten einen Fehler wie den folgenden:
Cloud KMS key can't protect resources for this job. Please make sure the KMS key's region matches the Dataflow region
Dieser Fehler kann folgende Ursachen haben:
- Der Schlüssel und der Dataflow-Job befinden sich nicht in derselben Region oder es wird ein multiregionaler Schlüssel verwendet. Globale und multiregionale Schlüssel werden nicht unterstützt. Die Region für Ihren CMEK und die Region für Ihren Dataflow-Job muss identisch sein.
- Der
dataflowKMSKey
-Parameter wurde nicht korrekt angegeben.
Vertikales Autoscaling funktioniert nicht
Wenn Sie vertikales Autoscaling verwenden, wird der Job nicht automatisch vertikal skaliert und der folgende Fehler wird in den Joblogs angezeigt:
{"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"}
Dieser Fehler tritt auf, wenn das Worker-Dienstkonto die Rolle „Dataflow-Worker“ (roles/dataflow.worker
) nicht hat.
Zum Beheben dieses Problems weisen Sie dem Worker-Dienstkonto die Rolle roles/dataflow.worker
zu. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.
Wenn Sie eine benutzerdefinierte Rolle für das Worker-Dienstkonto verwenden, fügen Sie der benutzerdefinierten Rolle die folgenden Berechtigungen hinzu:
autoscaling.sites.readRecommendations
autoscaling.sites.writeMetrics
autoscaling.sites.writeState