Soluciona problemas

En esta página, se muestra cómo resolver problemas que podrías encontrar cuando uses Eventarc Avanzado.

Problemas con CMEK

Puedes usar claves de encriptación administradas por el cliente (CMEK) para proteger Eventarc. Las claves se crean y administran a través de Cloud Key Management Service (Cloud KMS). En la siguiente tabla, se describen los diferentes problemas con CMEK y cómo resolverlos cuando se usa Cloud KMS con Eventarc.

Problemas que ocurren cuando se crean o actualizan recursos de Eventarc

Problema con CMEK Mensaje de error Descripción
Clave inhabilitada $KEY is not enabled, current state is: DISABLED

Se inhabilitó la clave de Cloud KMS proporcionada para un recurso de Eventarc. Los eventos o mensajes asociados con el el recurso ya no están protegidos.

Solución:

  1. Muestra la clave que se usa para un recurso:
  2. Vuelve a habilitar la clave de Cloud KMS.
Se excedió la cuota Quota exceeded for limit

Se alcanzó el límite de cuota para las solicitudes de Cloud KMS.

Solución:

  • Limita la cantidad de llamadas a Cloud KMS.
  • Aumenta la cuota.
Para obtener más información, consulta Supervisa y ajusta las cuotas de Cloud KMS.
Región no coincidente Key region $REGION must match the resource to be protected

La región de la clave de KMS proporcionada es diferente de la región del recurso.

Solución:

Usa una clave de Cloud KMS de la misma región.

Restricción de las políticas de la organización project/PROJECT_ID violated org policy constraint

Eventarc se integra con las siguientes dos restricciones de políticas de la organización para ayudar a garantizar el uso de CMEK en una organización. Ningún recurso de Eventarc existente está sujeto a una política que se establece después de que se crea el recurso; sin embargo, es posible que falle la actualización del recurso.

  • constraints/gcp.restrictNonCmekServices hace que fallen todas las solicitudes de creación de recursos sin una clave especificada de Cloud KMS.

    Solución:

    Especifica una clave de Cloud KMS para el recurso de Eventarc. Para obtener más información, consulta Requiere CMEK para los recursos nuevos de Eventarc.

  • constraints/gcp.restrictCmekCryptoKeyProjects restringe las claves de Cloud KMS que puedes usar para proteger un recurso de Eventarc.

    Solución:

    Usa una clave de Cloud KMS compatible de un proyecto, una carpeta o una organización de Eventarc permitidos. Para obtener más información, consulta Restringe las claves de Cloud KMS de un proyecto de Eventarc.

Problemas que ocurren durante la entrega de eventos

Problema con CMEK Mensaje de error Descripción
Clave inhabilitada $KEY is not enabled, current state is: DISABLED

Se inhabilitó la clave de Cloud KMS proporcionada para un recurso de Eventarc. Los eventos o mensajes asociados con el el recurso ya no están protegidos.

Solución:

  1. Muestra la clave que se usa para un recurso:
  2. Vuelve a habilitar la clave de Cloud KMS.
Se excedió la cuota Quota exceeded for limit

Se alcanzó el límite de cuota para las solicitudes de Cloud KMS.

Solución:

  • Limita la cantidad de llamadas a Cloud KMS.
  • Aumenta la cuota.
Para obtener más información, consulta Supervisa y ajusta las cuotas de Cloud KMS.
Error de permiso Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource $KEY (or it may not exist)

Es posible que la clave de Cloud KMS proporcionada no exista o que el permiso de Identity and Access Management (IAM) no esté configurado de forma correcta.

Solución:

Para resolver problemas que puedas encontrar cuando uses claves administradas de forma externa a través de Cloud External Key Manager (Cloud EKM), consulta la referencia de errores de Cloud EKM.

Errores HTTP 400 Bad Request

Encontrar un error HTTP 400 Bad Request genérico para una canalización suele indicar un problema de transformación o vinculación de mensajes, o un problema relacionado con el extremo de destino. Asegúrate de hacer lo siguiente:

  • Busca errores de sintaxis o lógica en tus expresiones CEL. Por ejemplo, en este documento, consulta Problemas de transformación.
  • Verifica que los mensajes de eventos cumplan con el esquema esperado. Por ejemplo, en este documento, consulta Formato de solicitud no válido.
  • Si el destino del evento muestra el error, verifica el extremo de destino.

Errores HTTP 503 Service Unavailable

