2017-06-08 5 views
0

ich von https://github.com/GoogleCloudPlatform/training-data-analyst/blob/master/courses/data_analysis/lab2/python/grepc.py ein einfaches Skript auszuführen versuche (dieser Code ist ein Datenfluß-Pipeline zu Google Storage verbindet)Google Cloud Shell HttpAccessTokenRefreshError: Dies kann auftreten, wenn eine VM ohne Dienstkonto erstellt wurde oder Tive

Es hat letzte Woche funktioniert. Aber wenn ich es jetzt bin mit, habe ich immer den gleichen Fehler:

> Traceback (most recent call last): 
    File "grepc.py", line 50, in <module> 
    run() 
    File "grepc.py", line 44, in run 
    | 'write' >> beam.io.WriteToText(output_prefix) 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/io/textio.py", line 391, in __init__ 
    skip_header_lines=skip_header_lines) 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/io/textio.py", line 89, in __init__ 
    validate=validate) 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/io/filebasedsource.py", line 105, in __init__ 
    self._validate() 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/options/value_provider.py", line 109, in _f 
    return fnc(self, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/io/filebasedsource.py", line 165, in _validate 
    match_result = FileSystems.match([pattern], limits=[1])[0] 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/io/filesystems.py", line 131, in match 
    return filesystem.match(patterns, limits) 
    File "/usr/local/lib/python2.7/dist-packages/apache_beam/io/gcp/gcsfilesystem.py", line 138, in match 
    raise BeamIOError("Match operation failed", exceptions) 
apache_beam.io.filesystem.BeamIOError: Match operation failed with exceptions {'gs://{MY_BUCKET}/javahelp/*.java': HttpAccessTokenRefreshError(u' This can occur if a VM was created with no service account or scopes.',)} 

Ich habe keine Ahnung, wie diese zu lösen. Und eine Menge Googeln hat auch nicht geholfen.

+0

Tritt dieser Fehler in einer GCP Compute Engine-Instanz auf oder wo? –

+0

Ich verwende es in der Standard-Cloud-Shell. – Tina

Antwort

0

Ich nehme an, die {MYBUCKET} in der Fehlermeldung ist nicht literal und wurde durch Ihren Bucket-Namen ersetzt.

Wenn Sie dies von einer GCE VM-Instanz ausführen, können Sie diesen Befehl ausführen und die Ausgabe hier einfügen?

gcloud Serverinstanzen beschreiben {instance-name} --zone {Instanz-Zone}

Die oben würden Sie sagen, was Dienstkonten und Tive Ihre VM-Instanz hat. Und auch:

gcloud Projekte get-iam-Politik {Projektname}

Dies würde Ihnen sagen, welche Dienstkonten Ihr Projekt hat. Bitte löschen Sie die Projektnummer oder alle Informationen, die Sie für sensibel halten.

+0

Hallo David, ja MYBUKCET wird durch meinen Bucket ersetzt, der existiert. Ich führe den Befehl nur in der Google Cloud Shell. Bedeutung Ich sudo installiere die Installationspakete und das war's. Daher verwende ich keine zusätzliche VM und weiß auch nicht, dass ich über ein Dienstkonto verfüge. Es ist ein großes Projekt und es gibt mehrere Dienstkonten. Gibt es eine Möglichkeit herauszufinden, welche ich überprüfen sollte? – Tina

+0

Ich muss hinzufügen, dass das Ausführen dieses Skripts https://github.com/GoogleCloudPlatform/training-data-analyst/blob/master/courses/data_analysis/lab2/python/grep.py funktioniert. Aber Verbindung zu Google Stoarge löst den Fehler von oben aus. Ich weiß immer noch nicht, was ich machen soll. Danke für jede Hilfe! – Tina

+0

Könnten Sie die Ausgabe der Befehle, die ich angegeben habe (mit irgendwelchen vertraulichen Informationen ausgelöscht), einfügen? Ich möchte nur sicherstellen, dass Sie die richtigen Bereiche und Dienstkonten haben. –

Verwandte Themen