

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.

# Format de sortie d’exportation de table DynamoDB
<a name="S3DataExport.Output"></a>

Une exportation de table DynamoDB comprend des fichiers manifeste en plus des fichiers contenant les données de votre table. Ces fichiers sont enregistrés dans le compartiment Amazon S3 que vous spécifiez dans votre [demande d’exportation](S3DataExport_Requesting.md). Les sections suivantes décrivent le format et le contenu de chaque objet en sortie.

**Topics**

## Sortie d’une exportation complète
<a name="full-export-output"></a>

### Fichiers manifestes
<a name="S3DataExport.Output_Manifest"></a>

DynamoDB crée des fichiers manifeste, ainsi que leurs fichiers de somme de contrôle, dans le compartiment S3 spécifié pour chaque demande d’exportation.

```
export-prefix/AWSDynamoDB/ExportId/manifest-summary.json
export-prefix/AWSDynamoDB/ExportId/manifest-summary.checksum
export-prefix/AWSDynamoDB/ExportId/manifest-files.json
export-prefix/AWSDynamoDB/ExportId/manifest-files.checksum
```

Vous choisissez un **export-prefix** lorsque vous demandez une exportation de table. Cela vous aide à organiser les fichiers dans le compartiment S3 de destination. L’**ExportId** est un jeton unique généré par le service qui vise à éviter que plusieurs exportations vers un même compartiment S3 et `export-prefix` ne se remplacent les unes les autres.

L’exportation crée au moins un fichier par partition. Pour les partitions vides, votre demande d’exportation crée un fichier vide. Tous les éléments de chaque fichier proviennent de l’espace de clés haché de cette partition particulière.

**Note**  
DynamoDB crée également un fichier vide nommé `_started` dans le même répertoire que les fichiers manifestes. Ce fichier vérifie que le compartiment de destination est accessible en écriture et que l’exportation a commencé. Il peut être supprimé en toute sécurité.

#### Manifeste de récapitulatif
<a name="S3DataExport.Output_Manifest_Summary"></a>

Le fichier `manifest-summary.json` contient des informations récapitulatives sur la tâche d'exportation. Cela vous permet de savoir quels fichiers de données du dossier de données partagé sont associés à cette exportation. Son format est le suivant :

```
{
   "version": "2020-06-30",
   "exportArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4",
   "startTime": "2020-11-04T07:28:34.028Z",
   "endTime": "2020-11-04T07:33:43.897Z",
   "tableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog",
   "tableId": "12345a12-abcd-123a-ab12-1234abc12345",
   "exportTime": "2020-11-04T07:28:34.028Z",
   "s3Bucket": "ddb-productcatalog-export",
   "s3Prefix": "2020-Nov",
   "s3SseAlgorithm": "AES256",
   "s3SseKmsKeyId": null,
   "manifestFilesS3Key": "AWSDynamoDB/01693685827463-2d8752fd/manifest-files.json",
   "billedSizeBytes": 0,
   "itemCount": 8,
   "outputFormat": "DYNAMODB_JSON",
   "exportType": "FULL_EXPORT"
}
```

#### Manifeste de fichiers
<a name="S3DataExport.Output_Manifest_Files"></a>

