Gestión de errores en Elastic Transcoder - Amazon Elastic Transcoder

Aviso de fin de soporte: el 13 de noviembre de 2025, AWS dejaremos de ofrecer soporte a Amazon Elastic Transcoder. Después del 13 de noviembre de 2025, ya no podrás acceder a la consola de Elastic Transcoder ni a los recursos de Elastic Transcoder.

Para obtener más información sobre la transición a AWS Elemental MediaConvert, visite esta entrada de blog.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Gestión de errores en Elastic Transcoder

Cuando se envían solicitudes a la API de Elastic Transcoder y se obtienen respuestas de ella, pueden producirse dos tipos de errores de API:

  • Errores de cliente: los errores de cliente se indican con el código de respuesta HTTP 4xx. Los errores de cliente indican que Elastic Transcoder ha detectado un problema en la solicitud del cliente; por ejemplo, un error de autenticación o la ausencia de parámetros obligatorios. Corrija el problema en la aplicación cliente antes de volver a enviar la solicitud.

  • Errores de servidor: los errores de servidor se indican mediante un código de respuesta HTTP 5xx y su resolución corresponde a Amazon. Puede volver a enviar/reintentar la solicitud hasta que se ejecute satisfactoriamente.

Para cada error de la API, Elastic Transcoder devuelve los siguientes valores:

  • Un código de estado; por ejemplo, 400

  • Un código de error; por ejemplo, ValidationException

  • Un mensaje de error; por ejemplo, Supplied AttributeValue is empty, must contain exactly one of the supported datatypes

Para obtener una lista de los códigos de error que Elastic Transcoder devuelve para los errores de cliente y servidor, consulte Códigos de error de la API (errores de cliente y de servidor).

Además, podría producirse otros errores mientras Elastic Transcoder procesa la tarea. Para obtener más información, consulte Errores durante el procesamiento de la tarea.

Códigos de error de la API (errores de cliente y de servidor)

Los códigos de estado HTTP indican si una operación se ejecuta correctamente o no.

Un código de respuesta 200 indica que la operación se ha realizado correctamente. Otros códigos de error indican un error de cliente (4xx) o de servidor (5xx).

En la siguiente tabla se muestran los errores devueltos por Elastic Transcoder. Algunos errores se resuelven con solo reintentar la misma solicitud. En la tabla se indica qué errores es probable que se resuelvan con reintentos sucesivos. Si el valor de la columna es Reintentar es:

  • Sí: envíe la misma solicitud de nuevo.

  • No: corrija el problema en el cliente antes de enviar la nueva solicitud.

Para obtener más información sobre el reintento de solicitudes, consulte Reintentos de error y retardo exponencial.

Código de estado HTTP Código de error Mensaje Causa Reintentar
400 Conditional Check Failed Exception The conditional request failed. Ejemplo: El valor esperado no coincide con lo que se ha almacenado en el sistema. No
400 Incomplete Signature Exception The request signature does not conform to AWS standards. La firma de la solicitud no incluía todos los componentes necesarios. Consulte Contenido de los encabezados HTTP. No
403 Missing Authentication Token Exception The request must contain a valid (registered) AWS Access Key ID. La solicitud no incluía el x-amz-security-token obligatorio. Consulte Realización de solicitudes HTTP a Elastic Transcoder. No
400 Validation Exception Varios. Uno o varios valores de una solicitud faltaban o no eran válidos; por ejemplo, un valor estaba vacío o era mayor que el máximo valor válido. No
403 AccessDenied Exception
  • Deleting a system preset is not allowed: account=<accountId>, presetId=<presetId>.

  • General authentication failure. El cliente no firmó correctamente la solicitud. Consulte Firma de solicitudes.

Ha intentado eliminar un elemento preestablecido del sistema, la firma de una llamada a la API de Elastic Transcoder no era válida o un usuario no está autorizado para realizar la operación.

No
404 ResourceNot Found Exception
  • The specified <resource> could not be found: <resourceId>.

  • The specified job was not found: account=<accountId>, jobId=<jobId>.

  • The specified pipeline was not found: account=<accountId>, pipelineId=<pipelineId>

  • The specified preset was not found: account=<accountId>, presetId=<presetId>

Ejemplo: La canalización para la que intenta añadir una tarea no existe o está en proceso de creación. No
409 Resource InUse Exception
  • The <resource> was already in use: accountId=<accountId>, resourceId=<resourceId>.

  • The pipeline contains active jobs: account=<accountId>, pipeline=<pipelineId>.

Ejemplo: Ha intentado eliminar una canalización que se encuentra en uso. No
429 Limit Exceeded Exception
  • The account already has the maximum number of pipelines allowed: account=<accountId>, maximum number of pipelines=<maximum>

  • The account already has the maximum number of presets allowed: account=<accountId>, maximum number of presets=<maximum>

  • The account already has the maximum number of jobs per pipeline in the backlog: account=<accountId>, maximum number of jobs in backlog for pipeline=<maximum>

