Descripción general de la solución de problemas

En esta página, se proporciona información general sobre la solución de problemas para API Gateway.

No se pueden ejecutar los comandos “gcloud api-gateway”

Para ejecutar los comandos gcloud api-gateway ..., debes actualizar Google Cloud CLI y habilitar los servicios de Google necesarios. Consulta Cómo configurar el entorno de desarrollo para obtener más información.

El comando “gcloud api-gateway api-configs create” indica que la cuenta de servicio no existe

Si ejecutas el comando gcloud api-gateway api-configs create ... y recibes un error con el siguiente formato:

ERROR: (gcloud.api-gateway.api-configs.create) FAILED_PRECONDITION:
Service Account "projects/-/serviceAccounts/service_account_email" does not exist

Vuelve a ejecutar el comando, pero esta vez incluye la opción --backend-auth-service-account para especificar de forma explícita la dirección de correo electrónico de la cuenta de servicio que se usará:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION \
  --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

Asegúrate de que ya asignaste los permisos necesarios a la cuenta de servicio como se describe en Configura el entorno de desarrollo.

La solicitud a la API muestra un error HTTP 403

Si una solicitud a una API implementada muestra un error HTTP 403 al cliente de la API, significa que la URL solicitada es válida, pero el acceso está prohibido por algún motivo.

Una API implementada tiene los permisos asociados con las funciones otorgadas a la cuenta de servicio que usaste cuando creaste la configuración de la API. Por lo general, el motivo del error HTTP 403 es que la cuenta de servicio no tiene los permisos necesarios para acceder al servicio de backend.

Si definiste la API y el servicio de backend en el mismo proyecto de Google Cloud, asegúrate de que la cuenta de servicio tenga asignada la función Editor o la función necesaria para acceder al servicio de backend. Por ejemplo, si el servicio de backend se implementa mediante Cloud Functions, asegúrate de que la cuenta de servicio tenga asignada la función Cloud Function Invoker.

La solicitud a la API muestra un error HTTP 401 o 500.

Si una solicitud a una API implementada muestra un error HTTP 401 o 500 al cliente de la API, puede haber un problema con el uso de la cuenta de servicio utilizada cuando creaste la configuración de la API para llamar al servicio de backend.

Una API implementada tiene los permisos asociados con las funciones otorgadas a la cuenta de servicio que usaste cuando creaste la configuración de la API. Se verifica la cuenta de servicio para asegurarse de que exista y que la puerta de enlace de la API pueda usarla cuando se implemente la API.

Si la cuenta de servicio se borra o inhabilita después de implementar la puerta de enlace, puede ocurrir la siguiente secuencia de eventos:

  1. Inmediatamente después de borrar o inhabilitar la cuenta de servicio, es posible que veas respuestas HTTP 401 en los registros de la puerta de enlace. Si el campo response_code_details se configura como "via_upstream" en el jsonPayload de la entrada de registro, esto indica que borrar o inhabilitar la cuenta de servicio es la causa del error.

  2. También podrías ver un error HTTP 500 sin ninguna entrada de registro correspondiente en los registros de la puerta de enlace de la API. Si no hay solicitudes a tu puerta de enlace inmediatamente después de que se borre o inhabilite la cuenta de servicio, es posible que no veas las respuestas HTTP 401, pero los errores HTTP 500 sin los registros correspondientes de la puerta de enlace de la API son una indicación de que la cuenta de servicio de la puerta de enlace ya no está activa.

Solicitudes a la API de alta latencia

Al igual que Cloud Run y Cloud Functions, API Gateway está sujeta a la latencia de “inicio en frío”. Si la puerta de enlace no recibió tráfico durante 15 a 20 minutos, las solicitudes que se realicen dentro de los primeros 10 a 15 segundos del inicio en frío experimentarán una latencia de 3 a 5 segundos.

Si el problema persiste después del período de “preparación” inicial, verifica los registros de solicitud de los servicios de backend que configuraste en la configuración de la API. Por ejemplo, si el servicio de backend se implementa mediante Cloud Functions, verifica las entradas de Cloud Logging del registro de solicitudes de Cloud Function asociado.

No se puede ver la información de registro

Si tu API responde correctamente, pero los registros no contienen datos, por lo general, eso significa que no habilitaste todos los servicios de Google que requiere API Gateway.

API Gateway requiere que habilites los siguientes servicios de Google:

Nombre Título
apigateway.googleapis.com API de API Gateway
servicemanagement.googleapis.com API de Service Management
servicecontrol.googleapis.com API de Service Control

Para confirmar que los servicios obligatorios están habilitados, haz lo siguiente:

gcloud services list

Si no ves los servicios necesarios que se incluyeron en la lista, habilítalos:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Para obtener más información sobre los servicios de gcloud, consulta Servicios de gcloud.