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:
|
| Se excedió la cuota | Quota exceeded for limit |
Se alcanzó el límite de cuota para las solicitudes de Cloud KMS. Solución:
|
| 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.
|
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:
|
| Se excedió 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 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:
- En la Google Cloud consola de, 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, 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.