Obtener información sobre cómo configurar un redireccionamiento de cola de mensajes fallidos en Amazon SQS
Utilice el redireccionamiento de la cola de mensajes fallidos para mover los mensajes no consumidos de una cola de mensajes fallidos a otro destino para su procesamiento. De forma predeterminada, el redireccionamiento de cola de mensajes fallidos mueve los mensajes de una cola de mensajes fallidos a una cola de origen. No obstante, también puede configurar cualquier otra cola estándar como destino de redireccionamiento si las colas son del mismo tipo. Por ejemplo, si la cola de mensajes fallidos es una cola FIFO, la cola de destino de redireccionamiento también debe ser una cola FIFO. Además, puede configurar la velocidad de redireccionamiento para establecer a qué velocidad Amazon SQS mueve los mensajes.
nota
Cuando un mensaje pasa de una cola FIFO a una DLQ FIFO, el ID de desduplicación del mensaje original se reemplazará por el ID del mensaje original. Esto es para asegurarse de que la desduplicación de DLQ no impedirá el almacenamiento de dos mensajes independientes que casualmente comparten un ID de desduplicación.
Las colas de mensajes fallidos redirigen los mensajes en el orden en que se reciben, empezando por el mensaje más antiguo. Sin embargo, la cola de destino ingiere los mensajes redirigidos, así como los mensajes nuevos de otros productores, según el orden en que los recibe. Por ejemplo, si un productor envía mensajes a una cola FIFO de origen cuando de forma simultánea recibe mensajes redirigidos de una cola de mensajes fallidos, los mensajes redirigidos se entrelazarán con los nuevos mensajes del productor.
nota
La tarea de redireccionamiento restablece el periodo de retención. Todos los mensajes redirigidos se consideran mensajes nuevos con un messageID y un enqueueTime nuevos y se asignan a mensajes redirigidos.
Configuración de un redireccionamiento de cola de mensajes fallidos para una cola estándar existente mediante la API de Amazon SQS
Puede configurar un redireccionamiento cola de mensajes fallidos con las acciones de la API StartMessageMoveTask, ListMessageMoveTasks y CancelMessageMoveTask:
| Acción de la API | Descripción |
|---|---|
|
Inicia una tarea asincrónica para mover mensajes de una cola de origen especificada a una cola de destino especificada. |
|
|
Obtiene las tareas de movimiento de mensajes más recientes (hasta diez) en una cola de origen específica. |
|
|
Cancela una tarea de movimiento de mensajes especificada. Un movimiento de mensajes solo puede cancelarse cuando el estado actual es EN EJECUCIÓN. |
Configuración de un redireccionamiento de cola de mensajes fallidos para una cola estándar mediante la consola de Amazon SQS
Abra la consola de Amazon SQS en https://console.aws.amazon.com/sqs/
. -
En el panel de navegación, elija Colas.
-
Elija el nombre de la cola que haya configurado como una cola de mensajes fallidos.
-
Seleccione Iniciar el redireccionamiento de la DLQ.
-
En Redireccionar configuración, para Destino del mensaje, realice una de las siguientes acciones:
-
Para redireccionar mensajes a su cola de origen, seleccione Redireccionar a las colas de origen.
-
Para redireccionar mensajes a otra cola, elija Redireccionar a un destino personalizado. A continuación, escriba el nombre de recurso de Amazon (ARN) de una cola de destino existente.
-
-
En Configuración de control de velocidad, elija una de las siguientes opciones:
-
Sistema optimizado: redireccionar la cola de mensajes fallidos al número máximo de mensajes por segundo.
-
Velocidad máxima personalizada: redireccionar mensajes de la cola de mensajes fallidos con una velocidad máxima personalizada de mensajes por segundo. La velocidad máxima permitida es de 500 mensajes por segundo.
-
Se recomienda empezar con un valor pequeño para la velocidad máxima personalizada y comprobar que la cola de origen no se satura de mensajes. A partir de ahí, aumente gradualmente el valor de la velocidad máxima personalizada, sin dejar de monitorear el estado de la cola de origen.
-
-
-
Cuando termine de configurar el redireccionamiento de la cola de mensajes fallidos, elija Redireccionar mensajes.
importante
Amazon SQS no admite el filtrado y la modificación de mensajes mientras los redirecciona desde la cola de mensajes fallidos.
Una tarea de redireccionamiento de cola de mensajes fallidos puede ejecutarse un máximo de 36 horas. Amazon SQS admite un máximo de 100 tareas de redireccionamiento activas por cuenta.
-
Si desea cancelar la tarea de redireccionamiento de mensajes, en la página Detalles de la cola, elija Cancelar redireccionamiento de DLQ. Al cancelar un redireccionamiento de mensajes en curso, los mensajes que ya se hayan movido correctamente a su cola de destino de movimiento permanecerán en ella.
Configuración de los permisos del redireccionamiento de cola de mensajes fallidos
Puede conceder al usuario acceso a acciones específicas de la cola de mensajes fallidos si agrega permisos a la política. Los permisos mínimos necesarios para un redireccionamiento de cola de mensajes fallidos son los siguientes:
| Permisos mínimos | Métodos de API necesarios |
|---|---|
| Inicio de un redireccionamiento de mensajes |
|
| Cancelación de un redireccionamiento de mensajes en curso |
|
| Visualización del estado de movimiento de mensajes |
|
Configuración de los permisos de un par de colas cifradas (una cola de origen con una cola de mensajes fallidos)
Siga estos pasos para configurar los permisos mínimos de un redireccionamiento de cola de mensajes fallidos (DLQ):
-
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, seleccione Policies (Políticas).
-
Cree una nueva política y agregue los siguientes permisos. Asocie la política al usuario o rol de IAM que realizará la operación de redireccionamiento.
-
Permisos para la DLQ (cola de origen):
-
sqs:StartMessageMoveTask -
sqs:CancelMessageMoveTask -
sqs:ListMessageMoveTasks -
sqs:ReceiveMessage -
sqs:DeleteMessage -
sqs:GetQueueAttributes -
sqs:ListDeadLetterSourceQueues -
Especifique el ARN de recurso de la DLQ (cola de origen) (por ejemplo, “arn:aws:sqs:
<DLQ_region>:<DLQ_accountId>:<DLQ_name>”).
-
-
Permisos para la cola de destino:
-
sqs:SendMessage -
Especifique el
Resource ARNde la cola de destino (for example, “arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>”).
-
-
Permisos para claves de KMS:
-
kms:Decrypt(necesario para descifrar mensajes de la DLQ). -
kms:GenerateDataKey(necesario para cifrar mensajes de la cola de destino).-
ARN de
Resource:-
El ARN de la clave de KMS utilizada para cifrar mensajes de la DLQ (cola de origen) (por ejemplo, “arn:aws:kms:
<region>:<accountId>:key/<SourceQueueKeyId>”). -
El ARN de la clave de KMS utilizada para cifrar mensajes de la cola de destino (por ejemplo, “arn:aws:kms:
<region>:<accountId>:key/<DestinationQueueKeyId>”).
-
-
-
Su política de acceso debe ser similar a la siguiente:
-
Configuración de los permisos mediante un par de colas no cifradas (una cola de origen con una cola de mensajes fallidos)
Siga estos pasos para configurar los permisos mínimos necesarios para gestionar una cola de mensajes fallidos (DLQ) estándar y no cifrada. Los permisos mínimos necesarios son para recibir, eliminar y obtener atributos de la cola de mensajes fallidos, y enviar atributos a la cola de origen.
-
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, seleccione Policies (Políticas).
-
Cree una nueva política y agregue los siguientes permisos. Asocie la política al usuario o rol de IAM que realizará la operación de redireccionamiento.
-
Permisos para la DLQ (cola de origen):
-
sqs:StartMessageMoveTask -
sqs:CancelMessageMoveTask -
sqs:ListMessageMoveTasks -
sqs:ReceiveMessage -
sqs:DeleteMessage -
sqs:ListDeadLetterSourceQueues -
Especifique el ARN de recurso de la DLQ (cola de origen) (por ejemplo, “arn:aws:sqs:
<DLQ_region>:<DLQ_accountId>:<DLQ_name>”).
-
-
Permisos para la cola de destino:
-
sqs:SendMessage -
Especifique el
Resource ARNde la cola de destino (for example, “arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>”).
-
Su política de acceso debe ser similar a la siguiente:
-
Uso del redireccionamiento de cola de mensajes fallidos con control de acceso a puntos de conexión de VPC
Cuando restringe el acceso a las colas a VPC específicas mediante la condición aws:sourceVpc, debe hacer una excepción en el caso de los servicios de AWS a fin de habilitar la funcionalidad de redireccionamiento de cola de mensajes fallidos (DLQ). Esto se debe a que el servicio de Amazon SQS opera fuera de su VPC al mover los mensajes.
Para permitir las operaciones de redireccionamiento de DLQ, agregue la condición aws:CalledViaLast a su política de cola. De este modo, Amazon SQS puede realizar llamadas a la API en su nombre y, al mismo tiempo, mantener las restricciones de VPC para el acceso directo.
Para permitir tanto el acceso restringido por VPC como el redireccionamiento de DLQ:
-
Use la condición
aws:CalledViaLasten su política de cola. -
Aplique la política tanto a la cola de origen como a la DLQ.
-
Mantenga las restricciones de VPC para el acceso directo desde otras fuentes.
A continuación, se muestra un ejemplo de política que implementa estos requisitos:
-
Sustituya los valores de marcador de posición por los valores reales.
-
Esta política usa una instrucción “deny” con condiciones, lo que resulta más seguro que usar instrucciones “allow”.
-
El operador
StringNotEqualsIfExistsgestiona los casos en los que la clave de condición podría no estar presente en el contexto de la solicitud.
Como alternativa, puede usar la clave de condición aws:ViaAWSService para permitir el acceso basado en el servicio y, al mismo tiempo, mantener las restricciones de VPC. Esta clave de condición indica si la solicitud proviene de un servicio de AWS. A continuación, se muestra un ejemplo de política que utiliza aws:ViaAWSService en lugar de aws:CalledViaLast:
El operador BoolIfExists con la condición aws:ViaAWSService garantiza que se permitan las solicitudes cuando provienen de servicios y, al mismo tiempo, mantiene las restricciones de VPC para el acceso directo. Esto puede ser más sencillo de entender y mantener, ya que comprueba directamente si la solicitud la realiza un servicio de AWS en lugar de comprobar qué servicio realizó la última llamada.
Para obtener más información sobre las claves de condición utilizadas en las políticas de IAM y de recursos, consulte Elementos de la política de JSON de IAM: condición.