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
Description
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-Encodingintestazione con chunked come valore nella risposta.
Per ulteriori informazioni su Amazon S3 Select, consulta Selection Content from Objects 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 nella Amazon Simple Storage Service User Guide.
Risposte
Una corretta operazione Amazon S3 Select restituisce un codice di stato. 200 OK
Intestazioni di risposta
Questa implementazione dell'operazione utilizza solo le intestazioni di risposta comuni alla maggior parte delle risposte. Per ulteriori informazioni, vedere Common Response Headers.
Corpo della risposta
Poiché la dimensione della risposta Amazon S3 Select è sconosciuta, Amazon S3 trasmette la risposta come una serie di messaggi e include un'Transfer-Encodingintestazione 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
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.
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.
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
-
-
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
Endmessaggio. -
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
RequestLevelErrormessaggio, non invia unEndmessaggio.
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
Registra il messaggio
Specifiche dell'intestazione
I messaggi dei record contengono tre intestazioni, come segue:
Specifiche del payload
I payload dei messaggi Records possono contenere un singolo record, record parziali o più record.
Messaggio di continuazione
Specifiche dell'intestazione
I messaggi di continuazione contengono due intestazioni, come segue:
Specifiche del payload
I messaggi di continuazione non hanno alcun payload.
Messaggio di avanzamento
Specifiche dell'intestazione
I messaggi di avanzamento contengono tre intestazioni, come segue:
Specifiche del payload
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
Specifiche dell'intestazione
I messaggi di statistica contengono tre intestazioni, come segue:
Specifiche del payload
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
Specifiche dell'intestazione
I messaggi finali contengono due intestazioni, come segue:
Specifiche del payload
I messaggi finali non hanno alcun payload.
Messaggio di errore relativo al livello di richiesta
Specifiche dell'intestazione
Request-level i messaggi di errore contengono tre intestazioni, come segue:
Per un elenco dei possibili codici e messaggi di errore, vedere. Elenco dei codici di errore SELECT Object Content
Specifiche del payload
Request-level i messaggi di errore non hanno alcun payload.