Es gibt einen Fehler in Cloud Shell Credential Handhabung war, wo mit neueren Versionen von Python oauth2client Paket (entweder direkt oder indirekt) würde wie mit Fehlern fehlschlagen
File "/usr/local/lib/python2.7/dist-packages/oauth2client/contrib/gce.py", line 117, in _retrieve_info
self.service_account_email = info['email']
TypeError: string indices must be integers
Dies sollte in der neueren Bild Version behoben werden. Bei neuen Sitzungen der Cloud Shell sollte dieses Problem nicht auftreten. Hier ist ein funktionierendes Beispiel für Cloud Datastore API in einem Behälter verwendet wird, läuft in Cloud Shell:
$ cat Dockerfile FROM python RUN pip install gcloud COPY test.py . CMD ["python", "test.py"]
$ cat test.py from gcloud import datastore client = datastore.Client(project='your-project-id-23242') query = datastore.Query(client, kind='EntityKind') print(list(query.fetch()))
$ docker build -t test . ... docker output ...
$ docker run -ti test []
Das Beispiel druckt nur ein leeres Liste, weil ich keine Entitäten vom Typ "EntityKind" im Datenspeicher meines Projekts habe, aber Sie bekommen die Idee.
P.S. Ich arbeite bei Google.
Welchen genauen Fehler erhalten Sie? –
Hier ist der letzte Teil von Fehler. ----- File "/usr/local/lib/python2.7/dist-packages/oauth2client/contrib/gce.py", Leitung 134, in _refresh self._retrieve_info (http_request) File " /usr/local/lib/python2.7/dist-packages/oauth2client/contrib/gce.py“, Linie 117, in _retrieve_info self.service_account_email = info [ 'E-Mail'] Typeerror: String-Indizes müssen ganze Zahlen sein ----- Sorry, das Problem war nicht der Umfang, aber die Auth-Konto. Das Dienstkonto wird standardmäßig nicht in der Cloud Shell verwendet und dies hat den Fehler verursacht. Wie kann ich erzwingen, dass die Container-App das Dienstkonto verwendet? – etusji