Utilice colas de texto sin formato para procesar los eventos no entregados en EventBridge - Amazon EventBridge

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice colas de texto sin formato para procesar los eventos no entregados en EventBridge

Para evitar perder los eventos que no se hayan entregado a un destino, puede configurar una cola de mensajes sin procesar (DLQ) y enviarle todos los eventos fallidos para que los procese más adelante.

EventBridge DLQsson SQS colas estándar de Amazon que se EventBridge utilizan para almacenar eventos que no se pudieron entregar correctamente a un objetivo. Cuando creas una regla y añades un objetivo, puedes elegir si quieres usar o no unDLQ. Al configurar unDLQ, puede conservar los eventos que no se hayan entregado correctamente. A continuación, puede resolver el problema que provocó el error en la entrega del evento y procesar los eventos más tarde.

Cuando configuras un objetivo DLQ de una regla, EventBridge envía los eventos con invocaciones fallidas a la SQS cola de Amazon seleccionada.

Los errores de eventos se gestionan de distintas formas. Algunos eventos se descartan o se envían a un DLQ sin volver a intentarlo. Por ejemplo, en el caso de los errores derivados de la falta de permisos para acceder a un destino, o si un recurso de destino ya no existe, no se volverá a intentar hasta que se tomen medidas para resolver el problema subyacente. EventBridge envía estos eventos directamente al objetivoDLQ, si ha especificado alguno.

Cuando se produce un error en la entrega de un evento, EventBridge publica un evento en CloudWatch las métricas de Amazon que indican que se ha producido un invocation error en un objetivo. Si utilizas unDLQ, se envían métricas adicionales a CloudWatch, incluyendo InvocationsSentToDLQ yInvocationsFailedToBeSentToDLQ.

También puedes especificarlos DLQs para los buses de eventos, si AWS KMS claves administradas por el cliente los usas para cifrar los eventos en reposo. Para obtener más información, consulte Uso de colas con letra muerta para capturar los errores de eventos cifrados en EventBridge.

Cada uno de tus mensajes DLQ incluirá los siguientes atributos personalizados:

  • RULE_ARN

  • TARGET_ARN

  • ERROR_CODE

    El siguiente es un ejemplo de los códigos de error que DLQ puede devolver:

    • CONNECTION_FAILURE

    • CROSS_ACCOUNT_INGESTION_FAILED

    • CROSS_REGION_INGESTION_FAILED

    • ERROR_FROM_TARGET

    • EVENTS_IN_BATCH_REQUEST_REJECTED

    • EVENTS_IN_BATCH_REQUEST_REJECTED

    • FAILED_TO_ASSUME_ROLE

    • INTERNAL_ERROR

    • INVALID_JSON

    • INVALID_PARAMETER

    • NO_PERMISSIONS

    • NO_RESOURCE

    • RESOURCE_ALREADY_EXISTS

    • RESOURCE_LIMIT_EXCEEDED

    • RESOURCE_MODIFICATION_COLLISION

    • SDK_CLIENT_ERROR

    • THIRD_ACCOUNT_HOP_DETECTED

    • THIRD_REGION_HOP_DETECTED

    • THROTTLING

    • TIMEOUT

    • TRANSIENT_ASSUME_ROLE

    • UNKNOWN

  • ERROR_MESSAGE

  • EXHAUSTED_RETRY_CONDITION

    Se puede devolver las siguientes condiciones:

    • MaximumRetryAttempts

    • MaximumEventAgeInSeconds

  • RETRY_ATTEMPTS

El siguiente vídeo repasa la configuraciónDLQs:

Consideraciones sobre el uso de una cola de mensajes fallidos