La cuenta de AWS actual ha superado los límites de objetos de Elastic Transcoder. Para obtener más información, consulte Límites de la cantidad de canalizaciones, tareas y elementos preestablecidos de Elastic Transcoder.
429 Provisioned Throughput Exceeded Exception You exceeded your maximum allowed provisioned throughput.

Ejemplo: La velocidad de solicitudes es demasiado alta. Los SDK de AWS para Elastic Transcoder reintentan automáticamente las solicitudes que reciben esta excepción. La solicitud se llevará a cabo con éxito en algún momento, salvo que la cola de reintentos sea demasiado larga para que pueda alcanzarse el final. Reduzca la frecuencia de las solicitudes. Para obtener más información, consulte Reintentos de error y retardo exponencial.

Si realiza un sondeo para determinar el estado de una solicitud, considere la posibilidad de usar notificaciones para hacerlo. Para obtener más información, consulte Notificaciones de estado de la tarea.

429 Throttling Exception Rate of requests exceeds the allowed throughput.

Está enviando solicitudes con demasiada rapidez; por ejemplo, solicitudes para crear nuevas tareas.

Si realiza un sondeo para determinar el estado de una solicitud, considere la posibilidad de usar notificaciones para hacerlo. Para obtener más información, consulte Notificaciones de estado de la tarea.

500 Internal Failure The server encountered an internal error trying to fulfill the request. El servidor ha detectado un error al procesar la solicitud.
500 Internal Server Error The server encountered an internal error trying to fulfill the request. El servidor ha detectado un error al procesar la solicitud.
500 Internal Service Exception El servicio detectó una excepción inesperada al intentar cumplir la solicitud.
500 Service Unavailable Exception The service is currently unavailable or busy. Se ha producido un error inesperado en el servidor al procesar la solicitud.

Ejemplo de respuesta de error

A continuación se muestra una respuesta HTTP que indica que el valor de inputBucket era “null” (nulo), que no es un valor válido.

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"}

Errores durante el procesamiento de la tarea

Siempre que Elastic Transcoder se encuentra con un error al procesar su tarea, lo notifica de dos formas:

  • Estado de la tarea y estado de salida: Elastic Transcoder establece el objeto Job:Status y el objeto Outputs:Status para la salida errónea en Error. Además, Elastic Transcoder establece el objeto JSON Outputs:StatusDetail para la salida errónea en un valor que explica el error.

  • Notificación de SNS: si ha configurado la canalización para enviar una notificación de SNS siempre que Elastic Transcoder se encuentre con un error durante el procesamiento, Elastic Transcoder incluye un objeto JSON en la notificación en el siguiente formato:

    { "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" } }
Valor de errorCode Valor de messageDetails Causa
1 000 Error de validación Al procesar la tarea, Elastic Transcoder determinó que uno o varios valores de la solicitud no eran válidos.
1001 Error de dependencia Elastic Transcoder podría no generar la lista de reproducción, ya que se encontró con un error con una o varias dependencias de las listas de reproducción.
2000 No se puede suponer la función Elastic Transcoder no puede asumir la función de AWS Identity and Access Management que se especifica en el objeto Role de la canalización para esta tarea.
3 000 Error de almacenamiento sin clasificar
3001 La entrada no existe No existe ningún archivo con el nombre que especificó en el objeto Input:Key para esta tarea. El archivo debe existir en el bucket de Amazon S3 que se especifica en el objeto InputBucket de la canalización para esta tarea.
3002 La salida ya existe Ya existe un archivo con el nombre que especificó en el objeto Outputs:Key (o Output:Key) para esta tarea. El archivo no puede existir en el bucket de Amazon S3 que se especifica en el objeto OutputBucket de la canalización para esta tarea.
3003 No tiene permiso de lectura El rol de IAM especificado en el objeto Role de la canalización que se usó para esta tarea no tiene permiso de lectura del bucket de Amazon S3 que contiene el archivo que desea transcodificar.
3004 No tiene permiso de escritura El rol de IAM especificado en el objeto Role de la canalización que se usó para esta tarea no tiene permiso de escritura en el bucket de Amazon S3 en el que desea guardar archivos transcodificados o de miniatura.
3005 El bucket no existe El bucket de S3 especificado no existe: bucket={1}.
3006 No tiene permiso de escritura Elastic Transcoder no pudo escribir la clave={1} en el bucket={2}, ya que no se encuentran en la misma región
4000 Archivo de entrada incorrecto El archivo que especificó en el objeto Input:Key para esta tarea está en un formato que no es compatible actualmente con Elastic Transcoder.
4001 Archivo de entrada incorrecto El ancho x alto del archivo que especificó en el objeto Input:Key para esta tarea supera el ancho x alto máximo permitido.
4002 Archivo de entrada incorrecto El tamaño de archivo del archivo que especificó en el objeto Input:Key para esta tarea supera el tamaño máximo permitido.
4003 Archivo de entrada incorrecto Elastic Transcoder no pudo interpretar el archivo que especificó en uno de los objetos Outputs:Watermarks:InputKey para esta tarea.
4004 Archivo de entrada incorrecto El ancho x alto de un archivo que especificó en uno de los objetos Outputs:Watermarks:InputKey para esta tarea supera el ancho x alto máximo permitido.
4005 Archivo de entrada incorrecto El tamaño de un archivo que especificó para uno de los objetos {1} supera el tamaño máximo permitido: bucket={2}, clave={3}, tamaño={4}, tamaño máximo={5}.
4006 Archivo de entrada incorrecto Elastic Transcoder no pudo transcodificar el archivo de entrada porque el formato no se admite.
4007 Archivo de entrada no administrado Elastic Transcoder se encontró con un tipo de archivo que suele admitirse, pero no pudo procesar el archivo correctamente. Este error abrió automáticamente un caso de soporte y hemos comenzado a investigar la causa del problema.
4008 Archivo de entrada incorrecto

