Come posso risolvere gli errori QueueDoesNotExist quando effettuo chiamate API alla mia coda Amazon SQS?

Ultimo aggiornamento: 24/08/2021

Quando si effettuano chiamate API alla coda Amazon Simple Queue Service (Amazon SQS), viene visualizzato un errore QueueDoesNotExist simile al seguente:

“La coda specificata non esiste per questa versione di wsdl.”

Perché ricevo questo errore e come posso risolvere il problema?

Risoluzione

Gli errori QueueDoesNotExist possono derivare da varie chiamate API Amazon SQS, tra cui GetQueueAttributes, SendMessage e DeleteMessage. Per risolvere questo errore, controlla le possibili cause e i passaggi di risoluzione seguenti:

Coda URL errata

Verifica che la coda URL fornita nella richiesta sia corretta e non contenga errori di battitura.

Importante: se il tipo di coda di destinazione è FIFO, è necessario aggiungere il suffisso.fifo alla coda URL.

Regione errata

Viene restituita un'eccezione QueueDoesNotExist quando la richiesta viene effettuata nella Regione AWS errata. Il Software Development Kit (SDK) e la AWS Command Line Interface (AWS CLI) non raccolgono la Regione di destinazione dalla coda URL. Al contrario, la regione è determinata dalla configurazione del client.

È necessario configurare correttamente la Regione sul client Amazon SQS prima di effettuare una chiamata API. Esamina la configurazione del client Amazon SQS per verificare che sia configurata la Regione corretta sul client. Se una regione non è configurata sul client, l'SDK o la AWS CLI scelgono la Regione dal file di configurazione o dalla variabile ambientale. Se una Regione non si trova nel file di configurazione, l'SDK imposta la Regione su us-east-1 di default.

Se la chiamata API non riuscita è supportata da AWS CloudTrail, verifica tutte le Regioni nell'account cliente per l'operazione Amazon SQS non riuscita. La verifica di tutte le Regioni può aiutare a determinare se la Regione è la causa del problema.

È inoltre possibile verificare la Regione della richiesta attivando il registro di debug nell'SDK o nella AWS CLI. I registri di debug mostrano l'host di destinazione per la richiesta.

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

Coda rimossa o eliminata di recente

È possibile che si verifichi temporaneamente un errore QueueDoesNotExist se la coda è stata eliminata di recente. Identifica il timestamp della chiamata API non riuscita, quindi verifica CloudTrail per eventuali operazioni PurgeQueue al momento dell'errore.

L'errore può verificarsi anche quando la coda viene eliminata se la coda fa parte di una pila AWS CloudFormation o una pila di implementazione simile. Gli aggiornamenti o l'eliminazione di una pila possono causare l'eliminazione e la ricreazione della coda. Se la chiamata API viene effettuata alla coda durante l'eliminazione, la richiesta può non riuscire, determinando un errore QueueDoesNotExist. Controlla CloudTrail alla ricerca di eventuali operazioni DeleteQueue al momento dell'errore.

GetQueueUrl tra account

Per le chiamate API, l'SDK o la AWS CLI in genere prendono il numero di account della coda di destinazione dall'URL della coda. Tuttavia, la chiamata API GetQueueUrl non fornisce l'account AWS di una coda nella richiesta. Ciò significa che di default la richiesta viene effettuata rispetto all'account del chiamante. Se la richiesta è destinata a una coda di account incrociati, è necessario specificare il numero di conto della coda di destinazione come parametro QueueOwnerAWSAccountId della chiamata API.

Messaggio spostato in una coda di messaggi non recapitabili

Per le code SQS standard, quando è configurata una coda di messaggi non recapitabili (DLQ), i messaggi vengono spostati nella DLQ dopo ripetuti tentativi. Possono verificarsi errori QueueDoesNotExist se si esegue un'operazione DeleteMessage utilizzando un ReceiptHandle vecchio dalla coda principale dopo che il messaggio è stato spostato nella DLQ. È necessario eliminare i messaggi nella finestra VisibilityTimeout configurata.

Risoluzione dei problemi aggiuntiva

Se contatti l' AWS Support per ulteriori informazioni sulla risoluzione dei problemi, assicurati di identificare il RequestId e il timestamp delle chiamate API non riuscite.


Questo articolo ti è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?