Gestion des erreurs dans Elastic Transcoder - Amazon Elastic Transcoder

Réduisez les coûts et bénéficiez de davantage de fonctionnalités avec AWS Elemental MediaConvert

MediaConvert est un nouveau service de transcodage vidéo basé sur des fichiers qui fournit une suite complète de fonctionnalités de transcodage avancées, avec des tarifs à la demande à partir de 0,0075 $/minute. En savoir plus.

Vous utilisez déjà Amazon Elastic Transcoder ? La migration vers cette solution est simple MediaConvert. Pour plus d'informations, consultez cette présentation qui inclut des informations précieuses sur le processus de migration et des liens vers des ressources supplémentaires.

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 dans Elastic Transcoder

Lorsque vous envoyez des demandes à l'API Elastic Transcoder et que vous obtenez des réponses depuis cette dernière, vous pouvez rencontrer deux types d'erreurs d'API :

  • Erreurs de client : les erreurs de client sont indiquées par un code de réponse HTTP 4xx. Les erreurs du client indiquent qu'Elastic Transcoder a détecté un problème avec la demande du client, tel qu'un échec d'authentification ou l'absence de paramètres requis. Corrigez le problème dans l'application cliente avant de soumettre à nouveau la requête.

  • Erreurs de serveur : les erreurs de serveur sont indiquées par un code de réponse HTTP 5xx et doivent être résolues par Amazon. Vous pouvez soumettre à nouveau/réessayer la requête jusqu'à ce qu'elle réussisse.

Pour chaque erreur d'API, Elastic Transcoder renvoie les valeurs suivantes :

  • Un code de statut, par exemple, 400

  • Un code d'erreur, par exemple, ValidationException

  • Un message d'erreur, par exemple, Supplied AttributeValue is empty, must contain exactly one of the supported datatypes

Pour obtenir la liste des codes d'erreur renvoyés par Elastic Transcoder pour les erreurs du client et du serveur, consultezCodes d'erreur d'API (erreurs de client et de serveur).

De plus, vous pouvez rencontrer des erreurs lors du traitement de votre tâche par Elastic Transcoder. Pour plus d'informations, veuillez consulter Erreurs de traitement de tâches.

Codes d'erreur d'API (erreurs de client et de serveur)

Les codes de statut HTTP indiquent si une opération a abouti ou non.

Le code de réponse 200 indique que l'opération a abouti. Les autres codes d'erreur indiquent une erreur de client (4xx) ou une erreur de serveur (5xx).

Le tableau suivant répertorie les erreurs renvoyées par Elastic Transcoder. Certaines erreurs sont résolues en réessayant simplement la même requête. Le tableau indique quelles erreurs sont susceptibles d'être résolues par des tentatives successives. Si la valeur de la colonne Réessayer est :

  • Oui : soumettez à nouveau la même requête.

  • Non : corrigez le problème côté client avant de soumettre une nouvelle requête.

Pour plus d'informations sur le fait de réessayer des demaDemandesnsultez Nouvelles tentatives après erreur et interruptions exponentielles.

HTTP Status Code Code d'erreur Message Cause Réessayer
400 Exception d'échec de vérification conditionnelle La requête conditionnelle a échoué. Exemple : la valeur attendue ne correspondait pas à ce qui était stocké dans le système. Non
400 Exception de signature incomplète La signature de la requête n'est pas conforme aux normes AWS. La signature figurant dans la requête ne comprenait pas tous les composants requis. Consultez Contenu de l'en-tête HTTP. Non
403 Exception de jeton d'authentification manquant La requête doit comporter un ID de clé d'accès AWS valide (inscrit). La requête ne comprenait pas le jeton x-amz-security-token nécessaire. Consultez Envoi de demandes HTTP à Elastic Transcoder. Non
400 Exception de validation Divers. Une ou plusieurs valeurs étaient manquantes ou non valides dans une requête ; par exemple, une valeur était vide ou supérieure à la valeur maximale valide. Non
403 AccessDenied Exception
  • La suppression d'un préréglage système est désormais autorisée : account=<accountId>, presetId=<presetId>.

  • Échec d'authentification général. Le client n'a pas signé correctement la demande. Consultez Signature des requêtes.