La causa subyacente de este es una discrepancia entre el elemento preestablecido y el archivo de entrada. Entre los ejemplos se incluyen:

  • El elemento preestablecido incluye configuración de audio, pero el archivo de entrada carece de audio.

  • El elemento preestablecido incluye configuración de vídeo, pero el archivo de entrada carece de vídeo.

4009 Archivo de entrada incorrecto Elastic Transcoder no pudo insertar toda la carátula del álbum en el archivo de salida porque se superó el número máximo de flujos de carátula.
4010 Archivo de entrada incorrecto Elastic Transcoder no pudo interpretar el archivo de imagen que especificó para AlbumArt:Artwork:InputKey.
4011 Archivo de entrada incorrecto Elastic Transcoder detectó un flujo de carátula integrado, pero no pudo interpretarlo.
4012 Archivo de entrada incorrecto La imagen que especificó para AlbumArt:Artwork supera el ancho x alto máximo permitido: 4096 x 3072.
4013 Archivo de entrada incorrecto El ancho x alto de las carátulas integradas supera el ancho x alto máximo permitido: 4096 x 3072.
4014 Entrada incorrecta El valor que especificó para la hora de inicio de un clip está al final del archivo de entrada. Elastic Transcoder no ha podido crear un archivo de salida.
4015 Entrada incorrecta Elastic Transcoder no pudo generar un archivo de manifiesto porque los segmentos generados no coincidían.
4016 Entrada incorrecta Elastic Transcoder no pudo descifrar el archivo de entrada desde {1} mediante {2}.
4017 Entrada incorrecta La clave AES se cifró con una clave de cifrado de {2} bits. AES solo admite claves de cifrado de 128, 192 y 256 bits. MD5={1}.
4018 Entrada incorrecta Elastic Transcoder no pudo descifrar la clave cifrada con MD5={1}
4019 Entrada incorrecta Elastic Transcoder no pudo generar una clave de datos mediante el ARN de la clave de KMS {0}.
4020 Entrada incorrecta Su clave debe ser de 128 bits para el cifrado AES-128. MD5={1}, {2} bits.
4021 Entrada incorrecta Su clave debe ser de 128 bits para PlayReady DRM. MD5={1}, seguridad={2} bits.
4022 Entrada incorrecta El tamaño combinado de los archivos multimedia especificados {1} supera el tamaño máximo permitido: bucket={2}, tamaño={3}.
4023 Entrada incorrecta Los archivos de entrada {1} especificados para la concatenación no crearán una salida con una resolución coherente con el elemento preestablecido especificado. Use un elemento preestablecido con otra configuración de PaddingPolicy, SizingPolicy, MaxWidth y MaxHeight.
4024 Entrada incorrecta Los archivos de entrada {1} especificados para la concatenación no crearán miniaturas con una resolución coherente con el elemento preestablecido especificado. Use un elemento preestablecido con otra configuración de PaddingPolicy, SizingPolicy, MaxWidth y MaxHeight de miniaturas.
4025 Entrada incorrecta Al menos un archivo multimedia (input #{1}) no coincide con los otros. Todos los archivos de medios deben tener vídeo o no tenerlo.
4026 Entrada incorrecta Al menos un archivo multimedia (input #{1}) no coincide con los otros. Todos los archivos de medios deben tener audio o no tenerlo.
4100 Archivo de entrada incorrecto Elastic Transcoder detectó una pista de subtítulo integrada, pero no pudo interpretarla.
4101 Archivo de entrada incorrecto Elastic Transcoder no pudo interpretar el archivo de subtítulos especificado para el bucket de Amazon S3={1}, clave={2}.
4102 Archivo de entrada incorrecto Elastic Transcoder no pudo interpretar el archivo de subtítulos especificado, pues no estaba cifrado con UTF-8: bucket de Amazon S3={1}, clave={2}.
4103 Archivo de entrada incorrecto Elastic Transcoder no pudo procesar todas las pistas de subtítulos porque se ha superado {1}, el número máximo de pistas de subtítulos.
4104 Archivo de entrada incorrecto Elastic Transcoder no pudo generar una lista de reproducción maestra porque la salida deseada contiene {1} subtítulos integrados, cuando el máximo es 4.
4105 Archivo de entrada incorrecto Elastic Transcoder no puede integrar las pistas de subtítulos porque la velocidad de fotogramas {1} no es compatible con CEA-708: solo se admiten las velocidades de fotogramas [29.97, 30].
4106 Archivo de entrada incorrecto Elastic Transcoder no puede integrar las pistas de subtítulos porque el formato {1} solo admite {2} pistas de subtítulos.
9000 Error de servicio interno
9001 Error de servicio interno
9999 Error de servicio interno

Captura de errores

Para que la aplicación funcione sin problemas, es preciso integrar lógica que capture los errores y responda a ellos. Un enfoque habitual consiste en implementar la solicitud en un bloque try o una instrucción if-then.

Los AWS SDK llevan a cabo sus propios reintentos y comprobaciones de errores. Si se produce algún error al utilizar uno de los AWS SDK, deben aparecer su código y descripción. También debe aparecer un valor de Request ID. El valor de Request ID puede ayudarle a solucionar los problemas de compatibilidad con Elastic Transcoder.

En el siguiente ejemplo se usa AWS SDK para Java para eliminar un elemento dentro de un bloque try y usa un bloque catch para responder al error. En este caso, advierte de que se ha producido un error en la solicitud. En el ejemplo se usa la clase AmazonServiceException para recuperar información acerca de cualquier error de operación, incluido Request ID. En el ejemplo también se usa la clase AmazonClientException en caso de que la solicitud no se realice correctamente por otras razones.

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()); }

