2017-02-18 2 views
5

Ich implementiere die Schritte in der Quickstart.Google AppEngine Endpoints Fehler: Abrufen der Service-Konfiguration fehlgeschlagen (Statuscode 404)

Ich habe bemerkt another question auf diesem. Ich habe überprüft, dass env_variables Abschnitt in App.yaml die richtigen Werte für ENDPOINTS_SERVICE_NAME und ENDPOINTS_SERVICE_VERSION hat.

../_ah/api/explorer zeigt unter "Dienste" keinen Endpunkt an.

Was ist dieser Fehler und wie kann man ihn beheben?

Fehlerprotokoll zeigt:

(/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py:263) 
Traceback (most recent call last): 
    File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
    handler, path, err = LoadObject(self._handler) 
    File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject 
    obj = __import__(path[0]) 
    File "/base/data/home/apps/s~test-app-129421/20170217t185546.399267289806711006/main.py", line 103, in <module> 
    api = endpoints.api_server([EchoApi]) 
    File "/base/data/home/apps/s~test-app-129421/20170217t185546.399267289806711006/lib/endpoints/apiserving.py", line 520, in api_server 
    controller) 
    File "/base/data/home/apps/s~test-app-129421/20170217t185546.399267289806711006/lib/google/api/control/wsgi.py", line 121, in add_all 
    a_service = loader.load() 
    File "/base/data/home/apps/s~test-app-129421/20170217t185546.399267289806711006/lib/google/api/control/service.py", line 110, in load 
    return self._load_func(**kw) 
    File "/base/data/home/apps/s~test-app-129421/20170217t185546.399267289806711006/lib/google/api/config/service_config.py", line 78, in fetch_service_config 
    _log_and_raise(Exception, message_template.format(status_code)) 
    File "/base/data/home/apps/s~test-app-129421/20170217t185546.399267289806711006/lib/google/api/config/service_config.py", line 126, in _log_and_raise 
    raise exception_class(message) 
Exception: Fetching service config failed (status code 404) 

Antwort

1

Wenn die Dienstkonfiguration mit einem 404 fehlgeschlagen holen, dann ist der gcloud service-management deploy Schritt wahrscheinlich nicht wie erwartet. Ich würde diesen Schritt erneut versuchen und sicherstellen, dass alles korrekt konfiguriert ist, und sicherstellen, dass der Befehl ohne Fehler beendet wird.

+0

Danke Brad. Ich werde in das Protokoll für diesen Schritt schauen. Diejenigen, die suchten, wie ich das beheben konnte: Ich habe das Problem mit einem anderen Arbeitsbeispiel als Vorlage angegangen und konnte es durcharbeiten. – user362953

4

Ich hatte die gleiche Ausnahme verfolgen, außer mir war eine 403. Hoffnung ist hilfreich für andere mit der gleichen Frustration, die ich hatte.

Exception: Fetching service config failed (status code 403)

Schließlich fand ich, dass es in meinem app.yaml dies aus dem GIT Klon hatte

ENDPOINTS_SERVICE_NAME: echo-api.endpoints.[YOUR-PROJECT-ID].cloud.goog

Und die Kurz dirigierte mich nur YOUR-PROJECT-ID zu ersetzen.

musste ich auch ersetzen .cloud.goog mit .appspot.com

+0

Danke für die Eingaben. In meinem Fall hatte ich nicht den richtigen Endpunktpfad. – user362953

+1

Das Ersetzen von .cloud.goog durch .appspot.com löste das Problem für mich. Vielen Dank. –

+0

ihre Dokumentation war für eine Weile Fubar. das war ziemlich schlimm zu debuggen. – the0ther

0

Sie müssen nur die folgenden Schritte ausführen:

  1. Anzeige der ID-Service-Konfiguration, indem Sie den folgenden Befehl ausführen:

    gcloud service-management configs list --service=echo-api.endpoints.[PROJECT-ID].cloud.goog 
    
  2. Ersetzen Sie [PROJECT-ID] durch Ihre Projekt-ID. Fügen Sie die eckigen Klammern nicht ein.

  3. Bearbeiten Sie die Datei app.yaml in dem Python-docs-Samples/appengine/Standard/Endpunkte-Frameworks-v2/Echo-Verzeichnis und die folgenden Änderungen in dem env_variables Abschnitt machen:

    env_variables: 
        # Replace with your endpoints service name. 
        ENDPOINTS_SERVICE_NAME: "echo-api.endpoints.[PROJECT-ID].cloud.goog" 
        # Replace with the version Id of your uploaded Endpoints service. 
        ENDPOINTS_SERVICE_VERSION: "[YOUR-SERVICE-CONFIG-ID]" 
    
  4. Ersetzen Sie [PROJECT-ID] durch Ihre Projekt-ID und [YOUR-SERVICE-CONFIG-ID] durch Ihre Service-Konfigurations-ID aus dem vorherigen Schritt. Fügen Sie die eckigen Klammern nicht ein. Zum Beispiel:

    env_variables: 
        # Replace with your endpoints service name. 
        ENDPOINTS_SERVICE_NAME: "echo-api.endpoints.example-project.cloud.goog" 
        # Replace with the version Id of your uploaded Endpoints service. 
        ENDPOINTS_SERVICE_VERSION: "2016-12-14r1" 
    

Sie müssen nur eine der Optionen auf dem ersten Befehl gezeigt wählen.

1

Ich habe Anruf App myapp

Erste Show Dienstleistungen:

D:\projects\barcode\ebk>gcloud service-management configs list --service=myapp.appspot.com 
CONFIG_ID  SERVICE_NAME 
2017-06-29r3 myapp.appspot.com 
2017-06-29r2 myapp.appspot.com 
2017-06-29r1 myapp.appspot.com 
2017-06-29r0 myapp.appspot.com 

Sie erste Zeile in Folge sehen 2017-06-29r3 myapp.appspot.com ist, zu bearbeiten app.yaml:

env_variables: 
    # The following values are to be replaced by information from the output of 
    # 'gcloud service-management deploy swagger.json' command. 
    ENDPOINTS_SERVICE_NAME: myapp.appspot.com 
    ENDPOINTS_SERVICE_VERSION: 2017-06-29r3 

Dies funktioniert für mich

Verwandte Themen