

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

# Appendice: Risposta SelectObjectContent
<a name="RESTSelectObjectAppendix"></a>

## Description
<a name="RESTSelectObjectAppendix-description"></a>

L'operazione Amazon S3 Select filtra il contenuto di un oggetto Amazon S3 in base a una semplice istruzione SQL (Structured Query Language). Poiché la dimensione della risposta di questa operazione è sconosciuta, Amazon S3 Select trasmette la risposta come una serie di messaggi e include un'`Transfer-Encoding`intestazione con **chunked** come valore nella risposta. 

Per ulteriori informazioni su Amazon S3 Select, consulta [ Selection Content from Objects ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html) nella * Amazon Simple Storage Service User Guide. *

Per ulteriori informazioni sull'utilizzo di SQL con Amazon S3 Select, consulta [ SQL Reference for Amazon S3 Select e Amazon Glacier Select ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference.html) nella Amazon Simple Storage Service * User Guide. *

## Risposte
<a name="RESTSelectObjectAppendix-responses"></a>

Una corretta operazione Amazon S3 Select restituisce un codice di stato. `200 OK`

### Intestazioni di risposta
<a name="RESTSelectObjectAppendix-responses-response-headers"></a>

Questa implementazione dell'operazione utilizza solo le intestazioni di risposta comuni alla maggior parte delle risposte. Per ulteriori informazioni, vedere [ Common Response ](RESTCommonResponseHeaders.md) Headers.

### Corpo della risposta
<a name="RESTSelectObjectAppendix-responses-response-elements"></a>

Poiché la dimensione della risposta Amazon S3 Select è sconosciuta, Amazon S3 trasmette la risposta come una serie di messaggi e include un'`Transfer-Encoding`intestazione con **chunked** come valore nella risposta. L'esempio seguente mostra il formato della risposta al livello superiore:



```
<Message 1>
<Message 2>
<Message 3>
......
<Message n>
```

Ogni messaggio è composto da due sezioni: è costituita da due sezioni: l’introduzione e i dati. La sezione del preludio è composta da 1) la lunghezza totale in byte del messaggio e 2) la lunghezza in byte combinata di tutte le intestazioni. La sezione dati è composta da 1) le intestazioni e 2) un payload.

