Gestion des erreurs - Amazon Rekognition

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des erreurs

Cette section décrit les erreurs d'exécution et la façon de les traiter. Il décrit également les messages d'erreur et les codes spécifiques à Amazon Rekognition.

Composants erreur

Lorsque votre programme envoie une demande, Amazon Rekognition tente de la traiter. Si la demande aboutit, Amazon Rekognition renvoie un code d'état de réussite HTTP (200 OK), ainsi que les résultats de l'opération demandée.

Si la demande échoue, Amazon Rekognition renvoie un message d'erreur. Chaque erreur possède trois composants :

  • Un code d'état HTTP (400, par exemple).

  • Un nom d'exception (InvalidS3ObjectException, par exemple).

  • Un message d'erreur (Unable to get object metadata from S3. Check object key, region and/or access permissions., par exemple).

Les kits AWS SDK prennent soin de répercuter les erreurs dans votre application, afin que vous puissiez prendre les mesures appropriées. Par exemple, dans un programme Java, vous pouvez écrire une logique try-catch de façon à gérer un ResourceNotFoundException.

Si vous n'utilisez pas de kit SDK AWS, vous devez analyser le contenu de la réponse de bas niveau provenant d'Amazon Rekognition. Voici un exemple de réponse :

HTTP/1.1 400 Bad Request Content-Type: application/x-amz-json-1.1 Date: Sat, 25 May 2019 00:28:25 GMT x-amzn-RequestId: 03507c9b-7e84-11e9-9ad1-854a4567eb71 Content-Length: 222 Connection: keep-alive {"__type":"InvalidS3ObjectException","Code":"InvalidS3ObjectException","Logref":"5022229e-7e48-11e9-9ad1-854a4567eb71","Message":"Unable to get object metadata from S3. Check object key, region and/or access permissions."}

Codes et messages d'erreur

Vous trouverez ci-dessous une liste des exceptions renvoyées par Amazon Rekognition, regroupées par code d'état HTTP. Si OK to retry? a pour réponse Yes, vous pouvez soumettre à nouveau la même demande. Si OK to retry? a pour réponse No, vous devez résoudre le problème côté client avant de soumettre une nouvelle demande.

Code d'état HTTP 400

Un code de statut HTTP 400 indique un problème avec votre demande. Parmi les exemples de problèmes, citons l'échec de l'authentification, l'absence de paramètres obligatoires ou le dépassement du débit provisionné d'une opération. Vous devez corriger le problème dans votre application avant de soumettre à nouveau la demande.

AccessDeniedException

Message :Une erreur s'est produite (AccessDeniedException) lors de l'appel de l'<Operation>opération : L'utilisateur : <User ARN>n'est pas autorisé à exécuter : <Operation>sur la ressource :<Resource ARN>.

Vous n'êtes pas autorisé à effectuer l'action. Utilisez l'Amazon Resource Name (ARN) d'un utilisateur ou d'un rôle IAM autorisé pour effectuer l'opération.

OK pour réessayer ? Non

GroupFacesInProgressException

Message :Impossible de planifierGroupFacestravail. Une tâche de groupe existe déjà pour cette collection.

Réessayer l'opération lorsque la tâche existante est terminée.

OK pour réessayer ? Non

IdempotentParameterMismatchException

Message :LeClientRequestToken: <Token>que vous avez fourni est déjà en cours d'utilisation.

UNClientRequestTokenUn paramètre d'entrée a été réutilisé avec une opération, mais au moins l'un des autres paramètres d'entrée est différent de l'appel précédent à l'opération.

OK pour réessayer ? Non

ImageTooLargeException

Message : Image size is too large.

La taille de l’image d’entrée dépasse la limite autorisée. Si vous appelezDetectProtectiveEquipment, la taille ou la résolution de l'image dépasse la limite autorisée. Pour plus d'informations, veuillez consulter Directives et quotas dans Amazon Rekognition.

OK pour réessayer ? Non

InvalidImageFormatException

Message : Request has invalid image format.

Le format d'image fourni n'est pas pris en charge. Utilisez un format d'image pris en charge (.JPEG et .PNG). Pour plus d'informations, veuillez consulter Directives et quotas dans Amazon Rekognition.

OK pour réessayer ? Non

InvalidPaginationTokenException

Messages

  • Jeton non valide

  • Jeton de pagination non valide

Le jeton de pagination inclus dans la demande n'est pas valide. Le jeton peut avoir expiré.

OK pour réessayer ? Non

InvalidParameterException

Message : Request has invalid parameters.

Un paramètre d'entrée a enfreint une contrainte. Validez vos paramètres avant d'appeler à nouveau l'opération d'API.

OK pour réessayer ? Non

Non valide 3ObjectException

Messages :

  • Request has invalid S3 object.

  • Impossible d'obtenir les métadonnées de l'objet depuis S3. Vérifiez la clé de l'objet, la région et/ou les autorisations d'accès.

Amazon Rekognition n'est pas en mesure d'accéder à l'objet S3 spécifié dans la demande. Pour plus d'informations, consultez les informations sur la gestion des accès à AWS S3. Pour plus d'informations sur le dépannage, consultez Dépannage Amazon S3.

OK pour réessayer ? Non

LimitExceededException

Messages :

  • Stream processor limit exceeded for account, limit - <Current Limit>.

  • <Number of Open Jobs> open Jobs for User <User ARN> Maximum limit: <Maximum Limit>

