View a markdown version of this page

Utilizar colas de correo no entregado 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.

Utilizar colas de correo no entregado para procesar los eventos no entregados en EventBridge

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

EventBridge Las DLQ son colas estándar de Amazon SQS que se EventBridge utilizan para almacenar eventos que no se han podido enviar correctamente a un destino. Al crear una regla y añadir un destino, puede elegir si desea utilizar o no una DLQ. Al configurar una DLQ, puede retener 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.

Al configurar una DLQ para el destino de una regla, EventBridge envía los eventos con invocaciones fallidas a la cola de Amazon SQS seleccionada.

Los errores de eventos se gestionan de distintas formas. Algunos eventos se descartan o se envían a una DLQ sin volver a intentar la entrega. Por ejemplo, en el caso de errores que se deben a la falta de permisos en un destino, a un recurso de destino que ya no existe o a un objetivo que no se puede encontrar debido a una dirección no válida o a un error de búsqueda en el DNS, no se realizará ningún intento de reintento hasta que se tomen medidas para resolver el problema subyacente. EventBridge envía estos eventos directamente al DLQ de destino, si ha especificado uno.

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 un objetivo invocation ha fallado. Si utilizas una DLQ, se envían métricas adicionales a CloudWatch Including InvocationsSentToDLQ Y. InvocationsFailedToBeSentToDLQ

También puede especificar los DLQ para los buses de eventos, si los usa AWS KMS claves administradas por el cliente para cifrar 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 mensaje de la DLQ incluirá los siguientes atributos personalizados:

  • RULE_ARN

  • TARGET_ARN

  • ERROR_CODE

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

    • ACTION_DECRYPTION_FAILURE

    • CONNECTION_FAILURE

    • CROSS_ACCOUNT_INGESTION_FAILED

    • CROSS_REGION_INGESTION_FAILED

    • ERROR_FROM_TARGET

    • EVENT_DECRYPTION_FAILURE

    • EVENT_ENCRYPTION_FAILURE

    • 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

    • RULE_DECRYPTION_FAILURE

    • 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

En el siguiente vídeo se describe la configuración de los DLQ:

Consideraciones sobre el uso de una cola de mensajes fallidos

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

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

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

  • Permisos para DLQ de la misma cuenta:

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

    • Si utiliza la PutTargets operación de la EventBridge API para añadir o actualizar el objetivo de una regla y elige una cola de Amazon SQS en la misma cuenta, debe conceder los 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 las colas de Amazon SQS desde una cuenta diferente. AWS

    • Si crea una regla desde la consola, las colas de otras cuentas no se muestran para que las seleccione. Debe proporcionar el ARN de la cola de la otra cuenta y, a continuación, adjuntar manualmente una política basada en recursos para conceder permisos 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 la API, debe adjuntar manualmente una política basada en recursos a las colas de SQS de otra cuenta que se utilice como cola de mensajes fallidos. Para obtener más información, consulte Concesión de permisos a la cola de mensajes fallidos.

  • La cola de Amazon SQS que utilice debe estar en la región en la que creó la regla.

Concesión de permisos a la cola de mensajes fallidos

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

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

Ejemplo de permisos para colas de mensajes fallidos de destino

La siguiente política basada en recursos muestra cómo conceder los permisos necesarios para enviar mensajes de eventos EventBridge a una cola de Amazon SQS. El ejemplo de política otorga al EventBridge servicio permisos para usar la SendMessage operación para enviar mensajes a una cola denominada "DLQ». MyEvent La cola debe estar en la región us-west-2 en la cuenta 123456789012. AWS La Condition instrucción solo admite 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 para colas de mensajes fallidos de buses de eventos

La siguiente política basada en recursos muestra cómo conceder los permisos necesarios al especificar una DLQ para un bus de eventos. En este caso, aws:SourceArn especifica el ARN del bus de eventos que envía los eventos a la DLQ. De nuevo 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, utilice la consola de Amazon SQS, abra la cola y, a continuación, seleccione la política de acceso y edítela. También puede utilizar la AWS CLI. Para obtener más información, consulte Permisos de Amazon SQS.

Cómo reenviar eventos desde una cola de mensajes fallidos

Los mensajes se pueden sacar de una DLQ de dos formas:

  • Evitar escribir lógica de consumo de Amazon SQS: establezca la DLQ como una fuente de eventos en la función de Lambda para drenar dicha cola.

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