

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
<a name="error-handling"></a>

 Esta seção descreve erros de runtime e como lidar com eles. Ele também descreve mensagens de erro e códigos específicos do Amazon Rekognition.

**Topics**
+ [Componentes de erros](#error-handling.Components)
+ [Mensagens e códigos de erro](#error-handling.MessagesAndCodes)
+ [Tratamento de erros na aplicação](#error-handling.Handling)

## Componentes de erros
<a name="error-handling.Components"></a>

Quando seu programa envia uma solicitação, o Amazon Rekognition tenta processá-la. Se a solicitação for bem-sucedida, o Amazon Rekognition retornará um código HTTP de status de sucesso (`200 OK`), junto com os resultados da operação solicitada.

Se a solicitação não for bem-sucedida, o Amazon Rekognition retornará um erro. Cada erro tem três componentes: 
+ Um código de status HTTP (como `400`).
+ Um nome de exceção (como `InvalidS3ObjectException`).
+ Uma mensagem de erro (como `Unable to get object metadata from S3. Check object key, region and/or access permissions.`).

A AWS SDKs cuida da propagação de erros para seu aplicativo, para que você possa tomar as medidas apropriadas. Por exemplo, em um programa Java, você pode escrever a lógica `try-catch` para lidar com um `ResourceNotFoundException`.

Se você não estiver usando um SDK da AWS, precisará analisar o conteúdo da resposta de baixo nível do Amazon Rekognition. Veja a seguir um exemplo dessa resposta:

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

## Mensagens e códigos de erro
<a name="error-handling.MessagesAndCodes"></a>

A seguir está uma lista de exceções que o Amazon Rekognition retorna, agrupadas por código de status HTTP. Se *OK para tentar novamente?* for *Sim*, você poderá enviar a mesma solicitação novamente. Se *OK to retry? (OK tentar novamente?)* for *No (Não)*, você deverá corrigir o problema no lado do cliente antes de enviar uma nova solicitação.

### Código de status HTTP 400
<a name="error-handling.MessagesAndCodes.http400"></a>

Um código de status HTTP `400` indica um problema com sua solicitação. Alguns exemplos de problemas são falha de autenticação, parâmetros necessários que estão ausentes ou excedem a throughput provisionada de uma operação. Será necessário corrigir o problema no aplicativo antes de enviar a solicitação novamente.

**AccessDeniedException **  
Mensagem: *Ocorreu um erro (AccessDeniedException) ao chamar a operação: Usuário: não está autorizado a realizar: no recurso:.* <Operation><User ARN><Operation><Resource ARN>  
Você não está autorizado a executar a ação. Use o nome de recurso da Amazon (ARN) de um usuário autorizado ou a função do IAM para executar a operação.  
OK para tentar novamente? Não

**GroupFacesInProgressException **  
Mensagem: *Falha ao agendar GroupFaces o trabalho. Existe um grupo existente para trabalhar nesta coleção.*  
Tentar novamente a operação depois que a tarefa existente for concluída.  
OK para tentar novamente? Não

**IdempotentParameterMismatchException **  
Mensagem: *O ClientRequestToken: que você forneceu já está em uso.* <Token>  
Um parâmetro ClientRequestToken de entrada foi reutilizado com uma operação, mas pelo menos um dos outros parâmetros de entrada é diferente da chamada anterior para a operação.  
OK para tentar novamente? Não

**ImageTooLargeException **  
Mensagem: *O tamanho da imagem é muito grande.*  
O tamanho da imagem de entrada excede o limite permitido. Se você estiver ligando [DetectProtectiveEquipment](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectProtectiveEquipment.html), o tamanho ou a resolução da imagem excede o limite permitido. Para obter mais informações, consulte [Diretrizes e cotas no Amazon Rekognition](limits.md).  
OK para tentar novamente? Não

**InvalidImageFormatException **  
Mensagem: *A solicitação tem um formato de imagem inválido.*  
O formato da imagem fornecida não tem suporte. Use um formato de imagem com suporte (.JPEG e .PNG). Para obter mais informações, consulte [Diretrizes e cotas no Amazon Rekognition](limits.md).  
OK para tentar novamente? Não

**InvalidPaginationTokenException **  
Mensagens  
+ *Token inválido*
+ *Token de paginação inválido*
O token de paginação na solicitação não é válido. O token pode ter expirado.   
OK para tentar novamente? Não 

**InvalidParameterException **  
Mensagem: *A solicitação tem parâmetros inválidos.*  
Um parâmetro de entrada violou uma restrição. Valide seus parâmetros antes de chamar a operação de API novamente.  
OK para tentar novamente? Não

**Inválido S3 ObjectException **  
Mensagens:  
+ *A solicitação tem um objeto do S3 inválido.*
+ *Não é possível obter metadados do objeto do S3. Verifique a chave do objeto, as permissões de and/or acesso à região.*
O Amazon Rekognition não consegue acessar o objeto S3 que foi especificado na solicitação. Para obter mais informações, consulte [Configurar o acesso ao S3: gerenciamento de acesso do AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). Para obter informações sobre a solução de problemas, consulte [Solução de problemas do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/troubleshooting.html).  
OK para tentar novamente? Não

**LimitExceededException **  
Mensagens:  
+ *Limite do processador de fluxo excedido para a conta, limite - <Limite atual>.*
+ * <Número de trabalhos abertos> trabalhos abertos para o usuário <ARN do usuário> Limite máximo: <Limite máximo>*
Um limite do serviço Amazon Rekognition foi excedido. Por exemplo, se você iniciar muitas tarefas do Amazon Rekognition Video simultaneamente, chamadas para iniciar operações, como `StartLabelDetection`, gerarão uma exceção `LimitExceededException` (código de status HTTP): 400) até que o número de trabalhos em execução simultânea fique abaixo do limite do serviço Amazon Rekognition.  
OK para tentar novamente? Não

**ProvisionedThroughputExceededException **  
Mensagens:  
+ *Taxa provisionada excedida.*
+ *Limite de download do S3 excedido.*
O número de solicitações excedeu o limite da throughput. Para obter mais informações, consulte [Limites do Amazon Rekognition Service](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_rekognition).  
Para solicitar um aumento de limite, siga as instruções em [Crie um caso para alterar as cotas de TPS](limits.md#quotas-create-case).  
OK para tentar novamente? Sim

**ResourceAlreadyExistsException **  
Mensagem: *O ID da coleção: <ID da coleção> já existe.*  
 Uma coleção com o ID especificado já existe.  
OK para tentar novamente? Não

**ResourceInUseException **  
Mensagens:  
+ *O nome do processador de fluxo já está em uso.*
+ *O recurso especificado está em uso.*
+ * Processador não disponível para interromper fluxo.*
+ *Não é possível excluir o processador de fluxo.*
Tente novamente quando o recurso estiver disponível.  
OK para tentar novamente? Não

**ResourceNotFoundException **  
Mensagem: várias mensagens dependendo da chamada de API.  
O recurso especificado não existe.  
OK para tentar novamente? Não

**ThrottlingException **  
Mensagem: *Diminua o ritmo; súbito aumento na taxa de solicitações.*  
O aumento da taxa de solicitações está muito rápido. Diminua o ritmo e aumente gradualmente a taxa de solicitações. Recomendamos que você recue exponencialmente e tente novamente. Por padrão, eles AWS SDKs usam a lógica de repetição automática e o recuo exponencial. Para obter mais informações, consulte [Novas tentativas e recuo exponencial na AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) e [Recuo exponencial e variação](http://www.awsarchitectureblog.com/2015/03/backoff.html).   
OK para tentar novamente? Sim

**VideoTooLargeException **  
Mensagem: *O tamanho do vídeo em bytes: <Tamanho do vídeo> é maior que o limite máximo de: <Tamanho máximo> bytes.*  
O tamanho do arquivo ou a duração da mídia fornecida é muito grande. Para obter mais informações, consulte [Diretrizes e cotas no Amazon Rekognition](limits.md).  
OK para tentar novamente? Não

### Código de status HTTP 5xx
<a name="error-handling.MessagesAndCodes.http5xx"></a>

Um código de status HTTP `5xx` indica um problema que deve ser resolvido pela AWS. Isso pode ser um erro temporário. Se for, você pode tentar fazer a solicitação novamente até que ela tenha êxito. Caso contrário, acesse o [Painel de Status de Serviços da AWS](https://status.aws.amazon.com/) para ver se há problemas operacionais com o serviço.

**InternalServerError (HTTP 500) **  
Mensagem: *Erro interno do servidor*  
O Amazon Rekognition teve um problema de serviço. Tente fazer a chamada novamente. Recue exponencialmente e tente novamente. Por padrão, eles AWS SDKs usam a lógica de repetição automática e o recuo exponencial. Para obter mais informações, consulte [Novas tentativas e recuo exponencial na AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) e [Recuo exponencial e variação](http://www.awsarchitectureblog.com/2015/03/backoff.html).  
OK para tentar novamente? Sim

**ThrottlingException (HTTP 500)**  
Mensagem: *Serviço indisponível*  
O Amazon Rekognition está temporariamente indisponível para processar a solicitação. Tente fazer a chamada novamente. Recomendamos que você recue exponencialmente e tente novamente. Por padrão, eles AWS SDKs usam a lógica de repetição automática e o recuo exponencial. Para obter mais informações, consulte [Novas tentativas e recuo exponencial na AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) e [Recuo exponencial e variação](http://www.awsarchitectureblog.com/2015/03/backoff.html).   
OK para tentar novamente? Sim

## Tratamento de erros na aplicação
<a name="error-handling.Handling"></a>

Para que seu aplicativo seja executado consistentemente, é necessário adicionar uma lógica para detectar erros e responder a eles. As abordagens comuns incluem o uso de blocos `try-catch` ou de uma instrução `if-then`.

A AWS SDKs realiza suas próprias tentativas e verificações de erros. Se você encontrar um erro ao usar uma das AWS SDKs, o código e a descrição do erro podem ajudá-lo a solucioná-lo. 

Você também deve ver um `Request ID` na resposta. O `Request ID` pode ser útil se você precisa trabalhar com o AWS Support para diagnosticar um problema.

O trecho de código Java a seguir tenta detectar objetos em uma imagem e faz um tratamento de erro rudimentar. (Nesse caso, ele simplesmente informa ao usuário que houve falha na solicitação.) 

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

Neste trecho de código, o construtor `try-catch` lida com dois tipos diferentes de exceções:
+ `AmazonRekognitionException` — Essa exceção ocorre se a solicitação do cliente foi transmitida corretamente para o Amazon Rekognition, mas o Amazon Rekognition não conseguiu processar a solicitação e, em vez disso, retornou uma resposta de erro.
+ `AmazonClientException` — Essa exceção ocorre se o cliente não conseguiu obter uma resposta de um serviço ou se o cliente não conseguiu analisar a resposta de um serviço.