Une limite de service Amazon Rekognition a été dépassée. Par exemple, si vous lancez simultanément trop de tâches Amazon Rekognition Video, vous appelez pour démarrer des opérations, telles queStartLabelDetection, soulevez unLimitExceededExceptionexception (code d'état HTTP : 400) jusqu'à ce que le nombre de tâches exécutées simultanément soit inférieur à la limite du service Amazon Rekognition.

OK pour réessayer ? Non

ProvisionedThroughputExceededException

Messages :

  • Provisioned Rate exceeded.

  • S3 download limit exceeded.

Le nombre de demandes dépasse votre limite de débit. Pour plus d'informations, voirLimites du service Amazon Rekognition.

Pour demander une augmentation de la limite, suivez les instructions surCréez un dossier pour modifier les quotas TPS.

OK pour réessayer ? Oui

ResourceAlreadyExistsException

Message : The collection id: <Collection Id> already exists.

Une collection avec l'ID spécifié existe déjà.

OK pour réessayer ? Non

ResourceInUseException

Messages :

  • Stream processor name already in use.

  • Specified resource is in use.

  • Processor not available for stopping stream.

  • Cannot delete stream processor.

Réessayez lorsque la ressource est disponible.

OK pour réessayer ? Non

ResourceNotFoundException

Message : Plusieurs messages en fonction de l'appel d'API.

La ressource spécifiée n'existe pas.

OK pour réessayer ? Non

ThrottlingException

Message : Slow down; sudden increase in rate of requests.

Votre taux de demande d'augmentation est trop rapide. Diminuez le débit de vos demandes et augmentez-les progressivement. Nous vous recommandons de faire un retour en arrière exponentiel et de réessayer. Par défaut, les kits SDK AWS utilisent une logique de nouvelle tentative et une interruption exponentielle automatiques. Pour plus d'informations, consultez Nouvelles tentatives après erreur et interruptions exponentiellesdans AWS et Backoff exponentiel et Jitter.

OK pour réessayer ? Oui

VideoTooLargeException

Message : Video size in bytes: <Video Size> is more than the maximum limit of: <Max Size> bytes.

La taille ou la durée de fichier du support fourni est trop volumineuse. Pour plus d'informations, veuillez consulter Directives et quotas dans Amazon Rekognition.

OK pour réessayer ? Non

Code d'état HTTP 5xx

Un code d'état HTTP 5xx indique un problème qui doit être résolu par AWS. Il s'agit peut être d'une erreur temporaire. Si c'est le cas, vous pouvez relancer la demande jusqu'à ce qu'elle aboutisse. Sinon, accédez au AWS Service Health Dashboard pour voir si le service présente des problèmes de fonctionnement.

InternalServerError(HTTP 500)

Message : Internal server error

Amazon Rekognition a rencontré un problème de service. Renouvelez votre appel. Faites un retour en arrière exponentiel et réessayez. Par défaut, les kits SDK AWS utilisent une logique de nouvelle tentative et une interruption exponentielle automatiques. Pour plus d'informations, consultez Nouvelles tentatives après erreur et interruptions exponentiellesdans AWS et Backoff exponentiel et Jitter.

OK pour réessayer ? Oui

ThrottlingException(HTTP 500)

Message : Service Unavailable

Amazon Rekognition est temporairement dans l'impossibilité de traiter la demande. Renouvelez votre appel. Nous vous recommandons de faire un retour en arrière exponentiel et de réessayer. Par défaut, les kits SDK AWS utilisent une logique de nouvelle tentative et une interruption exponentielle automatiques. Pour plus d'informations, consultez Nouvelles tentatives après erreur et interruptions exponentiellesdans AWS et Backoff exponentiel et Jitter.

OK pour réessayer ? Oui

Gestion des erreurs dans votre application

Pour que votre application fonctionne correctement, vous devez ajouter une logique destinée à capturer les erreurs et à y répondre. Les approches classiques incluent l'utilisation de blocs try-catch ou d'instructions if-then.

Les kits AWS SDK effectuent leurs propres tentatives et contrôles d'erreur. Si vous rencontrez une erreur tout en utilisant l'un des kits AWS SDK, le code d'erreur et la description peuvent vous aider à la résoudre.

Vous devez également voir un Request ID dans la réponse. L'Request ID peut être utile si vous devez utiliser AWS Support pour diagnostiquer un problème.

L'extrait de code Java suivant tente de détecter des objets dans une image et exécute une gestion rudimentaire des erreurs. (Dans ce cas, il informe l'utilisateur que la demande a échoué.)

try { DetectLabelsResult result = rekognitionClient.detectLabels(request); List <Label> labels = result.getLabels(); System.out.println("Detected labels for " + photo); for (Label label: labels) { System.out.println(label.getName() + ": " + label.getConfidence().toString()); } } catch(AmazonRekognitionException e) { System.err.println("Could not complete operation"); System.err.println("Error Message: " + e.getMessage()); System.err.println("HTTP Status: " + e.getStatusCode()); System.err.println("AWS Error Code: " + e.getErrorCode()); System.err.println("Error Type: " + e.getErrorType()); System.err.println("Request ID: " + e.getRequestId()); } catch (AmazonClientException ace) { System.err.println("Internal error occurred communicating with Rekognition"); System.out.println("Error Message: " + ace.getMessage()); }

Dans cet extrait de code, la construction try-catch gère deux types différents d'exceptions :

  • AmazonRekognitionException—Cette exception se produit si la demande du client a été correctement transmise à Amazon Rekognition, mais qu'Amazon Rekognition n'a pas pu traiter la demande et a renvoyé une réponse d'erreur à la place.

  • AmazonClientException— Cette exception se produit si le client n'a pas pu obtenir de réponse d'un service ou s'il n'a pas pu analyser la réponse d'un service.