Comment résoudre les erreurs ReceiptHandleIsInvalid et InvalidParameterValue lors de l'appel de l'API DeleteMessage AWS SQS ?

Date de la dernière mise à jour : 16/08/2021

Je reçois une erreur ReceiptHandleIsInvalid ou InvalidParameterValue lorsque j'essaie de supprimer des messages de ma file d'attente Amazon Simple Queue Service (Amazon SQS). Comment supprimer les messages ?

Brève description

Chaque fois que vous recevez un message d'une file d'attente Amazon SQS, vous recevez un gestionnaire des reçus pour le message. Le gestionnaire est associé à l'action de réception du message plutôt qu'au message lui-même. Pour supprimer le message, vous devez fournir le gestionnaire de reçus.

Le message d'erreur varie selon que vous utilisez des files d'attente FIFO ou des files d'attente SQS standard, et si le gestionnaire de reçus est incorrect ou a expiré.

Files d'attente FIFO SQS

Si le gestionnaire de reçus est incorrect, un message d'erreur similaire à celui-ci s'affiche :

« An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The input receipt handle 'YOUR RECEIPT HANDLE' is not a valid receipt handle. » (Une erreur s'est produite (ReceiptHandleInvalid) lors de l'appel de l'opération DeleteMessage : Le gestionnaire de reçus « YOUR RECEIPT HANDLE » n'est pas valide).

Pour les files d'attente FIFO, un gestionnaire de reçus expire après un délai de visibilité. Lorsqu'un gestionnaire de reçus expire, le message est renvoyé dans la file d'attente. Lorsque vous recevez à nouveau le message, vous obtenez un nouveau gestionnaire de reçus. Si vous tentez de supprimer le message en dehors du délai de visibilité, une erreur similaire à la suivante s'affiche :

« An error occurred (InvalidParameterValue) when calling the DeleteMessage operation: Value 'YOUR RECEIPT HANDLE' for parameter ReceiptHandle is invalid. » (Une erreur s'est produite (InvalidParameterValue) lors de l'appel de l'opération DeleteMessage : La valeur « YOUR RECEIPT HANDLE » pour le paramètre ReceiptHandle n'est pas valide). Raison : le gestionnaire de reçus a expiré.

Files d'attente SQS standard

Si le gestionnaire de reçus est incorrect, un message d'erreur similaire à celui-ci s'affiche :

« An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The input receipt handle 'YOUR RECEIPT HANDLE' is not a valid receipt handle. » (Une erreur s'est produite (ReceiptHandleInvalid) lors de l'appel de l'opération DeleteMessage : Le gestionnaire de reçus « YOUR RECEIPT HANDLE » n'est pas valide).

Pour les files d'attente standard, vous pouvez parfois réussir à utiliser un ancien gestionnaire de reçus. Toutefois, il est recommandé d'utiliser le dernier gestionnaire de reçus pour les appels d'API DeleteMessage. L'utilisation d'un ancien gestionnaire de reçus peut entraîner une erreur similaire à la suivante :

« An error occurred (InvalidParameterValue) when calling the DeleteMessage operation: Value 'YOUR RECEIPT HANDLE' for parameter ReceiptHandle is invalid. » (Une erreur s'est produite (InvalidParameterValue) lors de l'appel de l'opération DeleteMessage : La valeur « YOUR RECEIPT HANDLE » pour le paramètre ReceiptHandle n'est pas valide). Raison : le gestionnaire de reçus a expiré.

Résolution

Pour éviter les erreurs de gestionnaire de reçus non valide ou expiré, vous devez supprimer le message pendant le délai de visibilité de la file d'attente SQS avec le bon gestionnaire de reçus.

Si vous recevez un message plusieurs fois, consultez la réponse d'appel d'API ReceiveMessage la plus récente et identifiez la valeur ReceiptHandle. Utilisez ensuite la valeur ReceiptHandle identifiée lorsque vous appelez l'API DeleteMessage.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?