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 marcadores 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 autenticar con la CLI de gcloud para confirmar que te autenticaste con una cuenta que tenga permiso para acceder al proyecto que se muestra en el mensaje de error:
    gcloud auth login
    

    Se abrirá una pestaña nueva 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. Confirma que la CLI de gcloud tenga el ID del proyecto correcto configurado como el 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?