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 que
StartLabelDetection
, soulevez unLimitExceededException
exception (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
- 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.