Saiba como configurar o redirecionamento de uma fila de mensagens não entregues no Amazon SQS
Use o redirecionamento da fila de mensagens não entregues para mover mensagens não consumidas de uma fila de mensagens não entregues para outro destino para processamento. 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, o ID de eliminação de duplicação da mensagem original será substituído pelo 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 não entregues redirecionam as mensagens na ordem em que são recebidas, começando pela 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 enviar mensagens para uma fila FIFO de origem ao receber simultaneamente mensagens redirecionadas de uma fila de mensagens não entregues, as mensagens redirecionadas serão combinadas 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 um novo messageID e enqueueTime são atribuídos a mensagens redirecionadas.
Configurar o redirecionamento de uma fila de mensagens não entregues para uma fila padrão existente usando a API do Amazon SQS
É possível configurar o redirecionamento de uma fila de mensagens não entregues usando as ações de API StartMessageMoveTask, ListMessageMoveTasks e CancelMessageMoveTask:
| Ação da API | Descrição |
|---|---|
|
Inicia uma tarefa assíncrona para mover mensagens de uma fila de origem especificada a uma fila de destino especificada. |
|
|
Exibe as tarefas mais recentes de movimentação de mensagens (até dez) em uma fila de origem específica. |
|
|
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. |
Configurar o redirecionamento de uma fila de mensagens não entregues para uma fila padrão existente usando o console do Amazon SQS
Abra o console do Amazon SQS em https://console.aws.amazon.com/sqs/
. -
No painel de navegação, escolha Queues.
-
Escolha o nome da fila configurada como uma fila de mensagens não entregues.
-
Selecione Start DLQ redrive (Iniciar o redirecionamento DLQ).
-
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.
-
-
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.
-
-
-
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.
-
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 |
|---|---|
| Como iniciar um redirecionamento de mensagens |
|
| Como cancelar um redirecionamento de mensagem em andamento |
|
| Como exibir o status de movimentação de uma mensagem |
|
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 (DLQ):
-
Abra o console do IAM, em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Políticas.
-
Crie uma política e anexe as permissões a seguir. Anexe a política ao usuário ou perfil do IAM que executará a operação de recondução.
-
Permissões para a DLQ (fila de origem):
-
sqs:StartMessageMoveTask -
sqs:CancelMessageMoveTask -
sqs:ListMessageMoveTasks -
sqs:ReceiveMessage -
sqs:DeleteMessage -
sqs:GetQueueAttributes -
sqs:ListDeadLetterSourceQueues -
Especifique o ARN de recurso da DLQ (fila de origem) (por exemplo, "arn:aws:sqs:
<DLQ_region>:<DLQ_accountId>:<DLQ_name>").
-
-
Permissões para a fila de destino:
-
sqs:SendMessage -
Especifique o
Resource ARNda fila de destino (por exemplo, "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>").
-
-
Permissões para a chave do KMS:
-
kms:Decrypt(Necessário para descriptografar mensagens na DLQ.) -
kms:GenerateDataKey(Necessário para criptografar mensagens na fila de destino.)-
ARNs do
Resource:-
O ARN da chave do KMS usada para criptografar mensagens na DLQ (fila de origem) (por exemplo, "arn:aws:kms:
<region>:<accountId>:key/<SourceQueueKeyId>"). -
O ARN da chave do KMS usado para criptografar mensagens na fila de destino (por exemplo, "arn:aws:kms:
<region>:<accountId>:key/<DestinationQueueKeyId>").
-
-
-
A política de acesso deve ser semelhante a:
-
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 as permissões mínimas necessárias para gerenciar uma fila de mensagens não entregues (DLQ) padrão não criptografada. 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.
-
Abra o console do IAM, em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Políticas.
-
Crie uma política e anexe as permissões a seguir. Anexe a política ao usuário ou perfil do IAM que executará a operação de recondução.
-
Permissões para a DLQ (fila de origem):
-
sqs:StartMessageMoveTask -
sqs:CancelMessageMoveTask -
sqs:ListMessageMoveTasks -
sqs:ReceiveMessage -
sqs:DeleteMessage -
sqs:ListDeadLetterSourceQueues -
Especifique o ARN de recurso da DLQ (fila de origem) (por exemplo, "arn:aws:sqs:
<DLQ_region>:<DLQ_accountId>:<DLQ_name>").
-
-
Permissões para a fila de destino:
-
sqs:SendMessage -
Especifique o
Resource ARNda fila de destino (por exemplo, "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>").
-
A política de acesso deve ser semelhante a:
-
Como usar o redirecionamento da fila de mensagens não entregues com controle de acesso ao endpoint de VPC
Ao restringir o acesso de VPCs específicas à fila usando a condição aws:sourceVpc, você precisa criar uma exceção para os serviços AWS para habilitar a funcionalidade de redirecionamento da fila de mensagens não entregues (DLQ). Isso ocorre porque o serviço Amazon SQS opera fora da sua VPC ao mover mensagens.
Para permitir operações de redirecionamento da DLQ, adicione a condição aws:CalledViaLast à sua política de filas. Isso permite que o Amazon SQS faça chamadas de API em seu nome, mantendo restrições de VPC para acesso direto.
Para permitir o acesso restrito à VPC e o redirecionamento de DLQ:
-
Use a condição
aws:CalledViaLastem sua política de filas. -
Aplique a política à fila de origem e à DLQ
-
Mantenha as restrições da VPC para acesso direto de outras fontes
Veja um exemplo de política que implementa esses requisitos:
-
Substitua os valores dos espaços reservados por seus valores reais:
-
Esta política usa uma instrução “deny” com condições, o que é mais seguro do que usar instruções “allow”
-
O operador
StringNotEqualsIfExistsgerencia casos em que a chave de condição pode não estar presente no contexto da solicitação.
Como alternativa, você pode usar a chave de condição aws:ViaAWSService para permitir o acesso baseado em serviços e, ao mesmo tempo, manter as restrições da VPC. Essa chave de condição indica se a solicitação vem de um serviço AWS. Aqui está um exemplo de política que usa aws:ViaAWSService em vez de aws:CalledViaLast:
O operador BoolIfExists com a condição aws:ViaAWSService garante que as solicitações sejam permitidas quando vierem de serviços, mantendo as restrições de VPC para acesso direto. Isso pode ser mais simples de entender e manter, pois verifica diretamente se a solicitação foi feita por um serviço AWS em vez de verificar qual serviço fez a última chamada.
Para obter mais informações sobre chaves de condição usadas no IAM e nas políticas de recursos, consulte Elementos de política JSON do IAM: condição.