¿Cómo puedo solucionar los errores QueueDoesNotExist al realizar llamadas a la API para mi cola de Amazon SQS?

Última actualización: 24/08/2021

Cuando realizo llamadas a la API a mi cola de Amazon Simple Queue Service (Amazon SQS), recibo un error QueueDoesNotExist similar al siguiente:

“The specified queue does not exist for this wsdl version” (La cola especificada no existe para esta versión de wsdl).

¿Por qué aparece este error y cómo puedo solucionarlo?

Resolución

Los errores QueueDoesNotExist pueden ser el resultado de varias llamadas a la API de Amazon SQS, incluidas GetQueueAttributes, SendMessage y DeleteMessage. Para solucionar este error, consulte las siguientes causas posibles y los pasos de resolución:

URL de cola incorrecta

Compruebe que la URL de cola proporcionada en la solicitud sea correcta y no contenga errores tipográficos.

Importante: Si el tipo de cola de destino es FIFO, debe agregar el sufijo .fifo a la URL de cola.

Región incorrecta

Se devuelve una excepción QueueDoesNotExist cuando la solicitud se realiza en la región de AWS incorrecta. El kit de desarrollo de software (SDK) y la AWS Command Line Interface (AWS CLI) no detectan la región de destino de la URL de cola. En cambio, la configuración del cliente determina la región.

Debe configurar la región correctamente en el cliente de Amazon SQS antes de realizar una llamada a la API. Revise la configuración del cliente de Amazon SQS para confirmar que la región correcta está configurada en el cliente. Si una región no está configurada en el cliente, el SDK o la AWS CLI eligen la región del archivo de configuración o de la variable del entorno. Si no se encuentra una región en el archivo de configuración, el SDK establece la región en us-east-1 de forma predeterminada.

Si AWS CloudTrail admite la llamada a la API fallida, compruebe todas las regiones de la cuenta del cliente para ver si la operación de Amazon SQS ha fallado. La verificación de todas las regiones puede ayudar a determinar si la región es la causa del problema.

También puede verificar la región de la solicitud al activar el registro de depuración en el SDK o la AWS CLI. Los registros de depuración muestran el host de destino de la solicitud.

Ejemplo: Host: sqs.us-east-1.amazonaws.com.

La cola se ha purgado o eliminado recientemente

Es posible que reciba temporalmente un error QueueDoesNotExist si la cola se ha purgado recientemente. Identifique la marca temporal de la llamada a la API fallida y, a continuación, revise CloudTrail para detectar cualquier operación PurgeQueue que se haya realizado cerca del momento del error.

El error también puede producirse cuando se elimina la cola si la cola forma parte de una pila de implementación de AWS CloudFormation o similar. Las actualizaciones o la eliminación de una pila pueden hacer que la cola se borre y se vuelva a crear. Si la llamada a la API se realiza a la cola durante la eliminación, la solicitud puede fallar con un error QueueDoesNotExist. Revise CloudTrail para detectar cualquier operación DeleteQueue que se haya realizado durante el momento del error.

GetQueueUrl entre cuentas

En el caso de las llamadas a la API, el SDK o la AWS CLI suelen tomar el número de cuenta de la cola de destino de la URL de cola. Sin embargo, la llamada a la API GetQueueUrl no proporciona la cuenta de AWS de una cola en la solicitud. Esto significa que, de forma predeterminada, la solicitud se realiza a la cuenta de la persona que llama. Si la solicitud está destinada a una cola entre cuentas, debe especificar el número de cuenta de la cola de destino como parámetro QueueOwnerAWSAccountId de llamada a la API.

El mensaje se movió a una cola de mensajes fallidos

Para las colas estándar de SQS, cuando se configura una cola de mensajes fallidos (DLQ), los mensajes se mueven a la DLQ después de los reintentos. Pueden producirse errores de QueueDoesNotExist si realiza una operación DeleteMessage con un ReceiptHandle antiguo de la cola principal después de mover el mensaje a la DLQ. Debe eliminar los mensajes en la ventana VisibilityTimeout configurada.

Soluciones de problemas adicionales

Si contacta con AWS Support para obtener soluciones de problemas adicionales, asegúrese de identificar el RequestId y la marca temporal de las llamadas a la API fallidas.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?