Solucionar problemas de despliegue de la configuración de Cloud Endpoints

En esta página se describe cómo solucionar los errores que pueden surgir al desplegar la configuración de Cloud Endpoints. Los mensajes de error que ves contienen información específica de tu proyecto. Por ejemplo, puede que veas un mensaje de error que incluya 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 comprobar si se ha resuelto el error.

No se puede convertir en configuración de servicio

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

Comprueba el archivo .proto para ver si hay campos que no coinciden entre tus mensajes del búfer de protocolo y las asignaciones de transcodificación.

Por ejemplo, si se incluye lo siguiente en un archivo .proto, se produce este error. La opción de asignación de 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 se permite obtener 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 autenticarte con la CLI de gcloud para confirmar que te has autenticado con una cuenta que tiene permiso para acceder al proyecto que se muestra en el mensaje de error:
    gcloud auth login

    Se abre una nueva pestaña del navegador y se te pide que elijas una cuenta.

  2. Confirma que el ID de proyecto que se muestra en el mensaje de error corresponde al Google Cloud proyecto en el que quieres implementar la configuración de Endpoints:
    gcloud projects list
  3. Confirma que la CLI de gcloud tiene el ID de proyecto correcto establecido como proyecto actual:
    gcloud config set project YOUR_PROJECT_ID

El método llamador no tiene permiso

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

La primera vez que implementas la configuración de Endpoints, Service Management crea un servicio gestionado para tu API. Para crear un servicio gestionado, debes tener al menos el rol Editor a nivel de proyecto. Una vez que Service Management crea el servicio gestionado, los permisos mínimos necesarios para volver a implementar una configuración de Endpoints son los del rol Editor de configuración de servicios (roles/servicemanagement.configEditor) en el servicio. Para obtener más información, consulta Conceder 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 para poder implementar la configuración del servicio.
  • Si usas el dominio cloud.goog, confirma que el valor del campo name tiene el siguiente formato y que el ID del proyecto es correcto:
    API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog

Solucionar otros errores

Si has recibido un error que no aparece en esta lista o si la información no ha resuelto tu problema, vuelve a ejecutar el comando gcloud con la marca para mostrar información de depuración:

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

Siguientes pasos