Tenga en cuenta lo siguiente al configurar un DLQ formulario EventBridge.

  • Solo se admiten colas estándar. No puedes usar una FIFO cola para DLQ entrar EventBridge.

  • EventBridge incluye los metadatos del evento y los atributos del mensaje en el mensaje, como el código de error, el mensaje de error, la condición de reintento agotada, la reglaARN, los intentos de reintento y el objetivo. ARN Puede usar estos valores para identificar un evento y la causa del error.

  • Permisos para DLQs la misma cuenta:

    • Si añades un objetivo a una regla mediante la consola y eliges una SQS cola de Amazon en la misma cuenta, se adjuntará a la cola una política basada en recursos que concede EventBridge acceso a la cola.

    • Si utilizas la PutTargets operación de EventBridge API para añadir o actualizar un objetivo para una regla y eliges una SQS cola de Amazon en la misma cuenta, debes conceder permisos manualmente a la cola seleccionada. Para obtener más información, consulte Concesión de permisos a la cola de mensajes fallidos.

  • Permisos para usar SQS las colas de Amazon desde una AWS cuenta diferente.

    • Si crea una regla desde la consola, las colas de otras cuentas no se muestran para que las seleccione. Debes proporcionar los datos de la ARN cola en la otra cuenta y, a continuación, adjuntar manualmente una política basada en los recursos para conceder el permiso a la cola. Para obtener más información, consulte Concesión de permisos a la cola de mensajes fallidos.

    • Si crea una regla mediante laAPI, debe adjuntar manualmente una política basada en recursos a las SQS colas de otra cuenta que se utilice como cola de letra muerta. Para obtener más información, consulte Concesión de permisos a la cola de mensajes fallidos.

  • La SQS cola de Amazon que utilices debe estar en la misma región en la que creaste la regla.

Concesión de permisos a la cola de mensajes fallidos

Para entregar correctamente los eventos a la cola, EventBridge debe tener permiso para hacerlo. Al especificar un DLQ uso de la EventBridge consola, los permisos se añaden automáticamente. Esto incluye:

Si especifica DLQ utilizar una cola o utiliza una que se encuentra en una AWS cuenta diferente, debe crear manualmente una política basada en recursos que conceda los permisos necesarios y, a continuación, adjuntarla a la cola. API

Ejemplo de permisos de cola con letra muerta de Target

La siguiente política basada en recursos demuestra cómo conceder los permisos necesarios para enviar mensajes de eventos EventBridge a una cola de AmazonSQS. El ejemplo de política otorga al EventBridge servicio permisos para usar la SendMessage operación para enviar mensajes a una cola llamada "». MyEvent DLQ La cola debe estar en la región us-west-2 en la cuenta 123456789012. AWS El Condition estado de cuenta solo permite solicitudes que provengan de una regla denominada «MyTestRule» que se haya creado en la región us-west-2 en la cuenta 123456789012. AWS

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:123456789012:MyEventDLQ", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:us-west-2:123456789012:rule/MyTestRule" } } }

Ejemplo de permisos de cola con letra muerta para el bus de eventos

La siguiente política basada en recursos demuestra cómo conceder los permisos necesarios al especificar un bus para un DLQ evento. En este caso, aws:SourceArn especifica el bus ARN de eventos que envía los eventos al. DLQ También en este ejemplo, la cola debe estar en la misma región que el bus de eventos.

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:region:account-id:queue-name", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:event-bus/event-bus-arn" } } }

Para adjuntar la política a la cola, usa la SQS consola de Amazon, abre la cola, selecciona la política de acceso y edita la política. También puede utilizar la AWS CLI. Para obtener más información, consulte SQSPermisos de Amazon.

Cómo reenviar eventos desde una cola de mensajes fallidos

Puedes sacar los mensajes de un sitio a de dos DLQ maneras:

  • Evite escribir la lógica de SQS consumo de Amazon: DLQ configúrelo como fuente de eventos para la función Lambda para agotar su. DLQ

  • Escriba la lógica de SQS consumo de Amazon: utilice Amazon SQS API AWS SDK,, o AWS CLI para escribir una lógica de consumidor personalizada para sondear, procesar y eliminar los mensajes delDLQ.