Vous avez tenté de supprimer un préréglage du système, la signature d'un appel à l'API Elastic Transcoder n'était pas valide ou aucun utilisateur n'est autorisé à effectuer l'opération.

Non
404 ResourceNot Exception trouvée
  • La <resource> spécifiée est introuvable : <resourceId>.

  • La tâche spécifiée est introuvable : account=<accountId>, jobId=<jobId>.

  • Le pipeline spécifié est introuvable : account=<accountId>, pipelineId=<pipelineId>

  • Le préréglage spécifié est introuvable : account=<accountId>, presetId=<presetId>

Exemple : le pipeline auquel vous essayez d'ajouter une tâche n'existe pas ou est encore en cours de création. Non
409 InUse Exception de ressource
  • La <resource> était déjà en cours d'utilisation : accountId=<accountId>, resourceId=<resourceId>.

  • Le pipeline contient des tâches actives : account=<accountId>, pipeline=<pipelineId>.

Exemple : vous avez tenté de supprimer un pipeline qui est en cours d'utilisation. Non
429 Exception de dépassement de la limite
  • Le compte possède déjà le nombre maximal de pipelines autorisés : account=<accountId>, maximum number of pipelines=<maximum>

  • Le compte possède déjà le nombre maximal de préréglages autorisés : account=<accountId>, maximum number of presets=<maximum>

  • Le compte possède déjà le nombre maximal de tâches par pipeline dans la liste des éléments en attente : account=<accountId>, maximum number of jobs in backlog for pipeline=<maximum>

Le compte AWS actuel a dépassé les limites relatives aux objets Elastic Transcoder. Pour plus d'informations, veuillez consulter Limites du nombre de pipelines, de tâches et de préréglages Elastic Transcoder.
429 Exception de dépassement de débit alloué Vous avez dépassé votre débit alloué maximum autorisé.

Exemple : votre taux de demandes est trop élevé. Les kits SDK AWS pour Elastic Transcoder relananceront automatiquement les demandes qui reçoivent cette exception. Votre requête finit par aboutir, à moins que la file d'attente des nouvelles tentatives soit trop grande pour être terminée. Réduisez la fréquence des requêtes. Pour plus d'informations, veuillez consulter Nouvelles tentatives après erreur et interruptions exponentielles.

Si vous effectuez une interrogation pour déterminer l'état d'une demande, envisagez d'utiliser des notifications pour déterminer le statut. Pour plus d'informations, veuillez consulter Notifications de statuts des tâches.

Oui
429 Exception de limitation La fréquence des requêtes dépasse le débit autorisé.

Vous soumettez des demandes trop rapidement ; par exemple, des demandes de création de tâches.

Si vous effectuez une interrogation pour déterminer l'état d'une demande, envisagez d'utiliser des notifications pour déterminer le statut. Pour plus d'informations, veuillez consulter Notifications de statuts des tâches.

Oui
500 Échec interne Le serveur a rencontré une erreur interne en essayant de traiter la requête. Le serveur a rencontré une erreur lors du traitement de votre requête. Oui
500 Erreur de serveur interne Le serveur a rencontré une erreur interne en essayant de traiter la requête. Le serveur a rencontré une erreur lors du traitement de votre requête. Oui
500 Exception de service interne Le service a rencontré une exception inattendue en essayant de traiter la requête. Oui
500 Exception de service non disponible Le service est actuellement indisponible ou occupé. Une erreur inattendue s'est produite sur le serveur lors du traitement de votre requête. Oui

Exemple de réponse d'erreur

