

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

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

**Topics**
+ [Componenti degli errori](#error-handling.Components)
+ [Messaggi e codici di errore](#error-handling.MessagesAndCodes)
+ [Gestione degli errori nell'applicazione](#error-handling.Handling)

## Componenti degli errori
<a name="error-handling.Components"></a>

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 operazione riuscita (`200 OK`), insieme ai risultati dell'operazione richiesta.

Se la richiesta ha esito negativo, 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.`).

AWS SDKs si occupa della propagazione degli errori nella tua applicazione, in modo che tu possa intraprendere le azioni appropriate. Ad esempio, in un programma Java puoi scrivere logica `try-catch` per gestire un errore `ResourceNotFoundException`.

Se non stai utilizzando un AWS SDK, 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
<a name="error-handling.MessagesAndCodes"></a>

Il seguente è un elenco di eccezioni restituite da Amazon Rekognition, raggruppate in base al 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
<a name="error-handling.MessagesAndCodes.http400"></a>

Un codice di stato HTTP `400` indica un problema con la richiesta. Alcuni esempi di problemi sono errori di autenticazione, parametri obbligatori mancanti o il superamento del throughput assegnato a un'operazione. È necessario risolvere il problema nella tua applicazione prima di inviare nuovamente la richiesta.

**AccessDeniedException **  
Messaggio: *si è verificato un errore (AccessDeniedException) durante la chiamata dell'operazione: User: is not authorized to perform: on resource:.* <Operation><User ARN><Operation><Resource ARN>  
Non sei autorizzato a eseguire l'operazione. Utilizzare il nome della risorsa Amazon (ARN) di un utente autorizzato o un ruolo IAM per eseguire l'operazione.  
OK riprovare? No

**GroupFacesInProgressException **  
Messaggio: *impossibile pianificare GroupFaces il lavoro. È presente un processo di volti di gruppo per questa raccolta.*  
Riprova l'operazione al termine del processo esistente.  
OK riprovare? No

**IdempotentParameterMismatchException **  
Messaggio: *Il ClientRequestToken: che hai fornito è già in uso.* <Token>  
Un parametro ClientRequestToken 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 state chiamando [DetectProtectiveEquipment](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectProtectiveEquipment.html), la dimensione o la risoluzione dell'immagine superano il limite consentito. Per ulteriori informazioni, consulta [Linee guida e quote in Amazon Rekognition](limits.md).  
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](limits.md).  
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 valido (3) ObjectException **  
Messaggi:  
+ *La richiesta ha un oggetto S3 non valido.*
+ *Impossibile ottenere i metadati dell'oggetto da S3. Controlla la chiave dell'oggetto, i permessi di accesso alla regione. and/or *
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](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). Per informazioni sulla risoluzione dei problemi, consulta [Risoluzione dei problemi di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/troubleshooting.html).  
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 un limite per il servizio Amazon Rekognition. Se avvii troppi processi Video Amazon Rekognition simultaneamente, le chiamate alle operazioni di avvio, come `StartLabelDetection`, generano un'eccezione `LimitExceededException` (codice di stato HTTP: 400) finché il numero di processi simultanei in esecuzione è 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, consulta l'argomento [Limiti del servizio Amazon Rekognition](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_rekognition).  
Per richiedere un aumento del limite, segui le istruzioni riportate in [Crea un caso per modificare le quote TPS](limits.md#quotas-create-case).  
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, AWS SDKs utilizzano la logica di ripetizione automatica e il backoff esponenziale. Per ulteriori informazioni, consulta [Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) e l'argomento relativo al [backoff esponenziale e jitter](http://www.awsarchitectureblog.com/2015/03/backoff.html).   
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](limits.md).  
OK riprovare? No

### Codice di stato HTTP 5xx
<a name="error-handling.MessagesAndCodes.http5xx"></a>

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](https://status.aws.amazon.com/) 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, AWS SDKs utilizzano la logica di ripetizione automatica e il backoff esponenziale. Per ulteriori informazioni, consulta [Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) e l'argomento relativo al [backoff esponenziale e jitter](http://www.awsarchitectureblog.com/2015/03/backoff.html).  
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, AWS SDKs utilizzano la logica di ripetizione automatica e il backoff esponenziale. Per ulteriori informazioni, consulta [Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) e l'argomento relativo al [backoff esponenziale e jitter](http://www.awsarchitectureblog.com/2015/03/backoff.html).   
OK riprovare? Sì

## Gestione degli errori nell'applicazione
<a name="error-handling.Handling"></a>

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

AWS SDKs esegue i propri tentativi e verifica degli errori. Se riscontri un errore durante l'utilizzo di uno degli AWS SDKs, il codice di errore e la descrizione 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 client è stata trasmessa correttamente ad Amazon Rekognition, ma Amazon Rekognition non è in grado di elaborarla e restituisce invece una risposta di errore.
+ `AmazonClientException`: questa eccezione si verifica se il client non è stato in grado di ottenere una risposta da un servizio, oppure se il client non è stato in grado di analizzare la risposta di un servizio.