Como solucionar problemas do QueueDoesNotExist ao fazer chamadas de API para a minha fila do Amazon SQS?

Data da última atualização: 24/08/2021

Quando faço chamadas de API para minha fila do Amazon Simple Queue Service (Amazon SQS), recebo um erro QueueDoesNotExist semelhante ao seguinte:

“A fila especificada não existe para esta versão wsdl.”

Por que estou recebendo o erro e como posso solucionar o problema?

Resolução

Os erros QueueDoesNotExist podem resultar a partir de várias chamadas de API do Amazon SQS, incluindo GetQueueAttributes, SendMessage e DeleteMessage. Para solucionar o erro, revise as seguintes causas possíveis e as etapas de resolução:

URL da fila incorreto

Verifique se o URL da fila fornecido na solicitação está correto e não contém erros de digitação.

Importante: se o tipo de fila de destino for FIFO, você deverá anexar o sufixo .fifo ao URL da fila.

Região incorreta

Uma exceção QueueDoesNotExist retorna quando a solicitação é feita para a região da AWS incorreta. O kit de desenvolvimento de software (SDK) e a AWS Command Line Interface (AWS CLI) não selecionam a região de destino do URL da fila. Em vez disso, a região é determinada pela configuração do cliente.

Você deve configurar corretamente a região no cliente do Amazon SQS antes de fazer uma chamada de API. Revise a configuração do cliente do Amazon SQS para confirmar se a região correta está configurada no cliente. Se uma Região não estiver configurada no cliente, o SDK ou a AWS CLI escolherá a região no arquivo de configuração ou na variável de ambiente. Se uma região não for encontrada no arquivo de configuração, o SDK definirá a Região como us-east-1 por padrão.

Se a chamada de API com falha for compatível com o AWS CloudTrail, verifique todas as regiões na conta do cliente quanto à falha na operação do Amazon SQS. A verificação de todas as regiões pode ajudar a determinar se a região é a causa do problema.

Você também pode verificar a região da solicitação ativando o log de depuração no SDK ou na AWS CLI. Os logs de depuração mostram o host de destino da solicitação.

Exemplo: host: sqs.us-east-1.amazonaws.com

Fila recentemente eliminada ou excluída

Você pode receber temporariamente um erro QueueDoesNotExist se a fila tiver sido removida recentemente. Identifique o carimbo de data/hora da chamada de API com falha e, em seguida, verifique o CloudTrail quanto a qualquer operação de PurgeQueue na hora do erro.

O erro também pode ocorrer quando a fila for excluída se a fila fizer parte de uma pilha de implantação do AWS CloudFormation ou similar. Atualizações ou exclusão de uma pilha podem fazer com que a fila seja excluída e recriada. Se a chamada de API for feita para a fila durante a exclusão, a solicitação poderá falhar com um erro QueueDoesNotExist. Verifique o CloudTrail para ver se há operações DeleteQueue durante a hora do erro.

GetQueueUrl de conta cruzada

Para chamadas de API, o SDK ou a AWS CLI geralmente usam o número da conta da fila de destino do URL da fila. No entanto, a chamada de API GetQueueUrl não fornece uma conta da AWS da fila na solicitação. Isso significa que, por padrão, a solicitação é feita na conta do autor da chamada. Se a solicitação for destinada a uma fila de contas cruzadas, você deverá especificar o número da conta da fila de destino como o parâmetro QueueOwnerAWSAccountId da chamada de API.

Mensagem movida para uma fila de letras mortas

Para filas SQS padrão, quando uma fila de letras mortas (DLQ) é configurada, as mensagens são movidas para a DLQ após novas tentativas. Os erros QueueDoesNotExist podem ocorrer se você executar uma operação DeleteMessage usando um ReceiptHandle antigo da fila principal depois que a mensagem for movida para a DLQ. Você deve excluir mensagens na janela VisibilityTimeout configurada.

Solução de problemas adicionais

Se você entrar em contato com o AWS Support para solucionar problemas adicionais, identifique o RequestId e o carimbo de data/hora das chamadas de API com falha.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?