Ogni sezione termina con un checksum intero big-endian (CRC) a 4 byte. Amazon S3 Select utilizza CRC32 (spesso indicato come GZIP CRC32) per calcolare entrambi i CRC. Per ulteriori informazioni su CRC32, consultare la [*specifica versione 4.3 del formato di file GZIP*](https://www.ietf.org/rfc/rfc1952.txt).

Il sovraccarico totale dei messaggi, incluso il preludio ed entrambi i checksum, è di 16 byte.

**Nota**  
Tutti i `integer` valori all'interno dei messaggi sono in ordine di byte di rete o in ordine big-endian.

Il seguente diagramma mostra i componenti che compongono un messaggio e un’intestazione. Nota che ci sono più intestazioni per messaggio.

![Un esempio di struttura del messaggio che mostra la lunghezza totale in byte, la lunghezza in byte dell'intestazione, il preludio crc, l'intestazione, il payload e il crc del messaggio.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-frame-overview.png)


**Nota**  
Per Amazon S3 Select, il tipo di valore dell'intestazione è sempre 7 (type=String). Per questo tipo, il valore dell'intestazione è costituito da due componenti, un intero big-endian di 2 byte e una stringa di tale lunghezza in byte. UTF-8 Il diagramma seguente mostra i componenti che compongono le intestazioni di Amazon S3 Select.

![Struttura delle intestazioni che mostra la lunghezza in byte del nome dell'intestazione, la stringa del nome dell'intestazione, il tipo di valore dell'intestazione, la lunghezza in byte del valore e la stringa di valore.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-headers-overview.png)


Calcoli della lunghezza in byte del payload (questi due calcoli sono equivalenti):
+ payload\_length = total\_length - header\_length - sizeOf (total\_length) - sizeOf (header\_length) - sizeOf (prelude\_crc) - sizeOf (message\_crc)
+ payload\_length = total\_length - header\_length - 16



Ogni messaggio contiene i seguenti componenti:
+ **Preludio**: dimensione sempre fissa di 8 byte (due campi da 4 byte ciascuno):
  + *Primi quattro byte*: lunghezza totale in byte: lunghezza in byte intera dell' Big-endian intero messaggio (incluso il campo di lunghezza totale di 4 byte stesso).
  + *Secondi quattro byte*: lunghezza in byte delle intestazioni: lunghezza in byte Big-endian intera della parte delle intestazioni del messaggio (escluso il campo relativo alla lunghezza delle intestazioni stesso).
+ **Prelude CRC**: checksum intero big-endian (CRC) a 4 byte per la parte preludio del messaggio (escluso il CRC stesso). Il preludio ha un CRC separato dal CRC del messaggio (vedi sotto), per garantire che le informazioni danneggiate in byte possano essere rilevate immediatamente, senza causare un comportamento patologico di buffering.
+ **Intestazioni**: una serie di metadati che annotano il messaggio, ad esempio il tipo di messaggio, il formato del payload e così via. I messaggi possono avere più intestazioni, quindi questa parte del messaggio può avere lunghezze di byte diverse a seconda del tipo di messaggio. Le intestazioni sono coppie chiave-valore, in cui sia la chiave che il valore sono stringhe. UTF-8 Le intestazioni possono essere visualizzate in qualsiasi ordine all'interno della parte relativa alle intestazioni del messaggio e qualsiasi tipo di intestazione può apparire una sola volta.

  Per Amazon S3 Select, di seguito è riportato un elenco di nomi di intestazione e il set di valori validi a seconda del tipo di messaggio.
  + *MessageType Intestazione: *
    + HeaderName => «:message-type»
    + Valido HeaderValues => «errore», «evento»
  + *EventType *Intestazione:
    + HeaderName => «:event-type»
    + Valido HeaderValues => «Record», «Cont», «Progress», «Stats», «End»
  + *ErrorCode Intestazione: *
    + HeaderName => «:codice di errore»
    + Valido HeaderValues => Codice di errore dalla tabella nella sezione. [Elenco dei codici di errore SELECT Object Content](ErrorResponses.md#SelectObjectContentErrorCodeList)
  + *ErrorMessage *Intestazione:
    + HeaderName => «:messaggio di errore»
    + Valido HeaderValues => Messaggio di errore restituito dal servizio, per aiutare a diagnosticare gli errori a livello di richiesta.
+ **Payload**: può essere qualsiasi cosa.
+ **Messaggio CRC**: checksum intero big-endian (CRC) a 4 byte dall'inizio del messaggio all'inizio del checksum (ovvero, tutto il contenuto del messaggio escluso il messaggio CRC stesso).

Ogni intestazione contiene i seguenti componenti. Possono esserci più intestazioni per messaggio.
+ **Nome dell'intestazione Byte-Length**: Byte-length del nome dell'intestazione.
+ **Nome dell'intestazione**: nome dell'intestazione, che indica il tipo di intestazione. Valori validi: «:message-type» «:event-type» «:error-code» «:error-message»
+ **Tipo di valore dell'intestazione: Enum che indica il tipo di valore dell'intestazione. ** Per Amazon S3 Select, è sempre 7.
+ **Stringa di valore Byte-Length**: (per Amazon S3 Select) Byte-length della stringa del valore dell'intestazione.
+ **Stringa del valore dell'intestazione**: (per Amazon S3 Select) Valore della stringa di intestazione. I valori validi per questo campo variano in base al tipo di intestazione. Consulta le sezioni seguenti per i valori validi per ogni tipo di intestazione e tipo di messaggio.

Per Amazon S3 Select, le risposte possono essere messaggi dei seguenti tipi:
+ **Registra un messaggio**: può contenere un singolo record, record parziali o più record. A seconda della dimensione del risultato, una risposta può contenere uno o più di questi messaggi.
+ **Messaggio di continuazione**: Amazon S3 invia periodicamente questo messaggio per mantenere aperta la connessione TCP. Questi messaggi vengono visualizzati casualmente nelle risposte. Il cliente deve rilevare il tipo di messaggio ed elaborarlo di conseguenza.
+ **Messaggio di avanzamento**: Amazon S3 invia periodicamente questo messaggio, se richiesto. Contiene informazioni sullo stato di avanzamento di una query iniziata ma non ancora completata.
+ **Messaggio ** statistico: Amazon S3 invia questo messaggio alla fine della richiesta. Contiene statistiche sulla query.
+ **Messaggio finale**: indica che la richiesta è completa e non verranno inviati altri messaggi. Non si deve dare per scontato che la richiesta sia completa finché il cliente non riceve un `End` messaggio.
+ **RequestLevelError messaggio**: Amazon S3 invia questo messaggio se la richiesta non è riuscita per qualsiasi motivo. Contiene il codice e il messaggio di errore relativi all'errore. Se Amazon S3 invia un `RequestLevelError` messaggio, non invia un `End` messaggio.

Le sezioni seguenti spiegano la struttura di ciascun tipo di messaggio in modo più dettagliato.

Per esempi di codice e test unitari che utilizzano questo protocollo, vedete [AWS C Event Stream ](https://github.com/awslabs/aws-c-event-stream) sul GitHub sito Web.

#### Registra il messaggio
<a name="s3select-frametype-record"></a>

##### Specifiche dell'intestazione
<a name="s3select-frametype-record-header"></a>

I messaggi dei record contengono tre intestazioni, come segue:

![Una struttura di messaggio di esempio che include le intestazioni per questo tipo di record.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-record.png)


##### Specifiche del payload
<a name="s3select-frametype-record-payload"></a>

I payload dei messaggi Records possono contenere un singolo record, record parziali o più record.

#### Messaggio di continuazione
<a name="s3select-frametype-cont"></a>

##### Specifiche dell'intestazione
<a name="s3select-frametype-cont-header"></a>

I messaggi di continuazione contengono due intestazioni, come segue:

![Una struttura di messaggio di esempio che include le intestazioni per questo tipo di record.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-cont.png)


##### Specifiche del payload
<a name="s3select-frametype-cont-payload"></a>

I messaggi di continuazione non hanno alcun payload.

#### Messaggio di avanzamento
<a name="s3select-frametype-progress"></a>

##### Specifiche dell'intestazione
<a name="s3select-frametype-progress-header"></a>

I messaggi di avanzamento contengono tre intestazioni, come segue:

![Una struttura di messaggio di esempio che include le intestazioni per questo tipo di record.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-progress.png)


##### Specifiche del payload
<a name="s3select-frametype-progress-payload"></a>

Il payload dei messaggi di avanzamento è un documento XML contenente informazioni sullo stato di avanzamento di una richiesta.
+ *BytesScanned*=> Numero di byte che sono stati elaborati prima di essere decompressi (se il file è compresso).
+ *BytesProcessed*=> Numero di byte che sono stati elaborati dopo essere stati decompressi (se il file è compresso).
+ *BytesReturned*=> Numero attuale di byte di dati di payload dei record restituiti da Amazon S3.

Per i file non compressi, e sono uguali. `BytesScanned` `BytesProcessed`



Esempio:

```
<?xml version="1.0" encoding="UTF-8"?>
<Progress>
     <BytesScanned>512</BytesScanned>
     <BytesProcessed>1024</BytesProcessed>
     <BytesReturned>1024</BytesReturned>
</Progress>
```

#### Messaggio di statistiche
<a name="s3select-frametype-stats"></a>

##### Specifiche dell'intestazione
<a name="s3select-frametype-stats-header"></a>

I messaggi di statistica contengono tre intestazioni, come segue:

![Una struttura di messaggio di esempio che include le intestazioni per questo tipo di record.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-stats.png)


##### Specifiche del payload
<a name="s3select-frametype-stats-payload"></a>

Il payload dei messaggi di statistica è un documento XML contenente informazioni sulle statistiche di una richiesta al termine dell'elaborazione.
+ *BytesScanned*=> Numero di byte che sono stati elaborati prima di essere decompressi (se il file è compresso).
+ *BytesProcessed*=> Numero di byte che sono stati elaborati dopo essere stati decompressi (se il file è compresso).
+ *BytesReturned*=> Numero totale di byte di dati di payload dei record restituiti da Amazon S3.

Per i file non compressi, e sono uguali. `BytesScanned` `BytesProcessed`



Esempio:

```
<?xml version="1.0" encoding="UTF-8"?>
<Stats>
     <BytesScanned>512</BytesScanned>
     <BytesProcessed>1024</BytesProcessed>
     <BytesReturned>1024</BytesReturned>
</Stats>
```

#### Fine messaggio
<a name="s3select-frametype-end"></a>

##### Specifiche dell'intestazione
<a name="s3select-frametype-end-header"></a>

I messaggi finali contengono due intestazioni, come segue:

![Una struttura di messaggio di esempio che include le intestazioni per questo tipo di record.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-end.png)


##### Specifiche del payload
<a name="s3select-frametype-end-payload"></a>

I messaggi finali non hanno alcun payload.

#### Messaggio di errore relativo al livello di richiesta
<a name="s3select-frametype-requestlevel-error"></a>

##### Specifiche dell'intestazione
<a name="s3select-frametype-requestlevel-error-header"></a>

Request-level i messaggi di errore contengono tre intestazioni, come segue:

![Una struttura di messaggio di esempio che include le intestazioni per questo tipo di record.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/developerguide/images/s3select-frame-diagram-error.png)


Per un elenco dei possibili codici e messaggi di errore, vedere. [Elenco dei codici di errore SELECT Object Content](ErrorResponses.md#SelectObjectContentErrorCodeList)

##### Specifiche del payload
<a name="s3select-frametype-requestlevel-error-payload"></a>

Request-level i messaggi di errore non hanno alcun payload.

## Risorse correlate
<a name="RESTSelectObjectAppendix-responses-related-resources-post-res"></a>
+  [SelectObjectContent](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html) 
+  [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 
+  [GetBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html) 
+  [PutBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) 