2

Ich frage mich, wie Sie das Dienstkonto in der Google App Engine-Standardumgebung verwenden. Ich schrieb einige Codes wie unten, um auf BigQuery mit einer richtigen JSON-Schlüsseldatei zuzugreifen.Wie Dienstkonto in Python auf GAE verwenden?

from google.cloud import bigquery 
.... 
bigquery_client = bigquery.Client.from_service_account_json(proper_path_to_json_key) 
list(bigquery_client.list_datasets()) 

Der Code funktioniert OK, wenn ich es auf einem lokalen Python-Interpreter ausführen, führt aber kläglich mit dem folgenden Fehler fehlgeschlagen, wenn es auf lokaler dev_appserver.py läuft.

TransportError: ('Connection aborted.', error(13, 'Permission denied')) 

Wenn es auf GAE läuft, ist es immer noch nicht, aber seine Fehlermeldung ist wie unten.

TransportError: ('Connection broken: IncompleteRead(208 bytes read)', IncompleteRead(208 bytes read)) 

Ich denke, dieser Fehler durch GAE Beschränkung ausgehenden Datenverkehr hier beschrieben verursacht wird https://cloud.google.com/appengine/docs/standard/python/issue-requests aber ich habe keine Ahnung, wie es zu lösen.

Was ist der beste Weg, Service Account in der GAE-Umgebung zu verwenden?

Antwort

0

Leider unterstützt Google App Engine Standard noch keine Google Client-Bibliotheken wie die BigQuery-Bibliothek, die Sie verwenden möchten, wie angegeben, in this GitHub topic, obwohl es in Arbeit ist.

Alternativ können Sie auch eine Bereitstellung in App Engine Flexible ausprobieren, wenn dies Ihren Anforderungen entspricht, oder versuchen Sie stattdessen die Google API Client Libraries.

In Bezug auf Ihre Frage zur Verwendung von Dienstkonten mit App Engine können Sie entweder die integrierten Standarddienstkonten verwenden, die beim Ausführen dieses Diensts verfügbar sind, oder benutzerdefinierte Dienstkonten erstellen. Weitere Informationen zur Verwendung von Dienstkonten in App Engine Standard finden Sie unter documentation.