Saiba como configurar um redrive de fila de cartas mortas no Amazon SQS - Amazon Simple Queue Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Saiba como configurar um redrive de fila de cartas mortas no Amazon SQS

Você pode usar o redirecionamento de fila de mensagens mortas para mover mensagens não consumidas de uma fila de mensagens não consumidas existente. Por padrão, a redirecionamento da fila de mensagens mortas move as mensagens de uma fila de mensagens mortas para uma fila de origem. No entanto, também será possível configurar qualquer outra fila como o destino de redirecionamento se as filas forem do mesmo tipo. Por exemplo, se a fila de mensagens não entregues for uma fila FIFO, a fila de destino de redirecionamento também deverá ser uma fila FIFO. Além disso, você pode configurar a velocidade de redirecionamento para definir a taxa na qual o Amazon SQS move mensagens.

nota

Quando uma mensagem é movida de uma fila FIFO para uma DLQ FIFO, a ID de desduplicação da mensagem original será substituída pela ID da mensagem original. Isso acontece para garantir que a eliminação de duplicação da DLQ não impeça o armazenamento de duas mensagens independentes que, por acaso, compartilham o mesmo ID de eliminação de duplicação.

As filas de mensagens mortas redirecionam as mensagens na ordem em que são recebidas, começando pela mensagem mais antiga. No entanto, a fila de destino ingere as mensagens redirecionadas, bem como as novas mensagens de outros produtores, de acordo com a ordem em que as recebe. Por exemplo, se um produtor estiver enviando mensagens para uma fila FIFO de origem ao receber simultaneamente mensagens redirecionadas de uma fila de letras mortas, as mensagens redirecionadas se entrelaçarão com as novas mensagens do produtor.

nota

A tarefa de redirecionamento redefine o período de retenção. Todas as mensagens redirecionadas são consideradas novas mensagens com uma nova messageID e enqueueTime são atribuídas a mensagens redirecionadas.

Configurando um redrive de fila de correio morto para uma fila padrão existente usando a API do Amazon SQS

Você pode configurar um redrive de fila de mensagens mortas usando as açõesSendMessageBatch,ReceiveMessage, e da API: DeleteMessageBatch

Ação API Descrição

StartMessageMoveTask

Inicia uma tarefa assíncrona para mover mensagens de uma fila de origem especificada a uma fila de destino especificada.

ListMessageMoveTasks

Exibe as tarefas mais recentes de movimentação de mensagens (até dez) em uma fila de origem específica.

CancelMessageMoveTask

Cancela uma tarefa de movimentação de mensagens especificada. A movimentação de uma mensagem só pode ser cancelada quando o status atual é EM EXECUÇÃO.

Configurando um redrive de fila de correio morto para uma fila padrão existente usando o console do Amazon SQS

  1. Abra o console do Amazon SQS em https://console.aws.amazon.com/sqs/.

  2. No painel de navegação, escolha Queues.

  3. Escolha o nome da fila configurada como uma fila de mensagens não entregues.

  4. Selecione Start DLQ redrive (Iniciar o redirecionamento DLQ).

  5. Em Redrive configuration (Configurações de redirecionamento), em Message destination (Destino da mensagem), execute uma das seguintes ações:

    • Para redirecionar mensagens para a fila de origem, escolha Redrive to source queue(s) (Redirecionar para fila(s) de origem).

    • Para redirecionar mensagens para outra fila, escolha Redrive to custom destination (Redirecionar para um destino personalizado). Em seguida, insira o nome do recurso da Amazon (ARN) de uma fila de destino existente.

  6. Em Velocity control settings (Configurações de controle de velocidade), escolha uma das opções a seguir:

    • System optimized (Otimizado para o sistema) — Redirecione mensagens de fila de mensagens não entregues no número máximo de mensagens por segundo.

    • Custom max velocity (Velocidade máxima personalizada) — Redirecione mensagens de fila de mensagens não entregues com uma taxa máxima personalizada de mensagens por segundo. A taxa máxima permitida é de 500 mensagens por segundo.

      • É recomendável começar com um valor pequeno para a velocidade máxima personalizada e verificar se a fila de origem não está sobrecarregada com mensagens. A partir daí, aumente gradualmente o valor de velocidade máxima personalizada, continuando a monitorar o estado da fila de origem.

  7. Quando você terminar de configurar o redirecionamento da fila de mensagens não entregues, escolha Save (Salvar).

    Importante

    O Amazon SQS não oferece suporte à filtragem e modificação de mensagens enquanto as redireciona da fila de mensagens não entregues.

    Uma tarefa de redirecionamento de fila de mensagens não entregues pode ser executada no máximo 36 horas. O Amazon SQS oferece suporte a um máximo de 100 tarefas de redirecionamento ativo por conta.

  8. Se você quiser cancelar a tarefa de redirecionamento de mensagens, na página Details (Detalhes) da sua fila, escolha Cancel DLQ redrive (Cancelar redirecionamento DLQ). Ao cancelar uma redirecionamento de mensagem em andamento, todas as mensagens que já tenham sido movidas com sucesso para a fila de destino de movimentação permanecerão na fila de destino.

