user362953
user362953

Reputation: 435

Google AppEngine Endpoints Error: Fetching service config failed (status code 404)

I am implementing the steps in the Quickstart.

I did notice another question on this. I double checked that env_variables section in app.yaml has the right values for ENDPOINTS_SERVICE_NAME and ENDPOINTS_SERVICE_VERSION.

../_ah/api/explorer doesn't show any endpoint under 'Services'.

What is this error and how to fix it?

Error log shows:

 (/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)

Upvotes: 6

Views: 1960

Answers (5)

Mike Yang
Mike Yang

Reputation: 2934

While using Cloud Endpoint, must make sure the config ID is the same as in app.yaml

gcloud endpoints configs list --service=myapp.appspot.com

Result:

CONFIG_ID     SERVICE_NAME
2018-08-13r0  myapp.appspot.com

In app.yaml

ENDPOINTS_SERVICE_VERSION: 2018-08-13r0

Upvotes: 0

Denis Raison
Denis Raison

Reputation: 41

You just need to follow these steps:

  1. Display the service configuration ID by running the following command:

    gcloud endpoints configs list --service=echo-api.endpoints.[PROJECT-ID].cloud.goog
    
  2. Replace [PROJECT-ID] with your project ID. Do not include the square brackets.

  3. Edit the app.yaml file in the python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo directory, and make the following changes in the env_variables section:

    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. Replace [PROJECT-ID] with your project ID and [YOUR-SERVICE-CONFIG-ID] with your service configuration ID from the previous step. Do not include the square brackets. For example:

    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"
    

You just need to choose one of the options shown on the first command.

Upvotes: 0

nguy&#234;n
nguy&#234;n

Reputation: 5326

I have app call myapp

First show services:

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

You can see first line in result is 2017-06-29r3 myapp.appspot.com, edit 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

This works for me

Upvotes: 3

bourne2program
bourne2program

Reputation: 131

I had the same Exception trace, except mine was a 403. Hope is helpful to others having the same frustration I had.

Exception: Fetching service config failed (status code 403)

I finally found that in my app.yaml it had this from the GIT clone

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

And the Quickstart only directed me to replace YOUR-PROJECT-ID.

I had to also replace .cloud.goog with .appspot.com

Upvotes: 4

Brad Friedman
Brad Friedman

Reputation: 103

If fetching the service config failed with a 404, then the gcloud service-management deploy step probably didn't work as expected. I would try that step again, making sure that everything is configured correctly, and make sure that the command finishes with no errors.

Upvotes: 1

Related Questions