2015-06-22 3 views
6

Ich habe ein App-Engine-Projekt, ich möchte auf meine Google Cloud Storage-Standard-Bucket zugreifen. Der erste Schritt zur Herstellung eines Credential-Objekt immer fehlschlägt, die folgenden auf einem Live-Instanz zu tun:Standardanmeldeinformationen für App Engine-Projekte, die auf Google Cloud Storage zugreifen?

Credential creds = GoogleCredential.getApplicationDefault(); 

Die Ausnahmemeldung erhalte ich:.

„Die Anwendung von Standardanmeldeinformationen sind nicht verfügbar Sie, wenn läuft in verfügbar sind Google Compute Engine. Andernfalls muss die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS definiert werden, die auf eine Datei verweist, die die Anmeldeinformationen definiert. Weitere Informationen finden Sie unter https://developers.google.com/accounts/docs/application-default-credentials. "

Der Doc sagt hier, dass die Produktion App Engine-Projekten Zugriff auf die Standardanmeldeinformationen ?:

https://developers.google.com/identity/protocols/application-default-credentials

„3. Wenn Sie laufen in Google App Engine Produktion haben sollte, das Dienstkonto in-built verbunden mit der Anwendung wird verwendet. "

Gibt es ein Setup, das ich vermisse?

Meine App Engine-Version (gradle):

com.google.appengine:appengine-java-sdk:1.9.18 

und Google Cloud Storage-lib-Version:

com.google.apis:google-api-services-storage:v1-rev35-1.20.0 

Dank

+0

Ich weiß, es ist lange her, seit diese Frage gestellt wurde, aber Sie können versuchen, diesen Parameter mit Pfad zu JSON-Datei mit Ihren privaten Schlüsseldaten exportieren, um Standard-Google Cloud-Konto, export GOOGLE_APPLICATION_CREDENTIALS =/Users/googleCredentials.json' –

Antwort

2

Gehe zur Google Developers Console -> Anmeldeinformationen und erstellen Sie eine Standard Dienstkonto .json Schlüssel. Wenn Sie das tun, wird es eine Datei wie default-account-credentials.json für Sie herunterladen. Sie müssen diese Datei dann irgendwo in Ihrem App-Engine-Projekt ablegen. Diese Datei wird verwiesen werden, wenn Sie

Credential creds = GoogleCredential.getApplicationDefault();

jedoch nennen, bevor das funktioniert Sie die Umgebungsvariable muss diese Stelle Dateien. Um das zu tun öffnen Sie Ihre appengine-web.xml Datei und setzen Sie diese Zeile hinein:

<env-variables> 
      <env-var name="GOOGLE_APPLICATION_CREDENTIALS" 
       value="WEB-INF/default-account-credentials.json" /> 
     </env-variables> 

Wo value ist der Pfad zu Ihrem .json creds Datei, die Sie gerade heruntergeladen haben.

Jetzt wird es funktionieren. (Ihr Gradle Importe sind in Ordnung)

+0

Ich habe die obigen Schritte befolgt und die Umgebungsvariablen der heruntergeladenen Datei hinzugefügt. Noch bin ich immer Ausnahme: in java.lang.ExceptionInInitializerError Verschachtelte: java.security.AccessControlException: Zugriff verweigert ("java.lang.RuntimePermission" "modifyThreadGroup") \t bei java.security.AccessControlContext.checkPermission (AccessControlContext. Java: 484) Bitte schlagen Sie vor, wenn ein anderer Schritt getan werden muss. Vielen Dank im Voraus für Ihre Hilfe. – Rashmi

Verwandte Themen