Si encuentras un error HTTP 503 Service Unavailable para una canalización que enruta mensajes a un destino de Google con una dirección DNS (por ejemplo, Cloud Run), asegúrate de que el Acceso privado a Google esté habilitado en la subred que se usa en el adjunto de red; de lo contrario, no se podrá resolver la dirección DNS.

Se denegó el permiso mientras se usaba el agente de servicio de Eventarc

Si encuentras el siguiente error mientras intentas crear un recurso de Eventarc Avanzado, espera unos minutos (posiblemente siete) y, luego, intenta crear el recurso de nuevo:

Permission denied while using the Eventarc Service Agent. If you recently started to use
Eventarc, it may take a few minutes before all necessary permissions are propagated to the
Service Agent. Otherwise, verify that it has Eventarc Service Agent role.

Un agente de servicio actúa como la identidad de un servicio Google Cloud determinado para un proyecto en particular. Para obtener más información, consulta Agentes de servicio y consulta los permisos de Identity and Access Management (IAM) para el rol de agente de servicio de Eventarc (roles/eventarc.serviceAgent).

Si sigues teniendo el error anterior después de intentar crear el recurso de nuevo, completa los siguientes pasos para verificar que el agente de servicio de Eventarc exista en tu Google Cloud proyectoy tenga el rol necesario:

  1. En la Google Cloud consola de, dirígete a la página IAM.

    Ir a IAM

  2. En la pestaña Ver por principales, selecciona la casilla de verificación Incluir asignaciones de roles proporcionadas por Google.
  3. En la lista de principales, busca el agente de servicio de Eventarc, que usa el siguiente formato:

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

  4. Verifica que el agente de servicio tenga el rol de agente de servicio de Eventarc. Si el agente de servicio no tiene el rol, entonces otórgale el rol.

Problemas con la publicación en trabajos de Cloud Run

En esta sección, se describe cómo resolver problemas que podrías encontrar cuando publicas eventos en un trabajo de Cloud Run. Para obtener una demostración de extremo a extremo, consulta la guía de inicio rápido.

Errores HTTP 403 Forbidden

Si encuentras un error HTTP 403 Forbidden mientras intentas ejecutar un trabajo de Cloud Run que anula la configuración del trabajo (por ejemplo, definiendo una vinculación de mensajes), asegúrate de haber otorgado el rol de IAM de desarrollador de Cloud Run (roles/run.developer) o de ejecutor de trabajos de Cloud Run con anulaciones (roles/run.jobsExecutorWithOverrides) a la cuenta de servicio de OAuth que usa la canalización de Eventarc. Para obtener más información, consulta Anula la configuración de trabajo para una ejecución específica.

Formato de solicitud no válido

Cuando defines una vinculación de mensajes, debes usar la clave http_endpoint_message_binding_template para transformar el evento al formato que espera la API de Cloud Run Admin, por ejemplo: {"body": ""}.

Si falta la clave o está vacía, el mensaje de evento enrutado al trabajo no cumplirá con el esquema esperado para el extremo del trabajo de Cloud Run, lo que impide que el mensaje de evento active correctamente la ejecución del trabajo.

Problemas de transformación

Si los datos de tu evento no se pueden transformar o no se transforman como se espera cuando especificas una vinculación de mensajes, asegúrate de que la sintaxis de tu expresión CEL sea correcta.

Expresión CEL incorrecta

Por ejemplo, en la siguiente expresión, se usan sustituciones de cadenas entre comillas, como \"${message.data}\"para evaluar e insertar valores de variables cuando se deben usar funciones de extensión de CEL:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"${message.data}\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"${message.attributes}\"}]}]}}}"

Además, los atributos de eventos son campos de nivel superior en el objeto de mensaje y no están contenidos en un campo de atributos independiente, como message.attributes. Se debe acceder a cada atributo de un mensaje CloudEvents entrante con el message.key valor, en el que key es el nombre del atributo.

Expresión CEL correcta

Para resolver estos problemas, agrega la función toJsonString() directamente al objeto para pasar los datos del mensaje como una cadena JSON. Para capturar los atributos del evento como una cadena JSON mientras excluyes la carga útil, usa message.removeFields(["data"]).toJsonString(). Por ejemplo:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"message.data.toJsonString()\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"message.removeFields(['data']).toJsonString()\"}]}]}}}"

Para obtener más información, consulta Transforma los eventos recibidos.

¿Qué sigue?