Ich habe eine einfache Python-Anwendung erstellt, die auf der Google App Engine ausgeführt wird. Code:Google App Engine - Fehler bei der Authentifizierung der bereitgestellten Version der App
import webapp2
from oauth2client.contrib.appengine import AppAssertionCredentials
from apiclient.discovery import build
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('BigQuery App')
credentials = AppAssertionCredentials(
'https://www.googleapis.com/auth/sqlservice.admin')
service = discovery.build('bigquery', 'v2', credentials=credentials)
projectId = '<Project-ID>'
query_request_body = {
"query": "SELECT a from Data.test LIMIT 10"
}
request = service.jobs().query(projectId=projectId, body=query_request_body)
response = request.execute()
self.response.write(response)
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
Ich bin in der Lage diesen Code lokal zu implementieren (http://localhost:8080) und alles funktioniert einwandfrei, jedoch habe ich den Fehler folgenden Fehler 500 Server, wenn ich versuche, es zu GAE zu implementieren mit:
appcfg.py -A <Project-Id> -V v1 update .
Dies ist der Fehler, den ich von der Fehlerbericht-Konsole erhalten:
error: An error occured while connecting to the server: DNS lookup failed for URL:http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/https://www.googleapis.com/auth/sqlservice.admin/?recursive=True
ich glaube, es ein auth-Problem ist und sicher Konto meines Dienstes machen wurde ermächtigt ich durch die gclo ging ud Authentifizierung für Dienstkonten und ich setze auch die Set-Umgebungsvariablen aus dem SDK.
Ich habe versucht, dies für eine Weile zu umgehen, werden alle Hinweise sehr geschätzt. Vielen Dank.
Außerdem habe ich durch die folgenden Dokumente Dienstkonto Auth wurde mit: https://developers.google.com/identity/protocols/OAuth2ServiceAccount, wo es heißt, dass ich nicht in der Lage sein sollte AppAsseritionCredenitals lokal auszuführen, was zu meiner Verwirrung fügt hinzu, weil ich kann eigentlich ohne Fehler.
EDIT:
Nach reuploading und reauthorizing meinem Dienstkonto ich in der Lage war, mit dem Server zu verbinden. Allerdings wird der Berechtigungsfehler mit diesem:
HttpError: <HttpError 403 when requesting https://www.googleapis.com/bigquery/v2/projects/sqlserver-1384/queries?alt=json returned "Insufficient Permission">