1

Ich baue eine Beam-Pipeline auf Google Cloud-Datenfluss.GoogleCloud DataFlow konnte eine Datei nicht in den temporären Speicherort schreiben

Ich erhalte einen Fehler, dass Cloud-Datenfluss nicht berechtigt ist, in ein temporäres Verzeichnis zu schreiben.

enter image description here

Dies ist verwirrend, da klar Datenfluß die Fähigkeit, den Eimer zu schreiben hat, erstellt er einen Testordner.

enter image description here

Warum sollte ich in der Lage sein, einen Testordner zu schreiben, aber keine Temp-Ordner?

Ich bin in einem Andock-Container auf einer Computer-Engine ausgeführt. Ich bin vollständig mit meinem Dienstkonto authentifiziert.

PROJECT=$(gcloud config list project --format "value(core.project)") 
BUCKET=gs://$PROJECT-testing 

python tests/prediction/run.py \ 
    --runner DataflowRunner \ 
    --project $PROJECT \ 
    --staging_location $BUCKET/staging \ 
    --temp_location $BUCKET/temp \ 
    --job_name $PROJECT-deepmeerkat \ 
    --setup_file tests/prediction/setup.py 

EDIT

Als Reaktion auf @ Alex Amato

  1. Ist der Eimer zum Projekt gehören oder wird sie von einem anderen Projekt im Besitz? Ja, wenn ich den Startbildschirm für das Projekt gehe, ist dies einer der vier aufgeführten Buckets. Ich lade regelmäßig Daten hoch und interagiere mit anderen Google Cloud-Diensten (Cloud Vision API) aus diesem Bereich.

  2. Würden Sie bitte die vollständige Fehlermeldung angeben.

    „(8d8bc4d7fc4a50bd): Fehler, eine Datei zu temporären Speicherort schreiben‚gs: //api-project-773889352370-testing/temp/api-project-773889352370-deepmeerkat.1498771638.913123‘. Bitte stellen Sie sicher, dass der Eimer für Dieses Verzeichnis existiert, und das Projekt, unter dem der Workflow ausgeführt wird, verfügt über die erforderlichen Berechtigungen, um darauf zu schreiben. "

    „8d8bc4d7fc4a5f8f): Workflow fehlgeschlagen Ursachen:. (8d8bc4d7fc4a526c):.. Eine oder mehr Zugangskontrollen für temporären Speicherort oder inszenierten Dateien failed Bitte lesen Sie andere Fehlermeldungen für Details Weitere Informationen zu Sicherheit und Berechtigungen finden Sie https://cloud.google.com/dataflow/security-and-permissions . "

  3. Können Sie bestätigen, dass noch kein vorhandenes GCS-Objekt vorhanden ist, das mit dem Namen des GCS-Ordnerpfads übereinstimmt, den Sie verwenden möchten?

Ja, es gibt keinen Ordner namens temp im Bucket.

  1. Könnten Sie die Berechtigungen überprüfen Sie haben Sie die Mitglieder laufen Sie passen als

Bucket Berechtigungen global Admin

enter image description here

haben, die meine Spiele gcloud auth

enter image description here

+0

Gehört der Bucket zum Projekt oder gehört er einem anderen Projekt? Würden Sie bitte die vollständige Fehlermeldung angeben. Können Sie bestätigen, dass noch kein vorhandenes GCS-Objekt vorhanden ist, das mit dem Namen des GCS-Ordnerpfads übereinstimmt, den Sie verwenden möchten? Könnten Sie bitte überprüfen, ob die Berechtigungen den Mitgliedern entsprechen, die Sie ausführen? Verwenden Sie den Abschnitt Speicher in der Benutzeroberfläche der Google Cloud-Konsole, suchen Sie den Pfad und klicken Sie auf das Symbol ... und klicken Sie auf Berechtigungen bearbeiten, und erweitern Sie die Mitgliedergruppen –

+0

Können Sie auch Zugriff auf cloudservices account ( @ cloudservices.gserviceaccount .com) wie in https://cloud.google.com/dataflow/security-and-permissions erwähnt. – chamikara

+0

das hat es getan, danke, das cloudservices account zu Storage admin zu ändern funktioniert. Es hat bereits die Anmeldeinformationen des Dienstkontos von der Compute-Engine geerbt, ich hätte gedacht, es hätte Zugriff gehabt. Als Antwort hinzufügen? – bw4sz

Antwort

0

@chamikara war richtig. Trotz der Vererbung von Anmeldeinformationen von meinem Dienstkonto benötigt cloud dataflow eigene Anmeldeinformationen.

"Können Sie auch den Zugriff auf das cloudservices-Konto (@ cloudservices.gserviceaccount.com) gewähren, wie in cloud.google.com/dataflow/security-and-permissions erwähnt."

Verwandte Themen