Le fichier `manifest-files.json` contient des informations sur les fichiers contenant les données de votre table exportée. Le fichier étant au format [JSON Lines](https://jsonlines.org/), de nouvelles lignes sont utilisées comme délimiteurs d’éléments. Dans l'exemple suivant, les détails relatifs à un fichier de données extraits d'un manifeste de fichiers sont mis en forme sur plusieurs lignes par souci de lisibilité.

```
{
"itemCount": 8,
   "md5Checksum": "sQMSpEILNgoQmarvDFonGQ==",
   "etag": "af83d6f217c19b8b0fff8023d8ca4716-1",
   "dataFileS3Key": "AWSDynamoDB/01693685827463-2d8752fd/data/asdl123dasas.json.gz"
}
```

### Fichiers de données
<a name="S3DataExport.Output_Data"></a>

DynamoDB peut exporter les données de votre table dans deux formats : DynamoDB JSON et Amazon Ion. Quel que soit le format que vous choisissez, vos données sont écrites dans plusieurs fichiers compressés nommés par les clés. Ces fichiers sont également répertoriés dans le fichier `manifest-files.json`.

La structure du répertoire de votre compartiment Amazon S3 après une exportation complète contient l’ensemble de vos fichiers manifeste et fichiers de données sous le dossier d’ID de l’exportation.

```
amzn-s3-demo-bucket/DestinationPrefix
.
└── AWSDynamoDB
    ├── 01693685827463-2d8752fd     // the single full export
    │   ├── manifest-files.json     // manifest points to files under 'data' subfolder
    │   ├── manifest-files.checksum
    │   ├── manifest-summary.json   // stores metadata about request
    │   ├── manifest-summary.md5  
    │   ├── data                    // The data exported by full export
    │   │   ├── asdl123dasas.json.gz
    │   │   ...
    │   └── _started                // empty file for permission check
```

#### JSON DynamoDB
<a name="S3DataExport.Output_Data_DDB-JSON"></a>

Une exportation de table au format JSON DynamoDB comprend plusieurs objets `Item`. Chaque objet est au format JSON regroupé standard de DynamoDB.

Lorsque des analyseurs personnalisés sont créés pour les données d’exportation JSON DynamoDB, le format est [JSON Lines](https://jsonlines.org/). Cela signifie que des sauts de ligne sont utilisés en tant que délimiteurs d’éléments. De nombreux AWS services, tels qu'Athena et AWS Glue, analyseront automatiquement ce format.

Dans l’exemple suivant, un élément d’une exportation JSON DynamoDB a été mis en forme sur plusieurs lignes par souci de lisibilité.

```
{
    "Item":{
        "Authors":{
            "SS":[
                "Author1",
                "Author2"
            ]
        },
        "Dimensions":{
            "S":"8.5 x 11.0 x 1.5"
        },
        "ISBN":{
            "S":"333-3333333333"
        },
        "Id":{
            "N":"103"
        },
        "InPublication":{
            "BOOL":false
        },
        "PageCount":{
            "N":"600"
        },
        "Price":{
            "N":"2000"
        },
        "ProductCategory":{
            "S":"Book"
        },
        "Title":{
            "S":"Book 103 Title"
        }
    }
}
```

#### Amazon Ion
<a name="S3DataExport.Output_Data_ION"></a>

[Amazon Ion](http://amzn.github.io/ion-docs/) est un format de sérialisation de données hiérarchique riche, auto-descriptif et conçu pour répondre aux défis de développement rapide, de découplage et d'efficacité rencontrés lors de la conception d'architectures orientées service à grande échelle. DynamoDB prend en charge l’exportation de données de table au [format texte](http://amzn.github.io/ion-docs/docs/spec.html) d’Ion, qui est un sur-ensemble de JSON.

Lorsque vous exportez une table au format Ion, les types de données DynamoDB utilisés dans la table sont mappés à des [types de données Ion](http://amzn.github.io/ion-docs/docs/spec.html). Les ensembles DynamoDB utilisent des [annotations de type Ion](http://amzn.github.io/ion-docs/docs/spec.html#annot) pour clarifier type de données utilisé dans la table source.

Le tableau suivant répertorie le mappage des types de données DynamoDB aux types de données Ion :


| Type de données DynamoDB | Représentation Ion | 
| --- | --- | 
| String (S) | string | 
| Boolean (BOOL) | bool | 
| Number (N) | décimal | 
| Binary (B) | blob | 
| Set (SS, NS, BS) | list (avec annotation de type \$1DynamoDB\$1SS, \$1DynamoDB\$1ns ou \$1DynamoDB\$1bs) | 
| List | list | 
| Map | struct | 

Les éléments dans une exportation Ion sont délimités par des sauts de ligne. Chaque ligne commence par un marqueur de version Ion, suivi d'un élément au format Ion. Dans l'exemple suivant, un élément d'une exportation Ion a été mis en forme sur plusieurs lignes par souci de lisibilité.

```
$ion_1_0 {
    Item:{
        Authors:$dynamodb_SS::["Author1","Author2"],
        Dimensions:"8.5 x 11.0 x 1.5",
        ISBN:"333-3333333333",
        Id:103.,
        InPublication:false,
        PageCount:6d2,
        Price:2d3,
        ProductCategory:"Book",
        Title:"Book 103 Title"
    }
}
```

## Sortie d’une exportation incrémentielle
<a name="incremental-export-output"></a>

### Fichiers manifestes
<a name="S3DataIncrementalExport.Output_Manifest"></a>

DynamoDB crée des fichiers manifeste, ainsi que leurs fichiers de somme de contrôle, dans le compartiment S3 spécifié pour chaque demande d’exportation.

```
export-prefix/AWSDynamoDB/ExportId/manifest-summary.json
export-prefix/AWSDynamoDB/ExportId/manifest-summary.checksum
export-prefix/AWSDynamoDB/ExportId/manifest-files.json
export-prefix/AWSDynamoDB/ExportId/manifest-files.checksum
```

Vous choisissez un **export-prefix** lorsque vous demandez une exportation de table. Cela vous aide à organiser les fichiers dans le compartiment S3 de destination. L’**ExportId** est un jeton unique généré par le service qui vise à éviter que plusieurs exportations vers un même compartiment S3 et `export-prefix` ne se remplacent les unes les autres.

L’exportation crée au moins un fichier par partition. Pour les partitions vides, votre demande d’exportation crée un fichier vide. Tous les éléments de chaque fichier proviennent de l’espace de clés haché de cette partition particulière.

**Note**  
DynamoDB crée également un fichier vide nommé `_started` dans le même répertoire que les fichiers manifestes. Ce fichier vérifie que le compartiment de destination est accessible en écriture et que l’exportation a commencé. Il peut être supprimé en toute sécurité.

#### Manifeste de récapitulatif
<a name="S3DataIncrementalExport.Output_Manifest_Summary"></a>

Le fichier `manifest-summary.json` contient des informations récapitulatives sur la tâche d'exportation. Cela vous permet de savoir quels fichiers de données du dossier de données partagé sont associés à cette exportation. Son format est le suivant :

```
{
 "version": "2023-08-01",
 "exportArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test/export/01695097218000-d6299cbd",
 "startTime": "2023-09-19T04:20:18.000Z",
 "endTime": "2023-09-19T04:40:24.780Z",
 "tableArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test",
 "tableId": "b116b490-6460-4d4a-9a6b-5d360abf4fb3",
 "exportFromTime": "2023-09-18T17:00:00.000Z",
 "exportToTime": "2023-09-19T04:00:00.000Z",
 "s3Bucket": "jason-exports",
 "s3Prefix": "20230919-prefix",
 "s3SseAlgorithm": "AES256",
 "s3SseKmsKeyId": null,
 "manifestFilesS3Key": "20230919-prefix/AWSDynamoDB/01693685934212-ac809da5/manifest-files.json",
 "billedSizeBytes": 20901239349,
 "itemCount": 169928274,
 "outputFormat": "DYNAMODB_JSON",
 "outputView": "NEW_AND_OLD_IMAGES",
 "exportType": "INCREMENTAL_EXPORT"
}
```

#### Manifeste de fichiers
<a name="S3DataIncrementalExport.Output_Manifest_Files"></a>

Le fichier `manifest-files.json` contient des informations sur les fichiers contenant les données de votre table exportée. Le fichier étant au format [JSON Lines](https://jsonlines.org/), de nouvelles lignes sont utilisées comme délimiteurs d’éléments. Dans l'exemple suivant, les détails relatifs à un fichier de données extraits d'un manifeste de fichiers sont mis en forme sur plusieurs lignes par souci de lisibilité.

```
{
"itemCount": 8,
   "md5Checksum": "sQMSpEILNgoQmarvDFonGQ==",
   "etag": "af83d6f217c19b8b0fff8023d8ca4716-1",
   "dataFileS3Key": "AWSDynamoDB/data/sgad6417s6vss4p7owp0471bcq.json.gz"
}
```

### Fichiers de données
<a name="S3DataIncrementalExport.Output_Data"></a>

DynamoDB peut exporter les données de votre table dans deux formats : DynamoDB JSON et Amazon Ion. Quel que soit le format que vous choisissez, vos données sont écrites dans plusieurs fichiers compressés nommés par les clés. Ces fichiers sont également répertoriés dans le fichier `manifest-files.json`.

Les fichiers de données dans le cas des exportations incrémentielles sont tous contenus dans un dossier de données commun au sein de votre compartiment S3. Vos fichiers manifeste se trouvent sous le dossier d’ID de votre exportation.

```
amzn-s3-demo-bucket/DestinationPrefix
.
└── AWSDynamoDB
    ├── 01693685934212-ac809da5     // an incremental export ID
    │   ├── manifest-files.json     // manifest points to files under 'data' folder
    │   ├── manifest-files.checksum
    │   ├── manifest-summary.json   // stores metadata about request
    │   ├── manifest-summary.md5  
    │   └── _started                // empty file for permission check
    ├── 01693686034521-ac809da5
    │   ├── manifest-files.json
    │   ├── manifest-files.checksum
    │   ├── manifest-summary.json
    │   ├── manifest-summary.md5
    │   └── _started
    ├── data                        // stores all the data files for incremental exports
    │   ├── sgad6417s6vss4p7owp0471bcq.json.gz 
    │   ...
```

Dans les fichiers de votre exportation, la sortie de chaque élément comprend un horodatage qui représente le moment auquel cet élément a été mis à jour dans votre table et une structure de données qui indique s’il s’agissait d’une opération `insert`, `update` ou `delete`. L’horodatage est basé sur une horloge système interne et peut varier par rapport à l’horloge de votre application. Pour les exportations incrémentielles, vous pouvez choisir entre deux types de vue d’exportation pour votre structure de sortie : **ancienne et nouvelle images** ou **nouvelles images uniquement**.
+ **Nouvelle image** indique l’état le plus récent de l’élément 
+ **Ancienne image** indique l’état de l’élément juste avant la **date et l’heure de début** spécifiées

Les types de vue peuvent être utiles si vous souhaitez voir comment l’élément a changé durant la période d’exportation. Cela peut aussi s’avérer utile pour mettre à jour efficacement vos systèmes en aval, en particulier si leur clé de partition est différente de votre clé de partition DynamoDB. 

Vous pouvez déterminer si un élément de la sortie de votre exportation incrémentielle était une opération `insert`, `update` ou `delete` en examinant la structure de la sortie. La structure de l’exportation incrémentielle et ses opérations correspondantes sont résumées dans le tableau ci-dessous pour les deux types de vue d’exportation.


| Opération | Nouvelles images uniquement | Ancienne et nouvelle images | 
| --- | --- | --- | 
|  Insert  |  Clés \$1 nouvelle image  | Clés \$1 nouvelle image | 
|  Mettre à jour  | Clés \$1 nouvelle image | Clés \$1 nouvelle image \$1 ancienne image | 
| Suppression | Clés | Clés \$1 ancienne image | 
| Insert \$1 delete | Pas de sortie | Pas de sortie | 

#### JSON DynamoDB
<a name="S3DataIncrementalExport.Output_Data_DDB-JSON"></a>

Une exportation de table au format JSON de DynamoDB comprend un horodatage des métadonnées qui indique l’heure d’écriture de l’élément, suivi des clés de l’élément et des valeurs. Voici un exemple de sortie JSON DynamoDB utilisant le type de vue d’exportation **Ancienne et nouvelle images**.

```
// Ex 1: Insert
//   An insert means the item did not exist before the incremental export window
//   and was added during the incremental export window

{
   "Metadata": {
     "WriteTimestampMicros": "1680109764000000"
   },
   "Keys": {
     "PK": { 
       "S": "CUST#100" 
     }
   },
   "NewImage": {
     "PK": { 
       "S": "CUST#100" 
     },
     "FirstName": {
       "S": "John"
     },
     "LastName": {
       "S": "Don"
     }
   }
}

// Ex 2: Update
//   An update means the item existed before the incremental export window
//   and was updated during the incremental export window. 
//   The OldImage would not be present if choosing "New images only".

{
   "Metadata": {
     "WriteTimestampMicros": "1680109764000000"
   },
   "Keys": {
     "PK": { 
       "S": "CUST#200" 
     }
   },
   "OldImage": {
     "PK": { 
       "S": "CUST#200" 
     },
     "FirstName": {
       "S": "Mary"
     },
     "LastName": {
       "S": "Grace"
     }
   },
   "NewImage": {
     "PK": { 
       "S": "CUST#200" 
     },
     "FirstName": {
       "S": "Mary"
     },
     "LastName": {
       "S": "Smith"
     }
   }
}

// Ex 3: Delete
//   A delete means the item existed before the incremental export window
//   and was deleted during the incremental export window
//   The OldImage would not be present if choosing "New images only".

{
   "Metadata": {
     "WriteTimestampMicros": "1680109764000000"
   },
   "Keys": {
     "PK": { 
       "S": "CUST#300" 
     }
   },
   "OldImage": {
     "PK": { 
       "S": "CUST#300" 
     },
     "FirstName": {
       "S": "Jose"
     },
     "LastName": {
       "S": "Hernandez"
     }
   }
}

// Ex 4: Insert + Delete
//   Nothing is exported if an item is inserted and deleted within the 
//   incremental export window.
```

#### Amazon Ion
<a name="S3DataIncrementalExport.Output_Data_ION"></a>

[Amazon Ion](http://amzn.github.io/ion-docs/) est un format de sérialisation de données hiérarchique riche, auto-descriptif et conçu pour répondre aux défis de développement rapide, de découplage et d'efficacité rencontrés lors de la conception d'architectures orientées service à grande échelle. DynamoDB prend en charge l’exportation de données de table au [format texte](http://amzn.github.io/ion-docs/docs/spec.html) d’Ion, qui est un sur-ensemble de JSON.

Lorsque vous exportez une table au format Ion, les types de données DynamoDB utilisés dans la table sont mappés à des [types de données Ion](http://amzn.github.io/ion-docs/docs/spec.html). Les ensembles DynamoDB utilisent des [annotations de type Ion](http://amzn.github.io/ion-docs/docs/spec.html#annot) pour clarifier type de données utilisé dans la table source.

Le tableau suivant répertorie le mappage des types de données DynamoDB aux types de données Ion :


| Type de données DynamoDB | Représentation Ion | 
| --- | --- | 
| String (S) | string | 
| Boolean (BOOL) | bool | 
| Number (N) | décimal | 
| Binary (B) | blob | 
| Set (SS, NS, BS) | list (avec annotation de type \$1DynamoDB\$1SS, \$1DynamoDB\$1ns ou \$1DynamoDB\$1bs) | 
| List | list | 
| Map | struct | 

Les éléments dans une exportation Ion sont délimités par des sauts de ligne. Chaque ligne commence par un marqueur de version Ion, suivi d'un élément au format Ion. Dans l'exemple suivant, un élément d'une exportation Ion a été mis en forme sur plusieurs lignes par souci de lisibilité.

```
$ion_1_0 {
    Record:{
        Keys:{
             ISBN:"333-3333333333"
         },
        Metadata:{
            WriteTimestampMicros:1684374845117899.
        },
        OldImage:{
            Authors:$dynamodb_SS::["Author1","Author2"],
            ISBN:"333-3333333333",
            Id:103.,
            InPublication:false,
            ProductCategory:"Book",
            Title:"Book 103 Title"
        },
        NewImage:{
            Authors:$dynamodb_SS::["Author1","Author2"],
            Dimensions:"8.5 x 11.0 x 1.5",
            ISBN:"333-3333333333",
            Id:103.,
            InPublication:true,
            PageCount:6d2,
            Price:2d3,
            ProductCategory:"Book",
            Title:"Book 103 Title"
        }
    }
}
```