

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Annexe : SelectObjectContent Réponse
<a name="RESTSelectObjectAppendix"></a>

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

L'opération Amazon S3 Select filtre le contenu d'un objet Amazon S3 sur la base d'une instruction SQL (Structured Query Language) simple. Étant donné que la taille de réponse de cette opération est inconnue, Amazon S3 Select diffuse la réponse sous la forme d'une série de messages et inclut un `Transfer-Encoding` en-tête dont **chunked** la valeur est la valeur dans la réponse. 

Pour plus d'informations sur Amazon S3 Select, consultez la section [ Sélection de contenu à partir d'objets ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html) dans le guide de l'utilisateur d'*Amazon Simple Storage Service*.

Pour plus d'informations sur l'utilisation de SQL avec Amazon S3 Select, consultez la section Référence [ SQL pour Amazon S3 Select et Amazon Glacier Select ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference.html) dans le guide de l'utilisateur d'*Amazon Simple Storage Service*.

## Réponses
<a name="RESTSelectObjectAppendix-responses"></a>

Une opération Amazon S3 Select réussie renvoie un code `200 OK` d'état.

### En-têtes de réponse
<a name="RESTSelectObjectAppendix-responses-response-headers"></a>

Cette implémentation de l'opération utilise uniquement les en-têtes de réponse communs à la plupart des réponses. Pour plus d'informations, consultez la section En-têtes [ de réponse ](RESTCommonResponseHeaders.md) communs.

### Corps de la réponse
<a name="RESTSelectObjectAppendix-responses-response-elements"></a>

La taille de réponse d'Amazon S3 Select étant inconnue, Amazon S3 diffuse la réponse sous la forme d'une série de messages et inclut un `Transfer-Encoding` en-tête dont **chunked** la valeur est la valeur dans la réponse. L'exemple suivant montre le format de réponse au niveau supérieur :



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

Chaque message est constitué de deux sections : le préambule et les données. La section de prélude comprend 1) la longueur totale en octets du message et 2) la longueur en octets combinée de tous les en-têtes. La section des données comprend 1) les en-têtes et 2) une charge utile.

