Saltar al contenido

¿Por qué mi cola de Amazon SQS no recibe notificaciones de EventBridge?

4 minutos de lectura
0

He configurado una regla de Amazon EventBridge para enviar notificaciones a mi cola de Amazon Simple Queue Service (Amazon SQS). Sin embargo, mi cola de SQS no ha recibido las notificaciones de eventos.

Resolución

Comprobación de las métricas de las reglas de EventBridge para ver si hay errores de invocación

Comprueba la consola de Amazon CloudWatch para ver las métricas TriggeredRules, Invocations y FailedInvocations de EventBridge.

Si no hay datos de TriggeredRules, significa que la regla EventBridge no se ha ejecutado. Para resolver este problema, comprueba la configuración de origen para asegurarte de que la has configurado para enviar eventos. Además, asegúrate de que la configuración de origen coincida con el patrón de eventos de la regla. Para obtener más información, consulta ¿Cómo puedo solucionar los problemas relacionados con las reglas de EventBridge?

Si ves datos de Invocations y ** FailedInvocations**, significa que la invocación ha fallado. Esto suele ocurrir porque faltan los permisos de AWS Identity and Access Management (IAM). Para solucionar este problema, pasa a la siguiente sección.

Nota: Para comprobar si tu cola recibe notificaciones, comprueba la métrica NumberOfMessagesSent.

Confirma que EventBridge tiene los permisos necesarios para enviar mensajes a tu cola

La política basada en los recursos de tu cola debe permitir a EventBridge enviar mensajes a la cola. Asegúrate de introducir events.amazonaws.com como el servicio y sqs:SendMessage como la acción.

Asegúrate de que el rol de ejecución tenga los permisos necesarios

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de AWS CLI.

Si usas un rol de ejecución, asegúrate de que el rol tenga permiso para invocar la cola. Si has usado la consola de EventBridge para crear el rol, la consola añade automáticamente los permisos necesarios al rol de IAM adjunto a la regla. Si has usado AWS CLI, un AWS SDK o AWS CloudFormation para crear una regla, debes agregar manualmente los permisos del rol.

Para comprobar los permisos del rol, sigue estos pasos:

  1. Abre la consola de EventBridge.
  2. Selecciona Reglas y, a continuación, elige la regla de EventBridge.
  3. Selecciona la pestaña Destino y, a continuación, selecciona el rol de IAM para la regla.
  4. En Permisos, revisa la política y la relación de confianza.
    Ejemplo de política que permite al rol invocar la cola:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "sqs:SendMessage"
                ],
                "Resource": [
                    "arn:aws:sqs:region:account-id:queue-name"
                ]
            }
        ]
    }
    Ejemplo de relación de confianza que permite al rol invocar la cola:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "TrustEventBridgeService",
                "Effect": "Allow",
                "Principal": {
                    "Service": "events.amazonaws.com"
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "aws:SourceAccount": "account-id",
                        "aws:SourceArn": "arn:aws:events:region:account-id:rule/bus-name/rule-name"
                    }
                }
            }
        ]
    }
    Nota: Sustituyearn:aws:sqs:region:account-id:queue-name por el nombre de recurso de Amazon (ARN) de la cola, account-id por el ID de tu cuenta de AWS y arn:aws:events:region:account-id:rule/bus-name/rule-name por el ARN de tu regla.

También puedes usar la API GetRole para comprobar la política de IAM. Alternativamente, ejecuta el siguiente comando get-role de AWS CLI:

aws iam get-role \
          --role-name Test-SQS-Role

Nota: Sustituye Test-SQS-Role por el nombre de tu rol.

Si al rol de IAM le faltan permisos, actualiza la política de confianza o la política de permisos del rol.

Confirmación de que la cola cifrada tiene los permisos de AWS KMS necesarios

Si la cola está cifrada, debes crear una clave de AWS Key Management Service (AWS KMS) administrada por el cliente. A continuación, utiliza la clave personalizada para configurar el cifrado en el servidor (SSE).