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:
Temas
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:
Al configurar un DLQ para el objetivo de una regla.
Cuando configura un DLQ para un bus de eventos en el que lo ha especificado, EventBridge utilice un AWS KMS clave administrada por el cliente 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.
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.