En esta página, se muestra cómo resolver problemas que podrías encontrar cuando uses Eventarc Advanced.
Problemas con la 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 diferentes problemas relacionados con la 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 la CMEK | Mensaje de error | Descripción |
|---|---|---|
| Llave 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 al recurso ya no están protegidos. Solución:
|
| Se superó la cuota | Quota exceeded for limit |
Se alcanzó el límite de cuota para las solicitudes de Cloud KMS. Solución:
|
| La región no coincide | 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.
|
Problemas que ocurren durante la entrega de eventos
| Problema con la CMEK | Mensaje de error | Descripción |
|---|---|---|
| Llave 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 al recurso ya no están protegidos. Solución:
|
| Se superó la cuota | Quota exceeded for limit |
Se alcanzó el límite de cuota para las solicitudes de Cloud KMS. Solución:
|
| 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 de HTTP 400 Bad Request
Si se produce un error HTTP 400 Bad Request genérico para una canalización, a menudo indica un problema de transformación o de vinculación de mensajes, o bien un problema relacionado con el extremo de destino. Asegúrate de hacer lo siguiente:
- Busca errores de sintaxis o lógica en tus expresiones de 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 propio destino del evento devuelve el error, verifica el extremo al que se segmenta.
Errores de 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 Advanced, 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 de 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 tu recurso de nuevo, completa los siguientes pasos para verificar que el agente de servicio de Eventarc exista en tu proyecto Google Cloud y tenga el rol necesario:
- En la consola de Google Cloud , dirígete a la página IAM.
- En la pestaña Ver por principales, selecciona la casilla de verificación Incluir asignaciones de roles proporcionadas por Google.
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- Verifica que el agente de servicio tenga el rol de Agente de servicio de Eventarc. Si el agente de servicio no tiene el rol, otorga 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 publiques eventos en un trabajo de Cloud Run. Para ver una demostración de extremo a extremo, consulta la guía de inicio rápido.
Errores de HTTP 403 Forbidden
Si encuentras un error HTTP 403 Forbidden cuando 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 del 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 en el formato que espera la API de Cloud Run Admin, por ejemplo, {"body": ""}.
Si falta la clave o está vacía, el mensaje del evento que se enruta al trabajo no se ajustará al esquema esperado para el extremo del trabajo de Cloud Run, lo que impedirá que el mensaje del evento active correctamente la ejecución del trabajo.
Problemas de transformación
Si tus datos de eventos 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 de 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, en su lugar, se deberían 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 se incluyen en un campo de atributos independiente, como message.attributes.
Se debe acceder a cada atributo de un mensaje de CloudEvents entrante con el valor message.key, 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 y excluir 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.