Reintentos de error y retardo exponencial

Numerosos componentes de una red, como los servidores DNS, los conmutadores o los balanceadores de carga, entre otros, pueden generar errores en cualquier punto de la vida de una solicitud determinada.

La técnica habitual para abordar estas respuestas de error en un entorno de red consiste en implementar los reintentos en la aplicación cliente. Esta técnica aumenta la confiabilidad de la aplicación y reducen los costos operativos para el desarrollador.

Cada AWS SDK que admite Elastic Transcoder implementa una lógica de reintentos automática. AWS SDK para Java reintenta automáticamente las solicitudes y le permite configurar los ajustes de reintento mediante la clase ClientConfiguration. Por ejemplo, en algunos casos, como una página web que realiza una solicitud con la mínima latencia y sin reintentos, es posible que sea conveniente desactivar la lógica de reintento. Utilice la clase ClientConfiguration y proporcione un valor de maxErrorRetry de 0 para desactivar los reintentos.

Si no utiliza un SDK de AWS, debe reintentar las solicitudes originales que reciban errores de servidor (5xx). Sin embargo, los errores de cliente (4xx, salvo las excepciones ThrottlingException o ProvisionedThroughputExceededException) indican que es preciso revisar la solicitud en sí para corregir el problema antes de volver a intentarlo.

nota

Si realiza un sondeo para determinar el estado de una solicitud y si Elastic Transcoder devuelve el código de estado HTTP 429 con un código de error de Provisioned Throughput Exceeded Exception o Throttling Exception, considere la posibilidad de usar notificaciones en lugar de realizar un sondeo para determinar el estado. Para obtener más información, consulte Notificaciones de estado de la tarea.

Además de los reintentos sencillos, recomendamos usar un algoritmo de retardo exponencial para mejorar el control de flujo. El retardo exponencial se basa en la idea de utilizar tiempos de espera progresivamente más largos entre reintentos para las respuestas a errores consecutivos. Por ejemplo, puede dejar que transcurra un segundo antes del primer reintento, cuatro antes del segundo, 16 segundos antes del tercero, y así sucesivamente. Sin embargo, si la solicitud no se ha llevado a cabo correctamente al cabo de un minuto, el problema podría radicar en un límite duro y no en la velocidad de solicitudes. Por ejemplo, es posible que se haya alcanzado el número máximo de canalizaciones permitidas. Establezca el número máximo de reintentos de modo que se detenga al cabo de un minuto.

A continuación, se incluye un flujo de trabajo que muestra la lógica de reintento. La lógica del flujo de trabajo, en primer lugar, determina si el error es un error de servidor (5xx). A continuación, si el error es un error de servidor, el código reintenta la solicitud original.

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