Tratamento de erros - Amazon Rekognition

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

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.

Componentes de erros

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.).

Os SDKs da AWS cuidam da propagação de erros para o 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 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

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 <Operação>: Usuário: <ARN do usuário> não está autorizado a executar: <Operação> no recurso: <ARN do recurso>

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 o trabalho do GroupFaces. 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: <Token> fornecido já está em uso.

Um parâmetro de entrada ClientRequestToken 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 chamando DetectProtectiveEquipment, o tamanho ou a resolução da imagem excederá o limite permitido. Para obter mais informações, consulte Diretrizes e cotas no Amazon Rekognition.

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.

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

InvalidS3ObjectException

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, a região e/ou as permissões de acesso.

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. Para obter informações sobre a solução de problemas, consulte Solução de problemas do Amazon S3.

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.

Para solicitar um aumento de limite, siga as instruções em Crie um caso para alterar as cotas de TPS.

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, os AWS SDKs usam uma lógica de novas tentativas automáticas e de recuo exponencial. Para obter mais informações, consulte Novas tentativas e recuo exponencial na AWS e Recuo exponencial e variação.

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.

OK para tentar novamente? Não

Código de status HTTP 5xx

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 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, os AWS SDKs usam uma lógica de novas tentativas automáticas e de recuo exponencial. Para obter mais informações, consulte Novas tentativas e recuo exponencial na AWS e Recuo exponencial e variação.

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, os AWS SDKs usam uma lógica de novas tentativas automáticas e de recuo exponencial. Para obter mais informações, consulte Novas tentativas e recuo exponencial na AWS e Recuo exponencial e variação.

OK para tentar novamente? Sim

Tratamento de erros na aplicação

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.

Os SDKs da AWS realizam por conta própria novas tentativas e verificação de erros. Se você se deparar com um erro enquanto usa um dos SDKs da AWS, o código de erro e sua descrição poderão ajudar 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.