Come posso risolvere l'errore QueueDoesNotExist quando effettuo chiamate API alla mia coda Amazon SQS?
Ho effettuato chiamate API alla mia coda Amazon Simple Queue Service (Amazon SQS) e ho ricevuto un errore "QueueDoesNotExist".
Risoluzione
Alcune chiamate API di Amazon SQS, come GetQueueAttributes, SendMessage e DeleteMessage, possono causare l'errore QueueDoesNotExist. Per risolverlo, segui questi passaggi.
Verifica che l'URL della coda sia corretto
Verifica che l'URL della coda fornito nella richiesta sia corretto e non contenga errori di battitura.
Importante: se il tipo di coda di destinazione è First-In First-Out (FIFO), devi aggiungere il suffisso .fifo all'URL della coda.
Imposta la Regione corretta
Ricevi l'errore QueueDoesNotExist quando viene effettuata una richiesta alla Regione AWS errata. SDK e l'Interfaccia della linea di comando AWS (AWS CLI) non ottengono la Regione di destinazione dall'URL della coda. È la configurazione del client a impostare la Regione.
Prima di effettuare una chiamata API, imposta la Regione corretta nel client Amazon SQS. Esamina la configurazione del client Amazon SQS per verificare di aver configurato la Regione corretta. Se non configuri una Regione nel client, SDK o AWS CLI sceglie la Regione dal file di configurazione o dalla variabile di ambiente. Quando SDK non trova una Regione nel file di configurazione, per impostazione predefinita la configura come us-east-1.
Per ulteriori informazioni, consulta la sezione Regione AWS e Impostazioni dei file di configurazione e credenziali in AWS CLI.
Se AWS CloudTrail supporta la chiamata API non riuscita, controlla tutte le Regioni dell'account AWS per l'operazione Amazon SQS fallita. Questo ti aiuterà a determinare se la Regione è la causa del problema.
Puoi anche attivare il log di debug in SDK o AWS CLI per verificare la Regione della richiesta. I log di debug mostrano l'host di destinazione per la richiesta, come ad esempio: Host: sqs.us-east-1.amazonaws.com.
Ecco alcune risorse aggiuntive per i log di debug:
- Registrazione delle chiamate AWS SDK per JavaScript
- Registrazione delle chiamate AWS SDK per Java
- Registrazione con l'SDK for Java 2.x
- Python logging levels (Livelli di registrazione di Python) sul sito web Python
- Logging with the AWS SDK for .NET (Registrazione con AWS SDK per .NET)
Nota: per convalidare la Regione, l'account o il nome della coda, assicurati di registrarne tutti i dettagli.
Verifica la presenza di una coda eliminata di recente
Potresti ricevere un errore QueueDoesNotExist quando una coda è stata eliminata di recente. Identifica il timestamp della chiamata API non riuscita, quindi controlla CloudTrail per eventuali operazioni PurgeQueue al momento dell'errore. Il processo di eliminazione dei messaggi richiede fino a 60 secondi.
L'errore può verificarsi anche quando la coda fa parte di uno stack di AWS CloudFormation o di un altro stack di distribuzione e la coda viene eliminata. Gli aggiornamenti o le eliminazioni degli stack possono causare l'eliminazione e la ricreazione della coda. Se effettui la chiamata API alla coda al momento dell'eliminazione, la richiesta può avere esito negativo. Controlla CloudTrail per eventuali operazioni DeleteQueue al momento dell'errore.
Specifica il numero di account della coda di destinazione quando utilizzi GetQueueUrl
Per le chiamate API, SDK o AWS CLI generalmente ottiene il numero di account della coda di destinazione dall'URL della coda. Tuttavia, la chiamata API GetQueueUrl non fornisce un account della coda nella richiesta. Pertanto, per impostazione predefinita, la richiesta viene effettuata con l'account del chiamante.
Se la richiesta è destinata a una coda multi-account, è necessario specificare il numero di account della coda di destinazione come parametro QueueOwnerAWSAccountId della chiamata API.
Elimina i messaggi che vengono spostati in una coda DLQ entro la finestra di timeout
Per le code SQS standard configurate con una coda DLQ, i messaggi vengono spostati nella coda DLQ dopo la ripetizione. Dopo lo spostamento del messaggio nella coda DLQ, può verificarsi l'errore QueueDoesNotExist quando esegui un'operazione DeleteMessage con un valore ReceiptHandle precedente della coda principale. Devi eliminare i messaggi all'interno della finestra VisibilityTimeout configurata.
Assicurati che il richiedente disponga delle autorizzazioni IAM necessarie
Se l'utente o il ruolo AWS Identity and Access Management (AWS IAM) richiedente non ha le autorizzazioni necessarie, potresti ricevere il seguente errore: "The specified queue does not exist or you do not have access to it."
Utilizza la chiamata API GetCallerIdentity per verificare che l'entità IAM abbia le autorizzazioni richieste.
Esempio di chiamata API GetCallerIdentity in Boto3 Python:
import boto3 sts = boto3.client('sts') print(sts.get_caller_identity())
Per esempi di policy di Amazon SQS, consulta Esempi di base di policy Amazon SQS.
Per ulteriori informazioni sulle autorizzazioni di Amazon SQS, consulta Quali autorizzazioni occorrono per accedere alla coda Amazon SQS?
Risolvi i problemi con il Supporto AWS
Se i passaggi precedenti non risolvono il problema, contatta il Supporto AWS. Includi nella richiesta di assistenza i valori RequestId e timestamp indicando il fuso orario delle chiamate API non riuscite.
- Argomenti
- Application IntegrationServerless
- Lingua
- Italiano
Video correlati