Configurar permissões de fila para o redirecionamento da fila de mensagens não entregues

Você pode conceder ao usuário acesso a ações específicas da fila de mensagens não entregues adicionando permissões à política. As permissões mínimas necessárias para uma fila de mensagens não entregues são as seguintes:

Permissões mínimas Métodos de API necessários
Para iniciar um redirecionamento de mensagens
  • Adicione sqs:StartMessageMoveTasksqs:ReceiveMessagesqs:DeleteMessage e sqs:GetQueueAttributes da fila de mensagens não entregues. Se a fila de mensagens não entregues ou a fila de origem forem criptografadas (também conhecida como fila SSE), também será necessário kms:Decrypt para qualquer chave do KMS usada para criptografar as mensagens.

  • Adicione o sqs:SendMessage da fila de destino. Se a fila de destino estiver criptografada, também será necessário adicionar kms:GenerateDataKey e kms:Decrypt.

Para cancelar um redirecionamento de mensagem em andamento
  • Adicione sqs:CancelMessageMoveTasksqs:ReceiveMessagesqs:DeleteMessage e sqs:GetQueueAttributes da fila de mensagens não entregues. Se a fila de mensagens não entregues estiver criptografada (também conhecida como fila SSE), também será necessário adicionar kms:Decrypt.

Para exibir o status de movimentação de uma mensagem
  • Adicione sqs:ListMessageMoveTasks e sqs:GetQueueAttributes da fila de mensagens não entregues.

Para configurar permissões a um par de filas criptografadas (uma fila de origem com uma fila de mensagens não entregues)

Siga as etapas abaixo para configurar permissões mínimas de redirecionamento de fila de mensagens não entregues:

  1. Faça login AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Policies.

  3. Crie uma política com as seguintes permissões e anexe-a ao usuário ou à função de login do IAM:

    • sqs:StartMessageMoveTask

    • sqs:CancelMessageMoveTask

    • sqs:ListMessageMoveTasks

    • sqs:ListDeadLetterSourceQueues

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • O ARN de Resource da fila de mensagens não entregues (por exemplo, “arn:aws:sqs:<região_da_fila>:<ID_da_conta_da_fila>:<nome_da_fila>”).

    • sqs:SendMessage

    • O Resource ARN da fila de destino (por exemplo, “arn:aws:sqs: < _region>: < _accountId>: < DestQueue _name> “). DestQueue DestQueue

    • kms:Decrypt: permite a ação de descriptografia.

    • kms:GenerateDataKey

    • Os ARNs de Resource de qualquer chave de criptografia do KMS usada para criptografar as mensagens na fila de origem (por exemplo, “arn:aws:kms:<region>:<accountId>:key/<keyId_usada para criptografar o corpo da mensagem>”).

    • O ARN da chave de criptografia do KMS usada para a fila de destino de redirecionamento (por exemplo, “arn:aws:kms:<region>:<accountId>:key/<keyId_usada para a fila de destino>”).

    A política de acesso deve ser semelhante a:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:CancelMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ListDeadLetterSourceQueues" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:<region>:<accountId>:key/<keyId>" } ] }
Para configurar permissões a um par de filas não criptografadas (uma fila de origem com uma fila de mensagens não entregues)

Siga as etapas abaixo para configurar permissões mínimas para uma fila de mensagens não entregues padrão não criptografadas. As permissões mínimas necessárias são para receber, excluir e obter atributos da fila de mensagens não entregues e enviar atributos para a fila de origem.

  1. Faça login AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Policies.

  3. Crie uma política com as seguintes permissões e anexe-a ao usuário ou à função de login do IAM:

    • sqs:StartMessageMoveTask

    • sqs:CancelMessageMoveTask

    • sqs:ListMessageMoveTasks

    • sqs:ListDeadLetterSourceQueues

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • O ARN de Resource da fila de mensagens não entregues (por exemplo, “arn:aws:sqs:<região_da_fila>:<ID_da_conta_da_fila>:<nome_da_fila>”).

    • sqs:SendMessage

    • O Resource ARN da fila de destino (por exemplo, “arn:aws:sqs: < _region>: < _accountId>: < DestQueue _name> “). DestQueue DestQueue

    A política de acesso deve ser semelhante a:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:CancelMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ListDeadLetterSourceQueues" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" } ] }