Gestione degli errori - Amazon Rekognition

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione degli errori

Questa sezione descrive gli errori di runtime e come gestirli. Descrive inoltre i messaggi di errore e i codici specifici di Amazon Rekognition.

Componenti degli errori

Quando il tuo programma invia una richiesta, Amazon Rekognition tenta di elaborarla. Se la richiesta ha esito positivo, Amazon Rekognition restituisce un codice di stato HTTP di successo (200 OK), insieme ai risultati dell'operazione richiesta.

Se la richiesta non va a buon fine, Amazon Rekognition restituisce un errore. Ogni errore comprende tre componenti:

  • Un codice di stato HTTP (ad esempio, 400).

  • Un nome di eccezione (ad esempio, InvalidS3ObjectException).

  • Un messaggio di errore (ad esempio Unable to get object metadata from S3. Check object key, region and/or access permissions.).

Gli SDK AWS si occupano della propagazione degli errori alla tua applicazione per consentirti di prendere le misure appropriate. Ad esempio, in un programma Java puoi scrivere logica try-catch per gestire un errore ResourceNotFoundException.

Se non utilizzi un SDK AWS, devi analizzare il contenuto della risposta di basso livello di Amazon Rekognition. Di seguito è riportato un esempio di tale risposta:

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

Messaggi e codici di errore

Di seguito è riportato un elenco di eccezioni restituite da Amazon Rekognition, raggruppate per codice di stato HTTP. Se OK to retry? (OK riprovare?) è Yes (Sì), puoi inviare nuovamente la stessa richiesta. Se OK to retry? (OK riprovare?) è No, è necessario risolvere il problema sul lato client prima di inviare una nuova richiesta.

Codice di stato HTTP 400

Un codice di stato HTTP 400 indica un problema con la richiesta. Alcuni esempi di problemi sono l'errore di autenticazione, i parametri richiesti mancanti o il superamento della velocità effettiva prevista di un'operazione. È necessario risolvere il problema nella tua applicazione prima di inviare nuovamente la richiesta.

AccessDeniedException

Messaggio:Si è verificato un errore (AccessDeniedException) quando si chiama l'<Operation>operazione: L'utente: <User ARN>non è autorizzato a eseguire: <Operation>sulla risorsa:<Resource ARN>.

Non sei autorizzato a eseguire l'operazione. Utilizzare l'ARN (Amazon Resource Name) di un utente autorizzato o un ruolo IAM per eseguire l'operazione.

OK riprovare? No

GroupFacesInProgressException

Messaggio:Pianificazione non riuscitaGroupFaceslavoro. Esiste un gruppo di facce job per questa raccolta.

Riprova l'operazione al termine del processo esistente.

OK riprovare? No

IdempotentParameterMismatchException

Messaggio:LaClientRequestToken: <Token>che hai fornito è già in uso.

UNClientRequestTokenil parametro di input è stato riutilizzato con un'operazione, ma almeno uno degli altri parametri di input è diverso dalla precedente chiamata all'operazione.

OK riprovare? No

ImageTooLargeException

Messaggio: L'immagine è troppo grande.

La dimensione dell'immagine di input supera il limite consentito. Se stai chiamandoDetectProtectiveEquipment, la dimensione o la risoluzione dell'immagine superano il limite consentito. Per ulteriori informazioni, consulta Linee guida e quote in Amazon Rekognition.

OK riprovare? No

InvalidImageFormatException

Messaggio: La richiesta ha un formato di immagine non valido.

Il formato di immagine fornito non è supportato. Utilizza un formato di immagine supportato (.JPEG e.PNG). Per ulteriori informazioni, consulta Linee guida e quote in Amazon Rekognition.

OK riprovare? No

InvalidPaginationTokenException

Messaggi

  • Token non valido

  • Token di paginazione non valido

Il token di paginazione della richiesta non è valido. Il token potrebbe essere scaduto.

OK riprovare? No

InvalidParameterException

Messaggio: La richiesta ha parametri non validi.

Un parametro di input ha violato un vincolo. Convalida i parametri prima di chiamare nuovamente l'operazione API.

OK riprovare? No

Non validi 3ObjectException

Messaggi:

  • La richiesta ha un oggetto S3 non valido.

  • Impossibile ottenere i metadati degli oggetti da S3. Controlla la chiave dell'oggetto, la regione e/o le autorizzazioni di accesso.

Amazon Rekognition non è in grado di accedere all'oggetto S3 specificato nella richiesta. Per ulteriori informazioni, consulta Gestione delle autorizzazioni di accesso alle risorse di Amazon S3. Per informazioni sulla risoluzione dei problemi, consulta Risoluzione dei problemi di Amazon S3.

OK riprovare? No

LimitExceededException

Messaggi:

  • Limite del processore di flusso superato per l'account, limite - <Limite corrente>.

  • <Numero di processi aperti> processi aperti per l'utente <ARN dell'utente> Limite massimo: <Limite massimo>

