Economize custos e obtenha mais recursos com AWS Elemental MediaConvert
MediaConvert é um novo serviço de transcodificação de vídeo baseado em arquivos que fornece um conjunto abrangente de recursos avançados de transcodificação, com tarifas sob demanda a partir de 0,0075 USD por minuto. Leia mais
Já usa o Amazon Elastic Transcoder? É simples migrar para o. MediaConvert Para obter mais informações, consulte esta visão geral
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tratamento de erros no Elastic Transcoder
Tópicos
Quando você envia solicitações e obtém respostas da API do Elastic Transcoder, podem ocorrer dois tipos de erro de API:
-
Erros de cliente: Os erros de cliente são indicados por um código de resposta HTTP 4xx. Os erros de cliente indicam que o Elastic Transcoder encontrou um problema com a solicitação do cliente, como uma falha de autenticação ou ausência dos parâmetros necessários. Corrija primeiro o problema no aplicativo cliente para enviar a solicitação novamente.
-
Erros de servidor: Os erros de servidor são exibidos por um código de resposta HTTP 5xx e precisam ser solucionados pela Amazon. Você pode enviar a solicitação novamente até ter êxito.
Para cada erro de API, o Elastic Transcoder retorna os seguintes valores:
-
Um código de status, por exemplo,
400
-
Um código de erro, por exemplo,
ValidationException
-
Uma mensagem de erro, por exemplo,
Supplied AttributeValue is empty, must contain exactly one of the supported datatypes
Para obter uma lista de códigos de erro que o Elastic Transcoder retorna para clientes e servidores, consulte Códigos de erro de API (erros de cliente e servidor).
Além disso, você pode encontrar erros enquanto o Elastic Transcoder está processando seu trabalho. Para obter mais informações, consulte Erros durante o processamento do trabalho.
Códigos de erro de API (erros de cliente e servidor)
Os códigos de status HTTP indicam se uma operação foi ou não bem-sucedida.
Um código de resposta de 200
indica que a operação teve êxito. Outros códigos de erro indicam um erro de cliente (4xx) ou um erro de servidor (5xx).
A tabela a seguir relaciona erros retornados pelo Elastic Transcoder. Alguns erros são resolvidos simplesmente tentando enviar novamente a mesma solicitação. A tabela indica quais erros tendem a ser solucionados com novas tentativas sucessivas. Se o valor da coluna Tentar novamente:
-
Sim: Envie a mesma solicitação novamente.
-
Não: Corrija o problema no cliente primeiro para enviar uma nova solicitação.
Para mais informações sobre enviar novamente uma mesma solicitação, consulte Repetições de erro e recuo exponencial.
Código de status HTTP | Código de erro | Message | Causa | Tentar novamente |
---|---|---|---|---|
400 | Conditional Check Failed Exception | The conditional request failed. | Exemplo: O valor esperado não correspondeu com o que foi armazenado no sistema. | Não |
400 | Incomplete Signature Exception | The request signature does not conform to AWS standards. | A assinatura na solicitação não incluiu todos os componentes necessários. Consulte Conteúdo de cabeçalho HTTP. | Não |
403 | Missing Authentication Token Exception | The request must contain a valid (registered) AWS Access Key ID. | A solicitação não incluiu o x-amz-security-token necessário. Consulte Faze4r solicitações HTTP para o Elastic Transcoder. |
Não |
400 | Validation Exception | Diversas. | Um ou mais valores em uma solicitação estavam faltando ou eram inválidos; por exemplo, um valor estava vazio ou era superior ao valor válido máximo. | Não |
403 | AccessDenied Exception |
|
Você tentou excluir uma predefinição de sistema, a assinatura em uma chamada à API do Elastic Transcoder era inválida ou um usuário não tem autorização para executar a operação. |
Não |
404 | ResourceNot Found Exception |
|
Exemplo: o pipeline ao qual você está tentando adicionar um novo trabalho não existe ou ainda está sendo criado. | Não |
409 | Resource InUse Exception |
|
Exemplo: você tentou excluir um pipeline que está sendo usado no momento. | Não |
429 | Limit Exceeded Exception |
|
A atual conta da AWS atual excedeu limites nos objetos do Elastic Transcoder. Para obter mais informações, consulte Limites de número de pipelines, trabalhos e predefinições do Elastic Transcoder . | |
429 | Provisioned Throughput Exceeded Exception | You exceeded your maximum allowed provisioned throughput. |
Exemplo: Sua taxa de solicitação é muito alta. Os SDKs da AWS para o Elastic Transcoder tentam automaticamente novas solicitações para receber essa exceção. Sua solicitação em algum momento terá êxito, a menos que a fila de novas tentativas seja muito grande para concluir. Reduza a frequência de solicitações. Para obter mais informações, consulte Repetições de erro e recuo exponencial. Se você estiver sondando para determinar o status de uma solicitação, considere o uso de notificações para determinar o status. Para obter mais informações, consulte Notificações de status de trabalho. |
Sim |
429 | Throttling Exception | Rate of requests exceeds the allowed throughput. |
Você está enviando as solicitações muito rapidamente; por exemplo, solicitações para criar novos trabalhos. Se você estiver sondando para determinar o status de uma solicitação, considere o uso de notificações para determinar o status. Para obter mais informações, consulte Notificações de status de trabalho. |
Sim |
500 | Internal Failure | The server encountered an internal error trying to fulfill the request. | O servidor encontrou um erro ao processar sua solicitação. | Sim |
500 | Internal Server Error | The server encountered an internal error trying to fulfill the request. | O servidor encontrou um erro ao processar sua solicitação. | Sim |
500 | Internal Service Exception | The service encountered an unexpected exception while trying to fulfill the request. | Sim | |
500 | Service Unavailable Exception | The service is currently unavailable or busy. | Houve um erro inesperado no servidor ao processar sua solicitação. | Sim |
Resposta de erro de exemplo
A seguir é apresentada uma resposta HTTP que indica que o valor para inputBucket
era nulo, e nulo não é um 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"}
Erros durante o processamento do trabalho
Quando o Elastic Transcoder encontra um erro ao processar seu trabalho, ele relata o erro de duas formas:
-
Status do trabalho e da saída: o Elastic Transcoder define o objeto
Outputs:Status
e o objetoJob:Status
para a saída com falha comoError
. Além disso, o Elastic Transcoder define o objeto JSONOutputs:StatusDetail
da saída com falha como um valor que explica a falha. -
Notificação do SNS: se você configurou o pipeline para enviar uma notificação do SNS quando o Elastic Transcoder encontrar um erro durante o processamento, o Elastic Transcoder incluirá um objeto JSON na notificação no seguinte 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 |
---|---|---|
1000 | Erro de validação | Ao processar o trabalho, o Elastic Transcoder determinou que um ou mais valores na solicitação eram inválidos. |
1001 | Erro de dependência | O Elastic Transcoder não conseguiu gerar a lista de reprodução porque encontrou um erro com uma ou mais dependências de listas de reprodução. |
2000 | Não é possível assumir a função | O Elastic Transcoder não pode assumir a função do AWS Identity and Access Management especificada no objeto Role no pipeline deste trabalho. |
3000 | Erro de armazenamento não classificado | |
3001 | A entrada não existe | Não existe nenhum arquivo com o nome especificado no objeto Input:Key deste trabalho. O arquivo deve existir no bucket do Amazon S3 especificado no objeto InputBucket no pipeline deste trabalho. |
3002 | A saída já existe | Já existe um arquivo com o nome que você especificou no objeto Outputs:Key (ou Output:Key ) deste trabalho. O arquivo não pode existir no bucket do Amazon S3 especificado no objeto OutputBucket no pipeline deste trabalho. |
3003 | Não tem permissão de leitura | A função do IAM especificada no objeto Role no pipeline usado para este trabalho não tem permissão para ler a partir do bucket do Amazon S3 que contém o arquivo que você deseja transcodificar. |
3004 | Não tem permissão de gravação | A função do IAM especificada no objeto Role no pipeline usado para este trabalho não tem permissão para gravar no bucket do Amazon S3 no qual você deseja salvar arquivos transcodificados ou arquivos de miniaturas. |
3005 | O bucket não existe | O bucket do S3 especificado não existe: bucket={1}. |
3006 | Não tem permissão de gravação | O Elastic Transcoder não foi capaz de gravar a key={1} no bucket={2}, pois a chave não está na mesma região que o bucket |
4000 | Arquivo de entrada inválido | O arquivo que você especificou no objeto Input:Key deste trabalho está em um formato que atualmente não é compatível com o Elastic Transcoder. |
4001 | Arquivo de entrada inválido | A largura x altura do arquivo que você especificou no objeto Input:Key deste trabalho excede a largura x altura máxima permitida. |
4002 | Arquivo de entrada inválido | O tamanho do arquivo que você especificou no objeto Input:Key deste trabalho excede o tamanho máximo permitido. |
4003 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu interpretar o arquivo que você especificou em um dos objetos Outputs:Watermarks:InputKey deste trabalho. |
4004 | Arquivo de entrada inválido | A largura x altura de um arquivo que você especificou em um dos objetos Outputs:Watermarks:InputKey deste trabalho excede a largura x altura máxima permitida. |
4005 | Arquivo de entrada inválido | O tamanho de um arquivo que você especificou para um dos objetos {1} excede o tamanho máximo permitido: bucket={2}, key={3}, size{4}, max size={5}. |
4006 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu transcodificar o arquivo de entrada porque o formato não é compatível |
4007 | Arquivo de entrada não processado | O Elastic Transcoder encontrou um tipo de arquivo que geralmente é compatível, mas não foi capaz de processar o arquivo corretamente. Este erro abriu automaticamente um caso de suporte, e começamos a pesquisar a causa do problema. |
4008 | Arquivo de entrada inválido |
A causa subjacente é uma incompatibilidade entre a predefinição e o arquivo de entrada. Os exemplos incluem:
|
4009 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu inserir todas as suas artes do álbum no arquivo de saída porque você excedeu o número máximo de fluxos de arte. |
4010 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu interpretar o arquivo gráfico que você especificou para AlbumArt:Artwork:InputKey . |
4011 | Arquivo de entrada inválido | O Elastic Transcoder detectou um fluxo de arte incorporado, mas não conseguiu interpretá-lo. |
4012 | Arquivo de entrada inválido | A imagem que você especificou para AlbumArt:Artwork excede a largura x altura máxima permitida: 4096 x 3072. |
4013 | Arquivo de entrada inválido | A largura x altura da arte incorporada excede a largura x altura máxima permitida: 4096 x 3072. |
4014 | Entrada inválida | O valor que você especificou para a hora de início de um clipe é posterior ao término do arquivo de entrada. O Elastic Transcoder não conseguiu criar um arquivo de saída. |
4015 | Entrada inválida | O Elastic Transcoder não conseguiu gerar um arquivo manifesto porque os segmentos gerados não eram correspondentes. |
4016 | Entrada inválida | O Elastic Transcoder não conseguiu descriptografar o arquivo de entrada em {1} usando {2}. |
4017 | Entrada inválida | A chave AES foi criptografada com uma chave de criptografia de {2} bits. AES suporta apenas chaves de criptografia de 128, 192 e 256 bits. MD5={1}. |
4018 | Entrada inválida | O Elastic Transcoder não conseguiu descriptografar a chave cifrada com MD5={1} |
4019 | Entrada inválida | O Elastic Transcoder não conseguiu gerar uma chave de dados usando o ARN da chave do KMS {0}. |
4020 | Entrada inválida | Sua chave deve ter 128 bits para criptografia AES-128. MD5={1}, {2} bits. |
4021 | Entrada inválida | Sua chave deve ter 128 bits para PlayReady DRM. MD5={1}, strength={2} bits. |
4022 | Entrada inválida | O tamanho total dos {1} arquivos de mídia especificados excede o tamanho máximo permitido: bucket={2}, size={3}. |
4023 | Entrada inválida | Os {1} arquivos de entrada especificados para concatenação não criarão uma saída com uma resolução consistente com a predefinição especificada. Use uma predefinição com diferentes configurações de PaddingPolicy , SizingPolicy , MaxWidth e MaxHeight . |
4024 | Entrada inválida | Os {1} arquivos de entrada especificados para concatenação não criarão miniaturas com uma resolução consistente com a predefinição especificada. Use uma predefinição com diferentes configurações de miniatura PaddingPolicy , SizingPolicy , MaxWidth e MaxHeight . |
4025 | Entrada inválida | Pelo menos um arquivo de mídia (entrada #{1}) não corresponde aos outros. Todos os arquivos de mídia devem ter vídeo ou nenhum vídeo. |
4026 | Entrada inválida | Pelo menos um arquivo de mídia (entrada #{1}) não corresponde aos outros. Todos os arquivos de mídia devem ter áudio ou nenhum áudio. |
4100 | Arquivo de entrada inválido | O Elastic Transcoder detectou uma trilha de legendas incorporada, mas não conseguiu interpretá-la. |
4101 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu interpretar o arquivo de legenda especificado para o bucket do Amazon S3={1}, key={2}. |
4102 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu interpretar o arquivo de legenda especificado, pois ele não tinha codificação UTF-8: bucket do Amazon S3={1}, key={2}. |
4103 | Arquivo de entrada inválido | O Elastic Transcoder não foi capaz de processar todas as trilhas de legenda porque você excedeu {1}, o número máximo de trilhas de legenda. |
4104 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu gerar uma lista de reprodução principal porque a saída desejada contém {1} legendas incorporadas, quando o máximo é 4. |
4105 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu incorporar as trilhas de legenda porque a taxa de quadros {1} não é compatível com a CEA-708. Apenas taxas de quadros [29,97, 30] são compatíveis. |
4106 | Arquivo de entrada inválido | O Elastic Transcoder não conseguiu incorporar as trilhas de legenda porque o formato {1} oferece suporte apenas a trilhas de legenda {2}. |
9000 | Erro de serviço interno | |
9001 | Erro de serviço interno | |
9999 | Erro de serviço interno |
Identificação de erros
Para que seu aplicativo seja executado consistentemente, você precisa criar uma lógica para identificar erros e responder. Uma postura comum é implementar sua solicitação em um bloco try
ou em uma declaração if-then
.
Os SDKs da AWS realizam por conta própria novas tentativas e verificação de erros. Se você encontrar um erro ao usar um dos SDKs da AWS, provavelmente verá o código de erro e a descrição. Provavelmente você verá também o valor Request ID
. O valor Request ID
pode ajudar a resolver problemas junto ao suporte do Elastic Transcoder.
O exemplo a seguir usa o AWS SDK para Java para excluir um item em um bloco try
e usa um bloco catch
para responder ao erro. Nesse caso, ele informa que a solicitação falhou. O exemplo usa a classe AmazonServiceException
para recuperar informações sobre quaisquer erros de operação, incluindo o Request ID
. O exemplo também usa a classe AmazonClientException
caso a solicitação não seja bem-sucedida por outros motivos.
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()); }
Repetições de erro e recuo exponencial
Vários componentes em uma rede, como servidores DNS, switches, balanceadores de carga e outros, podem gerar erros em qualquer lugar do ciclo de vida de determinada solicitação.
A técnica usual para lidar com essas respostas de erro em um ambiente de rede é implementar novas tentativas no aplicativo cliente. Essa técnica aumenta a confiabilidade do aplicativo e reduz os custos operacionais para o desenvolvedor.
Todo AWS SDK compatível com o Elastic Transcoder implementa a lógica de novas tentativas automáticas. O AWS SDK para Java tentará realizar novas tentativas de solicitação automaticamente. Você pode definir as configurações de novas tentativas usando a classe ClientConfiguration
. Por exemplo, em alguns casos, como uma página web que faz uma solicitação com latência mínima sem novas tentativas, você pode querer desativar a lógica de novas tentativas. Use a classe ClientConfiguration
e forneça um valor maxErrorRetry
de 0
para desativar as novas tentativas.
Se não estiver usando um SDK da AWS;, você deve tentar novamente as solicitações originais que recebem erros do servidor (5xx). No entanto, erros de cliente (4xx, diferente de ThrottlingException
ou ProvisionedThroughputExceededException
) indicam que você precisa revisar a solicitação para corrigir o problema antes de tentar novamente.
nota
Se você estiver fazendo a sondagem para determinar o status de uma solicitação, e se o Elastic Transcoder estiver retornando o código de status HTTP 429 com um código de erro Provisioned Throughput Exceeded
Exception
ou Throttling Exception
, considere o uso de notificações em vez de sondagem para determinar o status. Para obter mais informações, consulte Notificações de status de trabalho.
Além de novas tentativas simples, é recomendável usar um algoritmo de recuo exponencial para um melhor controle de fluxo. A ideia por trás do backoff exponencial é usar esperas progressivamente mais longas entre as novas tentativas para respostas de erro consecutivas. Por exemplo, você pode permitir um lapso de 1 segundo antes da primeira nova tentativa, 4 segundos antes da segunda nova tentativa, 16 segundos antes da terceira nova tentativa, e assim por diante. Contudo, se a solicitação não tiver êxito após um minuto, o problema talvez seja um limite fixo e não a taxa de solicitação. Por exemplo, você pode ter atingido o número máximo permitido de pipelines. Defina um tempo de interrupção de cerca de um minuto para o número máximo de novas tentativas.
Veja a seguir um fluxo de trabalho mostrando a lógica de novas tentativas. A lógica de fluxo de trabalho primeiro determina se o erro é um erro de servidor (5xx). Em seguida, se o erro for um erro de servidor, o código repetirá a solicitação 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