Chaque section se termine par une somme de contrôle en entier big-endian (CRC) de 4 octets. Amazon S3 Select utilise CRC32 (souvent appelé GZIP CRC32) pour calculer les deux CRC. Pour plus d’informations sur CRC32, consultez la rubrique [*Spécification du format de fichiers GZIP version 4.3*](https://www.ietf.org/rfc/rfc1952.txt).

La charge totale des messages, y compris le prélude et les deux sommes de contrôle, est de 16 octets.

**Note**  
Toutes les `integer` valeurs contenues dans les messages sont dans l'ordre des octets du réseau, ou dans l'ordre big-endian.

Le schéma suivant montre les composants qui constituent un message et un en-tête. Notez qu'il existe plusieurs en-têtes par message.

![Exemple de structure de message indiquant la longueur totale en octets, la longueur en octets de l'en-tête, le crc du prélude, l'en-tête, la charge utile et le crc du message.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-frame-overview.png)


**Note**  
Pour Amazon S3 Select, le type de valeur d'en-tête est toujours 7 (Type=String). Pour ce type, la valeur d'en-tête se compose de deux composants, un entier big-endian de 2 octets et une UTF-8 chaîne de cette longueur d'octet. Le schéma suivant montre les composants qui constituent les en-têtes Amazon S3 Select.

![Structure des en-têtes indiquant la longueur en octets du nom de l'en-tête, la chaîne du nom de l'en-tête, le type de valeur de l'en-tête, la longueur en octets de la valeur et la chaîne de valeur.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-headers-overview.png)


Calculs de la longueur en octets de la charge utile (ces deux calculs sont équivalents) :
+ payload\_length = total\_length - header\_length - SizeOf (total\_length) - SizeOf (header\_length) - SizeOf (prelude\_crc) - SizeOf (message\_crc)
+ longueur de la charge utile = longueur\_totale - longueur\_de l'en-tête - 16



Chaque message comporte les composants suivants :
+ **Prélude ** : Taille toujours fixe de 8 octets (deux champs de 4 octets chacun) :
  + *Quatre premiers octets * : longueur totale en octets : longueur en octets Big-endian entière de l'ensemble du message (y compris le champ de longueur totale de 4 octets lui-même).
  + *Quatre seconds octets * : longueur en octets des en-têtes : longueur en octets Big-endian entière de la partie des en-têtes du message (à l'exclusion du champ de longueur des en-têtes lui-même).
+ **CRC du prélude ** : somme de contrôle en entier big-endian (CRC) de 4 octets pour la partie du prélude du message (à l'exclusion du CRC lui-même). Le prélude possède un CRC distinct du message CRC (voir ci-dessous), afin de garantir que les informations de longueur d'octet corrompues puissent être détectées immédiatement, sans provoquer de comportement de mise en mémoire tampon pathologique.
+ **En-têtes ** : ensemble de métadonnées annotant le message, telles que le type de message, le format de la charge utile, etc. Les messages peuvent avoir plusieurs en-têtes, de sorte que cette partie du message peut avoir des longueurs d'octets différentes en fonction du type de message. Les en-têtes sont des paires clé-valeur, où la clé et la valeur sont des chaînes. UTF-8 Les en-têtes peuvent apparaître dans n'importe quel ordre dans la partie des en-têtes du message, et un type d'en-tête donné ne peut apparaître qu'une seule fois.

  Pour Amazon S3 Select, voici la liste des noms d'en-têtes et l'ensemble des valeurs valides en fonction du type de message.
  + *MessageType En-tête * :
    + HeaderName => « :type de message »
    + Valide HeaderValues => « erreur », « événement »
  + *EventType En-tête * :
    + HeaderName => « :type d'événement »
    + Valide HeaderValues => « Enregistrements », « Suite », « Progression », « Statistiques », « Fin »
  + *ErrorCode En-tête * :
    + HeaderName => « :code d'erreur »
    + Valide HeaderValues => Code d'erreur indiqué dans le tableau de la [Liste des codes d'erreur relatifs au contenu de l'objet SELECT](ErrorResponses.md#SelectObjectContentErrorCodeList) section.
  + *ErrorMessage En-tête * :
    + HeaderName => « :message d'erreur »
    + Valide HeaderValues => Message d'erreur renvoyé par le service, pour aider à diagnostiquer les erreurs au niveau de la demande.
+ **Charge utile ** : Cela peut être n'importe quoi.
+ **Message CRC ** : somme de contrôle en entier big-endian (CRC) de 4 octets entre le début du message et le début de la somme de contrôle (c'est-à-dire tout le contenu du message à l'exception du message CRC lui-même).

Chaque en-tête comporte les composants suivants : Il peut y avoir plusieurs en-têtes par message.
+ **Nom de l'en-tête Byte-Length ** : Byte-length du nom de l'en-tête.
+ **Nom de l'en-tête ** : nom de l'en-tête, indiquant le type d'en-tête. Valeurs valides : « :message-type » « :event-type » « :error-code » « :error-message »
+ **Type de valeur d'en-tête ** : énumération indiquant le type de valeur d'en-tête. Pour Amazon S3 Select, c'est toujours 7.
+ **Chaîne de valeur Byte-Length ** : (pour Amazon S3 Select) Byte-length de la chaîne de valeur d'en-tête.
+ **Chaîne de valeur d'en-tête ** : (pour Amazon S3 Select) Valeur de la chaîne d'en-tête. Les valeurs valides pour ce champ varient en fonction du type d'en-tête. Consultez les sections ci-dessous pour connaître les valeurs valides pour chaque type d'en-tête et de message.

Pour Amazon S3 Select, les réponses peuvent être des messages des types suivants :
+ **Message relatif aux enregistrements ** : peut contenir un seul enregistrement, des enregistrements partiels ou plusieurs enregistrements. Selon la taille du résultat, une réponse peut contenir un ou plusieurs de ces messages.
+ **Message de continuation ** : Amazon S3 envoie régulièrement ce message pour maintenir la connexion TCP ouverte. Ces messages apparaissent au hasard dans les réponses. Le client doit détecter le type de message et le traiter en conséquence.
+ **Message de progression ** : Amazon S3 envoie régulièrement ce message, sur demande. Il contient des informations sur la progression d'une requête qui a commencé mais qui n'est pas encore terminée.
+ **Message de statistiques ** : Amazon S3 envoie ce message à la fin de la demande. Il contient des statistiques relatives à la requête.
+ **Message de fin ** : indique que la demande est terminée et qu'aucun autre message ne sera envoyé. Vous ne devez pas présumer que la demande est complète tant que le client n'a pas reçu de `End` message.
+ **RequestLevelError message ** : Amazon S3 envoie ce message si la demande a échoué pour une raison quelconque. Il contient le code d'erreur et le message d'erreur correspondant à la panne. Si Amazon S3 envoie un `RequestLevelError` message, il n'en envoie `End` pas.

Les sections suivantes expliquent plus en détail la structure de chaque type de message.

Pour des exemples de code et des tests unitaires utilisant ce protocole, consultez [AWS C Event Stream ](https://github.com/awslabs/aws-c-event-stream) sur le GitHub site Web.

#### Message d'enregistrement
<a name="s3select-frametype-record"></a>

##### Spécification de l'en-tête
<a name="s3select-frametype-record-header"></a>

Les messages d'enregistrement contiennent trois en-têtes, comme suit :

![Exemple de structure de message incluant les en-têtes pour ce type d'enregistrement.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-record.png)


##### Spécification de la charge utile
<a name="s3select-frametype-record-payload"></a>

Les charges utiles des messages d'enregistrements peuvent contenir un seul enregistrement, des enregistrements partiels ou plusieurs enregistrements.

#### Message de continuation
<a name="s3select-frametype-cont"></a>

##### Spécification de l'en-tête
<a name="s3select-frametype-cont-header"></a>

Les messages de suite contiennent deux en-têtes, comme suit :

![Exemple de structure de message incluant les en-têtes pour ce type d'enregistrement.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-cont.png)


##### Spécification de la charge utile
<a name="s3select-frametype-cont-payload"></a>

Les messages de continuation n'ont aucune charge utile.

#### Message de progression
<a name="s3select-frametype-progress"></a>

##### Spécification de l'en-tête
<a name="s3select-frametype-progress-header"></a>

Les messages de progression contiennent trois en-têtes, comme suit :

![Exemple de structure de message incluant les en-têtes pour ce type d'enregistrement.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-progress.png)


##### Spécification de la charge utile
<a name="s3select-frametype-progress-payload"></a>

La charge utile du message de progression est un document XML contenant des informations sur la progression d'une demande.
+ *BytesScanned*=> Nombre d'octets qui ont été traités avant d'être décompressés (si le fichier est compressé).
+ *BytesProcessed*=> Nombre d'octets qui ont été traités après avoir été décompressés (si le fichier est compressé).
+ *BytesReturned*=> Nombre actuel d'octets de données utiles d'enregistrements renvoyés par Amazon S3.

Pour les fichiers non compressés, `BytesScanned` et `BytesProcessed` sont identiques.



Exemple :

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

#### Message de statistiques
<a name="s3select-frametype-stats"></a>

##### Spécification de l'en-tête
<a name="s3select-frametype-stats-header"></a>

Les messages de statistiques contiennent trois en-têtes, comme suit :

![Exemple de structure de message incluant les en-têtes pour ce type d'enregistrement.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-stats.png)


##### Spécification de la charge utile
<a name="s3select-frametype-stats-payload"></a>

La charge utile du message de statistiques est un document XML contenant des informations sur les statistiques d'une demande une fois le traitement terminé.
+ *BytesScanned*=> Nombre d'octets qui ont été traités avant d'être décompressés (si le fichier est compressé).
+ *BytesProcessed*=> Nombre d'octets qui ont été traités après avoir été décompressés (si le fichier est compressé).
+ *BytesReturned*=> Nombre total d'octets de données utiles d'enregistrements renvoyés par Amazon S3.

Pour les fichiers non compressés, `BytesScanned` et `BytesProcessed` sont identiques.



Exemple :

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

#### Fin du message
<a name="s3select-frametype-end"></a>

##### Spécification de l'en-tête
<a name="s3select-frametype-end-header"></a>

Les messages de fin contiennent deux en-têtes, comme suit :

![Exemple de structure de message incluant les en-têtes pour ce type d'enregistrement.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-end.png)


##### Spécification de la charge utile
<a name="s3select-frametype-end-payload"></a>

Les messages de fin n'ont aucune charge utile.

#### Message d'erreur au niveau de la demande
<a name="s3select-frametype-requestlevel-error"></a>

##### Spécification de l'en-tête
<a name="s3select-frametype-requestlevel-error-header"></a>

Request-level les messages d'erreur contiennent trois en-têtes, comme suit :

![Exemple de structure de message incluant les en-têtes pour ce type d'enregistrement.](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/developerguide/images/s3select-frame-diagram-error.png)


Pour obtenir la liste des codes d'erreur et des messages d'erreur possibles, consultez le[Liste des codes d'erreur relatifs au contenu de l'objet SELECT](ErrorResponses.md#SelectObjectContentErrorCodeList).

##### Spécification de la charge utile
<a name="s3select-frametype-requestlevel-error-payload"></a>

Request-level les messages d'erreur n'ont aucune charge utile.

## Ressources connexes
<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) 