La réponse HTTP ci-dessous indique que la valeur pour inputBucket était null, ce qui n'est pas une valeur valide.

HTTP/1.1 400 Bad Request x-amzn-RequestId: b0e91dc8-3807-11e2-83c6-5912bf8ad066 x-amzn-ErrorType: ValidationException Content-Type: application/json Content-Length: 124 Date: Mon, 26 Nov 2012 20:27:25 GMT {"message":"1 validation error detected: Value null at 'inputBucket' failed to satisfy constraint: Member must not be null"}

Erreurs de traitement de tâches

Lorsqu'Elastic Transcoder rencontre une erreur lors du traitement de votre tâche, il la signale de deux manières :

  • État de la Job et état de sortie : Elastic Transcoder définit l'Job:Statusobjet et l'Outputs:Statusobjet de la sortie défaillante surError. En outre, Elastic Transcoder attribue à l'objetOutputs:StatusDetail JSON de la sortie défaillante une valeur qui explique l'échec.

  • Notification SNS : si vous avez configuré le pipeline pour envoyer une notification SNS lorsqu'Elastic Transcoder rencontre une erreur pendant le traitement, Elastic Transcoder inclut un objet JSON dans la notification au format suivant :

    { "state" : "PROGRESSING|COMPLETED|WARNING|ERROR", "errorCode" : "the code of any error that occurred", "messageDetails" : "the notification message you created in Amazon SNS", "version" : "API version that you used to create the job", "jobId" : "value of Job:Id object that Elastic Transcoder returns in the response to a Create Job request", "pipelineId" : "value of PipelineId object in the Create Job request", "input" : { job Input settings }, "outputKeyPrefix" : "prefix for file names in Amazon S3 bucket", "outputs": [ { applicable job Outputs settings, "status" : "Progressing|Complete|Warning|Error" }, {...} ], "playlists": [ { applicable job playlists settings } ], "userMetadata": { "metadata key": "metadata value" } }
Valeur de errorCode Valeur de messageDetails Cause
1 000 Erreur de validation Lors du traitement de la tâche, Elastic Transcoder a déterminé qu'une ou plusieurs valeurs de la demande n'étaient pas valides.
1001 Erreur de dépendance Elastic Transcoder n'a pas pu générer la liste de lecture car il a rencontré une erreur liée à une ou plusieurs dépendances des listes de lecture.
2000 Impossible d'assumer un rôle Elastic Transcoder ne peut pas assumer leAWS Identity and Access Management rôle spécifié dans l'Roleobjet du pipeline pour cette tâche.
3000 Erreur de stockage non classée
3001 L'entrée n'existe pas Aucun fichier portant le nom que vous avez spécifié n'existe dans l'objet Input:Key pour cette tâche. Le fichier doit exister dans le compartiment Amazon S3 spécifié dans l'InputBucketobjet du pipeline pour cette tâche.
3002 La sortie existe déjà Un fichier portant le nom que vous avez spécifié existe déjà dans l'objet Outputs:Key (ou Output:Key) pour cette tâche. Le fichier ne peut pas exister dans le compartiment Amazon S3 spécifié dans l'OutputBucketobjet du pipeline pour cette tâche.
3003 Ne dispose pas des autorisations de lecture Le rôle IAM spécifié dans l'Roleobjet du pipeline que vous avez utilisé pour cette tâche n'est pas autorisé à lire le contenu du compartiment Amazon S3 qui contient le fichier que vous souhaitez transcoder.
3004 Ne dispose pas des autorisations d'écriture Le rôle IAM spécifié dans l'Roleobjet du pipeline que vous avez utilisé pour cette tâche n'est pas autorisé à écrire dans le compartiment Amazon S3 dans lequel vous souhaitez enregistrer des fichiers transcodés ou des fichiers miniatures.
3005 Le compartiment n'existe pas Le compartiment S3 spécifié n'existe pas : bucket= {1}.
3006 Ne dispose pas des autorisations d'écriture Elastic Transcoder n'a pas pu écrire la clé = {1} dans le compartiment = {2}, car la clé ne se trouve pas dans la même région que le compartiment
4000 Fichier d'entrée incorrect Le fichier que vous avez spécifié dans l'Input:Keyobjet de cette tâche est dans un format qui n'est actuellement pas pris en charge par Elastic Transcoder.
4001 Fichier d'entrée incorrect Les dimensions de largeur x hauteur du fichier que vous avez spécifié dans l'objet Input:Key pour cette tâche dépassent les dimensions maximales autorisées.
4002 Fichier d'entrée incorrect La taille du fichier que vous avez spécifiée dans l'objet Input:Key pour cette tâche dépasse la taille maximale autorisée.
4003 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu interpréter le fichier que vous avez spécifié dans l'un desOutputs:Watermarks:InputKey objets de cette tâche.
4004 Fichier d'entrée incorrect Les dimensions de largeur x hauteur d'un fichier que vous avez spécifiées dans l'un des objets Outputs:Watermarks:InputKey pour cette tâche dépassent les dimensions maximales autorisées.
4005 Fichier d'entrée incorrect La taille d'un fichier que vous avez spécifiée pour l'un des {1} objets dépasse la taille maximale autorisée : bucket= {2}, key= {3}, size {4}, taille max= {5}.
4006 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu transcoder le fichier d'entrée car le format n'est pas pris en charge.
4007 Fichier d'entrée non traité Elastic Transcoder a rencontré un type de fichier généralement pris en charge, mais n'a pas pu le traiter correctement. Cette erreur a ouvert automatiquement une demande de support, et nous avons commencé à rechercher la cause du problème.
4008 Fichier d'entrée incorrect

