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.
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
Temas
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 |
|
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 |
|
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 |
|
Ejemplo: Ha intentado eliminar una canalización que se encuentra en uso. | No |
429 | Limit Exceeded Exception |
|
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. |
Sí |
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. |
Sí |
500 | Internal Failure | The server encountered an internal error trying to fulfill the request. | El servidor ha detectado un error al procesar la solicitud. | Sí |
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. | Sí |
500 | Internal Service Exception | El servicio detectó una excepción inesperada al intentar cumplir la solicitud. | Sí | |
500 | Service Unavailable Exception | The service is currently unavailable or busy. | Se ha producido un error inesperado en el servidor al procesar la solicitud. | Sí |
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 objetoOutputs:Status
para la salida errónea enError
. Además, Elastic Transcoder establece el objeto JSONOutputs: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:
|
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