Cómo solucionar problemas en la implementación de la configuración de Cloud Endpoints

En esta página, se describe cómo solucionar los problemas que pueden surgir durante la implementación de la configuración de Cloud Endpoints. Los mensajes de error que verás contienen información específica de tu proyecto. Por ejemplo, puedes ver un mensaje de error que contenga el ID de tu proyecto. En esta página, verás valores de marcador de posición como YOUR_PROJECT_ID.

Después de cada paso, vuelve a ejecutar el comando gcloud endpoints services deploy para ver si se resolvió el error.

No se puede convertir a la configuración del servicio

ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT:
Cannot convert to service config. http: undefined field <unknown> on message <RequestType>

Verifica tu archivo .proto para detectar faltas de coincidencias en los campos entre los mensajes de búfer del protocolo y las asignaciones de transcodificación.

Por ejemplo, en un archivo .proto, lo que sigue produce este error. La opción de asignación en Unary especifica un campo llamado undefined que no está en la definición del mensaje Request.

    rpc Unary(Request) Response {
      option (google.api.http) { get : "/{undefined}" };
    }

    message Request {
      string defined = 1;
    }
    

No puede acceder a la configuración del proyecto

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Not allowed to get project settings for project YOUR_PROJECT_ID

  1. Vuelve a validar tus datos con el SDK de Cloud para confirmar que te hayas autenticado con una cuenta que tiene permitido acceder al proyecto que se muestra en el mensaje de error:
        gcloud auth login
        

    Se abrirá una nueva pestaña del navegador y se te solicitará que elijas una cuenta.

  2. Confirma que el ID del proyecto que aparece en el mensaje de error corresponde al proyecto de Google Cloud en el que intentas implementar la configuración de Endpoints:
        gcloud projects list
        
  3. Verifica que el SDK de Cloud tenga configurado el ID del proyecto correcto como proyecto actual:
        gcloud config set project YOUR_PROJECT_ID
        

El emisor no tiene permisos

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Caller does not have permission 'servicemanagement.services.create' on project YOUR_PROJECT_ID

Cuando implementas la configuración de Endpoints por primera vez, Service Management crea un servicio administrado para tu API. Como mínimo, debes tener la función de Editor en el nivel del proyecto a fin de crear un servicio administrado. Luego de que Service Management crea el servicio administrado, los permisos mínimos obligatorios para volver a implementar la configuración de Endpoints son los de la función de Editor de configuración de servicio (roles/servicemanagement.configEditor) en el servicio. Para obtener más información, consulta Cómo otorgar acceso a la API.

No se puede verificar la propiedad del nombre de dominio

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Ownership for domain name YOUR_DOMAIN_NAME on project YOUR_PROJECT_ID cannot be verified

  • Si tienes un dominio personalizado (por ejemplo, example.com) configurado en el campo name de tu archivo api_config.yaml, debes verificar el nombre de dominio antes de que puedas implementar la configuración del servicio.
  • Si usas el dominio cloud.goog, verifica que el valor del campo name tenga el siguiente formato y que el ID del proyecto sea correcto:
        API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog
        

Soluciona otros problemas

Si recibiste un error que no figura aquí o si la información no te sirvió para resolver tu problema, vuelve a ejecutar el comando gcloud con la marca para mostrar la información de depuración:

    gcloud --verbosity=debug endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml
    

Qué sigue