È stato superato il limite del servizio Amazon Rekognition. Ad esempio, se avvii troppi processi Amazon Rekognition Video contemporaneamente, chiami per avviare operazioni, ad esempioStartLabelDetection, solleva unLimitExceededExceptioneccezione (codice di stato HTTP: 400) fino a quando il numero di processi in esecuzione simultanea non è inferiore al limite del servizio Amazon Rekognition.

OK riprovare? No

ProvisionedThroughputExceededException

Messaggi:

  • Velocità assegnata superata.

  • Limite di download S3 superato.

Il numero di richieste ha superato il limite di throughput. Per ulteriori informazioni, vedereLimiti del servizio Amazon Rekognition.

Per richiedere un aumento del limite, segui le istruzioni all'indirizzoCrea un caso per modificare le quote TPS.

OK riprovare? Sì

ResourceAlreadyExistsException

Messaggio: L'ID raccolta: <ID raccolta> esiste già.

Una collezione con l'ID specificato esiste già.

OK riprovare? No

ResourceInUseException

Messaggi:

  • Nome del processore di flussi già in uso.

  • La risorsa specificata è in uso.

  • Il processore non è disponibile per l'arresto del flusso.

  • Impossibile eliminare il processore di flussi.

Riprova quando la risorsa è disponibile.

OK riprovare? No

ResourceNotFoundException

Messaggio: Vari messaggi a seconda della chiamata API.

La risorsa specificata non esiste.

OK riprovare? No

ThrottlingException

Messaggio: Rallenta per improvviso aumento del numero di richieste.

La velocità di aumento delle richieste è troppo elevata. Rallenta e aumenta gradualmente la velocità delle richieste. Consigliamo di eseguire il backoff esponenziale e ripetizione dei tentativi. Per impostazione predefinita, gli SDK AWS utilizzano la logica della ripetizione automatica dei tentativi e il backoff esponenziale. Per ulteriori informazioni, consulta Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS e l'argomento relativo al backoff esponenziale e jitter.

OK riprovare? Sì

VideoTooLargeException

Messaggio: Le dimensioni del video in byte <Dimensione Video> superano il limite massimo di <Dimensioni massime> byte.

La dimensione del file o la durata del supporto fornito è troppo grande. Per ulteriori informazioni, consulta Linee guida e quote in Amazon Rekognition.

OK riprovare? No

Codice di stato HTTP 5xx

Un codice di stato HTTP 5xx indica un problema che deve essere risolto da AWS. Potrebbe trattarsi di un errore temporaneo. In questo caso, è possibile riprovare la richiesta finché non va a buon fine. In caso contrario, accedi al Pannello di controllo per lo stato dei servizi AWS per verificare se ci sono problemi operativi relativi al servizio.

InternalServerError(HTTP 500)

Messaggio: Errore interno del server

Amazon Rekognition ha riscontrato un problema del servizio. Riprova la chiamata. Dovresti eseguire il backoff esponenziale e riprovare. Per impostazione predefinita, gli SDK AWS utilizzano la logica della ripetizione automatica dei tentativi e il backoff esponenziale. Per ulteriori informazioni, consulta Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS e l'argomento relativo al backoff esponenziale e jitter.

OK riprovare? Sì

ThrottlingException(HTTP 500)

Messaggio: Servizio non disponibile

Amazon Rekognition non è temporaneamente in grado di elaborare la richiesta. Riprova la chiamata. Consigliamo di eseguire il backoff esponenziale e ripetizione dei tentativi. Per impostazione predefinita, gli SDK AWS utilizzano la logica della ripetizione automatica dei tentativi e il backoff esponenziale. Per ulteriori informazioni, consulta Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS e l'argomento relativo al backoff esponenziale e jitter.

OK riprovare? Sì

Gestione degli errori nell'applicazione

Per il buon funzionamento dell'applicazione devi aggiungere logica che intercetti gli errori e risponda adeguatamente. Gli approcci tipici includono l'utilizzo di blocchi try-catch o di istruzioni if-then.

Gli SDK AWS eseguono le proprie ripetizioni di tentativi e le proprie verifiche degli errori. Se rilevi un errore durante l'utilizzo di uno degli SDK AWS, il codice e la descrizione dell'errore possono aiutarti a risolverlo.

Dovresti anche vedere un Request ID nella risposta. Il Request ID può essere utile se devi collaborare con AWS Support per diagnosticare un problema.

Il seguente frammento di codice Java tenta di rilevare oggetti in un'immagine ed esegue una gestione rudimentale degli errori. In questo caso, informa l'utente che la richiesta non è riuscita.

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

In questo frammento di codice, il costrutto try-catch gestisce due tipi diversi di eccezioni:

  • AmazonRekognitionException—Questa eccezione si verifica se la richiesta del client è stata trasmessa correttamente ad Amazon Rekognition, ma Amazon Rekognition non è stato in grado di elaborare la richiesta e ha restituito invece una risposta di errore.

  • AmazonClientException— Questa eccezione si verifica se il client non riesce a ricevere una risposta da un servizio o se il client non riesce ad analizzare la risposta da un servizio.