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 esempio
StartLabelDetection
, solleva unLimitExceededException
eccezione (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
- 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.