La cause sous-jacente de cette erreur est une incohérence entre le préréglage et le fichier d'entrée. En voici quelques exemples :

  • Le préréglage comprend des paramètres audio, mais le fichier d'entrée ne comporte pas d'audio.

  • Le préréglage comprend des paramètres vidéo, mais le fichier d'entrée ne comporte pas de vidéo.

4009 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu insérer toutes les pochettes de votre album dans le fichier de sortie car vous avez dépassé le nombre maximum de flux d'illustrations.
4010 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu interpréter le fichier graphique que vous avez spécifiéAlbumArt:Artwork:InputKey.
4011 Fichier d'entrée incorrect Elastic Transcoder a détecté un flux d'illustrations intégré, mais n'a pas pu l'interpréter.
4012 Fichier d'entrée incorrect L'image que vous avez spécifiée pour AlbumArt:Artwork dépasse les dimensions de largeur x hauteur maximales autorisées : 4096 x 3072.
4013 Fichier d'entrée incorrect Les dimensions de largeur x hauteur de la pochette intégrée dépassent les dimensions maximales autorisées : 4096 x 3072.
4014 Entrée incorrecte La valeur que vous avez spécifiée pour l'heure de début d'un clip est postérieure à la fin du fichier d'entrée. Elastic Transcoder n'a pas pu créer de fichier de sortie.
4015 Entrée incorrecte Elastic Transcoder n'a pas pu générer de fichier manifeste car les segments générés ne correspondaient pas.
4016 Entrée incorrecte Elastic Transcoder n'a pas pu déchiffrer le fichier d'entrée de {1} à l'aide de {2}.
4017 Entrée incorrecte La clé AES a été chiffrée avec une clé de chiffrement de {2} bits. AES prend en charge uniquement les clés de chiffrement 128, 192 et 256 bits. MD5= {1}.
4018 Entrée incorrecte Elastic Transcoder n'a pas pu déchiffrer la clé chiffrée avec MD5= {1}
4019 Entrée incorrecte Elastic Transcoder n'a pas pu générer de clé de données à l'aide de la clé KMS ARN {0}.
4020 Entrée incorrecte Votre clé doit être 128 bits pour le chiffrement AES-A128. MD5 = {1}, {2} bits.
4021 Entrée incorrecte Votre clé doit être de 128 bits pour les PlayReady DRM. MD5 = {1}, intensité = {2} bits.
4022 Entrée incorrecte La taille combinée des {1} fichiers multimédia spécifiés dépasse la taille maximale autorisée : bucket= {2}, size= {3}.
4023 Entrée incorrecte Les {1} fichiers d'entrée spécifiés pour la concaténation ne créeront pas de sortie avec une résolution cohérente avec le préréglage spécifié. Utilisez un préréglage avec des paramètres PaddingPolicy, SizingPolicy, MaxWidth et MaxHeight différents.
4024 Entrée incorrecte Les {1} fichiers d'entrée spécifiés pour la concaténation ne créeront pas de vignettes avec une résolution cohérente avec le préréglage spécifié. Utilisez un préréglage avec des paramètres de miniatures PaddingPolicy, SizingPolicy, MaxWidth et MaxHeight différents.
4025 Entrée incorrecte Au moins un fichier multimédia (entrée # {1}) ne correspond pas aux autres. Tous les fichiers multimédias doivent soit comporter de la vidéo, soit ne pas en comporter.
4026 Entrée incorrecte Au moins un fichier multimédia (entrée # {1}) ne correspond pas aux autres. Tous les fichiers multimédias doivent comporter soit de l'audio, soit pas d'audio.
4100 Fichier d'entrée incorrect Elastic Transcoder a détecté une piste de sous-titres intégrée mais n'a pas pu l'interpréter.
4101 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu interpréter le fichier de sous-titres spécifié pour Amazon S3 bucket= {1}, key= {2}.
4102 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu interpréter le fichier de sous-titres spécifié car il n'était pas codé en UTF-8 : Amazon S3 bucket= {1}, key= {2}.
4103 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu traiter toutes vos pistes de sous-titres car vous avez dépassé {1}, le nombre maximum de pistes de sous-titres.
4104 Fichier d'entrée incorrect Elastic Transcoder n'a pas pu générer de liste de lecture principale car la sortie souhaitée contient {1} sous-titres intégrés, alors que le maximum est de 4.
4105 Fichier d'entrée incorrect Elastic Transcoder ne peut pas intégrer vos pistes de sous-titres car la fréquence d'images {1} n'est pas prise en charge pour le CEA-708. Seules les fréquences d'images [29,97, 30] sont prises en charge.
4106 Fichier d'entrée incorrect Elastic Transcoder ne peut pas intégrer vos pistes de sous-titres car le format {1} ne prend en charge que {2} pistes de sous-titres.
9000 Erreur interne du service
9001 Erreur interne du service
9999 Erreur interne du service

Capture d'erreurs

Pour que votre application fonctionne correctement, vous devez intégrer une logique destinée à capturer les erreurs et à y répondre. Une approche standard consiste à implémenter votre requête au sein d'un bloc try ou d'une instruction if-then.

Les kits AWS SDK effectuent leurs propres tentatives et contrôles d'erreur. Si vous rencontrez une erreur en utilisant l'un des kits SDK AWS, vous devez voir le code d'erreur et la description. Vous devez également voir une valeur Request ID. LaRequest ID valeur peut aider à résoudre les problèmes liés à la prise en charge d'Elastic Transcoder.

L'exemple suivant utilise le kit AWS SDK pour Java pour supprimer un élément d'un bloc try et utilise un bloc catch pour répondre à l'erreur. Dans ce cas, il avertit que la demande a échoué. L'exemple utilise la classe AmazonServiceException pour extraire des informations concernant les erreurs d'opération, notamment Request ID. L'exemple utilise également la classe AmazonClientException au cas où la demande n'aboutirait pas pour d'autres raisons.

try { DeleteJobRequest request = new DeleteJobRequest(jobId); DeleteJobResult result = ET.deleteJob(request); System.out.println("Result: " + result); // Get error information from the service while trying to run the operation } catch (AmazonServiceException ase) { System.err.println("Failed to delete job " + jobId); // Get specific error information System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); // Get information in case the operation is not successful for other reasons } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which means"+ " the client encountered " + "an internal error while trying to " + "communicate with Elastic Transcoder, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); }

Nouvelles tentatives après erreur et interruptions exponentielles

Un grand nombre de composants d'un réseau, tels que serveurs DNS, commutateurs, équilibreurs de charge ou autres, peuvent générer des erreurs à n'importe quel moment de la vie d'une requête donnée.

La technique habituelle pour traiter ces réponses erronées dans un environnement réseau consiste à implémenter les nouvelles tentatives dans l'application cliente. Cette technique augmente la fiabilité de l'application et réduit les coûts de fonctionnement pour le développeur.

Chaque kit SDK AWS prenant en charge Elastic Transcoder implémente une logique de nouvelle tentative automatique. Le kit AWS SDK pour Java retente automatiquement les requêtes et vous pouvez configurer les paramètres de nouvelle tentative à l'aide de la classe ClientConfiguration. Par exemple, dans certains cas, tels qu'une page web effectuant une requête avec une latence minimale et sans nouvelles tentatives, vous pouvez désactiver la logique de nouvelle tentative. Utilisez la classe ClientConfiguration et affectez au paramètre maxErrorRetry la valeur 0 afin de désactiver les nouvelles tentatives.

Si vous n'utilisez pas un kit AWS SDK, vous devez retenter les demandes originales qui reçoivent les erreurs serveur (5xx). Cependant, les erreurs client (4xx, autres qu'une exception ThrottlingException ou ProvisionedThroughputExceededException) indiquent que vous avez besoin de réviser la demande elle-même pour résoudre le problème avant de recommencer.

Note

Si vous effectuez une enquête pour déterminer l'état d'une demande et si Elastic Transcoder renvoie le code d'état HTTP 429 avec un code d'erreur égal àProvisioned Throughput Exceeded Exception ouThrottling Exception, pensez à utiliser des notifications au lieu d'interroger pour déterminer l'état. Pour plus d'informations, veuillez consulter Notifications de statuts des tâches.

En plus de nouvelles tentatives simples, nous recommandons d'utiliser un algorithme d'interruption exponentielle pour un meilleur contrôle de flux. L'idée sous-jacente consiste à utiliser des temps d'attente progressivement plus longs entre les tentatives en cas de réponses d'erreur consécutives. Par exemple, vous pouvez attendre 1 seconde avant la première nouvelle tentative, 4 secondes avant la deuxième, 16 secondes avant la troisième, etc. Toutefois, si la requête n'a pas réussi après une minute, le problème peut être lié à une limite stricte et non à la fréquence des requêtes. Par exemple, il est possible que vous ayez atteint le nombre maximal de pipelines autorisés. Définir le nombre maximal de nouvelles tentatives pour qu'elles s'arrêtent au bout d'une minute environ.

Le flux de travail suivant illustre la logique de nouvelle tentative. La logique du flux de travail détermine d'abord si l'erreur est une erreur serveur (5xx). Ensuite, si l'erreur est une erreur serveur, le code réessaie la demande originale.

currentRetry = 0 DO set retry to false execute Elastic Transcoder request IF Exception.errorCode = ProvisionedThroughputExceededException set retry to true ELSE IF Exception.httpStatusCode = 500 set retry to true ELSE IF Exception.httpStatusCode = 400 set retry to false fix client error (4xx) IF retry = true wait for (2^currentRetry * 50) milliseconds currentRetry = currentRetry + 1 WHILE (retry = true AND currentRetry < MaxNumberOfRetries) // limit retries