

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.

# Exportation de données de journal depuis Amazon QLDB
<a name="export-journal"></a>

**Important**  
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez [Migrer un registre Amazon QLDB vers Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

*Amazon QLDB utilise un journal transactionnel immuable, appelé journal, pour le stockage des données.* Le journal suit chaque modification apportée à vos données enregistrées et conserve un historique complet et vérifiable des modifications au fil du temps.

Vous pouvez accéder au contenu du journal dans votre registre à diverses fins, notamment pour l'analyse, l'audit, la conservation des données, la vérification et l'exportation vers d'autres systèmes. Les rubriques suivantes décrivent comment exporter des [blocs](journal-contents.md) de journaux de votre registre vers un compartiment Amazon Simple Storage Service (Amazon S3) situé dans votre. Compte AWS Une tâche d'exportation de journal écrit vos données dans Amazon S3 sous forme d'objets au format texte ou binaire d'[Amazon Ion](ion.md) ou au format texte *JSON Lines*.

Au format JSON Lines, chaque bloc d'un objet de données exporté est un objet JSON valide délimité par une nouvelle ligne. Vous pouvez utiliser ce format pour intégrer directement les exportations JSON à des outils d'analyse tels qu'Amazon Athena et AWS Glue parce que ces services peuvent analyser automatiquement le JSON délimité par de nouvelles lignes. Pour plus d'informations sur le format, consultez [Lignes JSON](https://jsonlines.org/).

Pour plus d'informations sur Amazon S3, consultez le [guide de l'utilisateur d'Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

**Note**  
Si vous spécifiez JSON comme format de sortie de votre tâche d'exportation, QLDB abaisse les données du journal Ion en JSON dans vos objets de données exportés. Pour de plus amples informations, veuillez consulter [Conversion descendante au format JSON](export-journal.output.md#export-journal.output.json).

**Topics**
+ [

# Demande d'exportation d'un journal dans QLDB
](export-journal.request.md)
+ [

# Sortie d'exportation du journal dans QLDB
](export-journal.output.md)
+ [

# Autorisations d'exportation de journaux dans QLDB
](export-journal.perms.md)
+ [

# Erreurs courantes lors de l'exportation de journaux
](export-journal.errors.md)

# Demande d'exportation d'un journal dans QLDB
<a name="export-journal.request"></a>

**Important**  
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez [Migrer un registre Amazon QLDB vers Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

Amazon QLDB fournit une API pour demander l'exportation de vos blocs de journal pour une date et une plage d'heures spécifiées et une destination de compartiment Amazon S3 spécifiée. Une tâche d'exportation de journal peut écrire les objets de données sous forme de texte ou de représentation binaire au format [Amazon Ion](ion.md), ou au format de texte [JSON Lines](https://jsonlines.org/). Vous pouvez utiliser le AWS Management Console, un AWS SDK ou le AWS Command Line Interface (AWS CLI) pour créer une tâche d'exportation.

**Topics**
+ [

## AWS Management Console
](#export-journal.request.con)
+ [

## API QLDB
](#export-journal.request.api)
+ [

## Expiration du travail d'exportation
](#export-journal.request.expiration)

## AWS Management Console
<a name="export-journal.request.con"></a>

Procédez comme suit pour soumettre une demande d'exportation de journal dans QLDB à l'aide de la console QLDB.

**Pour demander une exportation (console)**

1. [Connectez-vous à la AWS Management Console console Amazon QLDB et ouvrez-la à l'adresse /qldb. https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. Dans le volet de navigation, choisissez **Exporter**.

1. Choisissez **Créer une tâche d'exportation**.

1. Sur la page **Créer une tâche d'exportation**, entrez les paramètres d'exportation suivants :
   + **Ledger** — Le registre dont vous souhaitez exporter les blocs de journal.
   + **Date et heure de début** : horodatage de début inclus en temps universel coordonné (UTC) de la plage de blocs de journal à exporter. Cet horodatage doit être antérieur à la **date et à l'heure de fin**. Si vous fournissez un horodatage de début antérieur à celui du registre, `CreationDateTime` QLDB le définit par défaut sur celui du registre. `CreationDateTime`
   + **Date et heure de fin** : horodatage de fin (UTC) exclusif de la plage de blocs de journal à exporter. Cette date et cette heure ne peuvent pas se situer dans le futur.
   + **Destination des blocs de journaux** : nom du compartiment et du préfixe Amazon S3 dans lesquels votre tâche d'exportation écrit les objets de données. Utilisez le format d'URI Amazon S3 suivant.

     ```
     s3://amzn-s3-demo-qldb-cloudtrail/prefix/
     ```

     Vous devez spécifier un nom de compartiment S3 et un nom de préfixe facultatif pour les objets de sortie. Voici un exemple.

     ```
     s3://amzn-s3-demo-qldb-cloudtrail/journalExport/
     ```

     Le nom et le préfixe du compartiment doivent tous deux être conformes aux règles et conventions de dénomination d'Amazon S3. Pour plus d'informations sur la dénomination des compartiments, consultez la section [Restrictions et limitations des](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) compartiments dans le *guide du développeur Amazon S3*. Pour plus d'informations sur les préfixes des noms de clés, consultez la section [Clé d'objet et métadonnées](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html).
**Note**  
Les exportations entre régions ne sont pas prises en charge. Le compartiment Amazon S3 spécifié doit se trouver dans le même registre Région AWS que celui de votre registre.
   + **Chiffrement S3** : paramètres de chiffrement utilisés par votre tâche d'exportation pour écrire des données dans un compartiment Amazon S3. Pour en savoir plus sur les options de chiffrement côté serveur dans Amazon S3, consultez la section [Protection des données à l'aide du chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) dans le manuel *Amazon* S3 Developer Guide.
     + **Chiffrement par défaut du compartiment** : utilisez les paramètres de chiffrement par défaut du compartiment Amazon S3 spécifié.
     + **AES-256** — Utilisez le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3).
     + **AWS-KMS** — Utilisez le chiffrement côté serveur avec des clés AWS KMS gérées (SSE-KMS).

       Si vous choisissez ce type en même temps que l' AWS KMS key option **Choisir un autre**, vous devez également spécifier une clé KMS de chiffrement symétrique au format Amazon Resource Name (ARN) suivant.

       ```
       arn:aws:kms:aws-region:account-id:key/key-id
       ```
   + **Accès au service** : rôle IAM qui accorde les autorisations d'écriture QLDB dans votre compartiment Amazon S3. Le cas échéant, le rôle IAM doit également accorder des autorisations QLDB pour utiliser votre clé KMS.

     *Pour transmettre un rôle à QLDB lors d'une demande d'exportation de journal, vous devez disposer des autorisations nécessaires pour effectuer `iam:PassRole` l'action sur la ressource du rôle IAM.*
     + **Création et utilisation d'un nouveau rôle de service** : laissez la console créer un nouveau rôle pour vous avec les autorisations requises pour le compartiment Amazon S3 spécifié.
     + **Utiliser un rôle de service existant** : pour savoir comment créer manuellement ce rôle dans IAM, voir[Autorisations d'exportation](export-journal.perms.md).
   + **Format de sortie** : format de sortie des données de journal exportées
     + **Texte ionique** — (par défaut) Représentation textuelle d'Amazon Ion
     + **Binaire ionique** — Représentation binaire d'Amazon Ion
     + **JSON** — Format de texte JSON délimité par une nouvelle ligne

       Si vous choisissez JSON, QLDB abaisse les données du journal Ion en JSON dans vos objets de données exportés. Pour de plus amples informations, veuillez consulter [Conversion descendante au format JSON](export-journal.output.md#export-journal.output.json).

1. Lorsque les paramètres sont tels que vous le souhaitez, choisissez **Create export job**.

   Le temps nécessaire à la fin de votre tâche d'exportation varie en fonction de la taille des données. Si votre demande est soumise avec succès, la console revient à la page **d'exportation** principale et répertorie vos tâches d'exportation avec leur statut actuel.

1. Vous pouvez voir vos objets d'exportation sur la console Amazon S3.

   Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   Pour en savoir plus sur le format de ces objets de sortie, consultez[Sortie d'exportation du journal dans QLDB](export-journal.output.md).

**Note**  
Les tâches d'exportation expirent sept jours après leur fin. Pour de plus amples informations, veuillez consulter [Expiration du travail d'exportation](#export-journal.request.expiration).

## API QLDB
<a name="export-journal.request.api"></a>

Vous pouvez également demander une exportation de journal en utilisant l'API Amazon QLDB avec AWS un SDK ou le. AWS CLI L'API QLDB fournit les opérations suivantes destinées aux programmes d'application :
+ `ExportJournalToS3`— Exporte le contenu du journal dans une plage de dates et d'heures à partir d'un registre donné vers un compartiment Amazon S3 spécifié. Une tâche d'exportation peut écrire les données sous forme d'objets au format texte ou binaire d'Amazon Ion, ou au format texte JSON Lines.
+ `DescribeJournalS3Export`— Renvoie des informations détaillées sur une tâche d'exportation de journal. La sortie inclut son statut actuel, son heure de création et les paramètres de votre demande d'exportation initiale.
+ `ListJournalS3Exports`— Renvoie une liste des descriptions de tâches d'exportation de journaux pour tous les registres associés au livre actuel Compte AWS et à la région. La sortie de chaque description de tâche d'exportation inclut les mêmes informations que celles renvoyées par`DescribeJournalS3Export`.
+ `ListJournalS3ExportsForLedger`— Renvoie une liste des descriptions de tâches d'exportation de journaux pour un registre donné. La sortie de chaque description de tâche d'exportation inclut les mêmes informations que celles renvoyées par`DescribeJournalS3Export`.

Pour une description complète de ces opérations d'API, consultez le[Référence de l'API Amazon QLDB](api-reference.md).

Pour plus d'informations sur l'exportation de données de journal à l'aide de AWS CLI, consultez la [référence des AWS CLI commandes](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html).

### Exemple d'application (Java)
<a name="export-journal.request.api.sample"></a>

Pour des exemples de code Java d'opérations d'exportation de base, consultez le GitHub référentiel [amazon-qldb-dmv-sampleaws-samples/](https://github.com/aws-samples/amazon-qldb-dmv-sample-java) -java. Pour obtenir des instructions sur le téléchargement et l'installation de cet exemple d'application, consultez[Installation de l'exemple d'application Java Amazon QLDB](sample-app.java.md). Avant de demander une exportation, assurez-vous de suivre les étapes 1 à 3 [Tutoriel Java](getting-started.java.tutorial.md) pour créer un registre d'échantillons et le charger avec des exemples de données.

Le code du didacticiel des classes suivantes fournit des exemples de création d'une exportation, de vérification de l'état d'une exportation et de traitement du résultat d'une exportation.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/qldb/latest/developerguide/export-journal.request.html)

## Expiration du travail d'exportation
<a name="export-journal.request.expiration"></a>

Les tâches d'exportation de journaux terminées sont soumises à une période de conservation de 7 jours. Ils sont automatiquement supprimés définitivement après l'expiration de cette limite. Cette période d'expiration est une limite stricte et ne peut pas être modifiée.

Une fois qu'une tâche d'exportation terminée est supprimée, vous ne pouvez plus utiliser la console QLDB ou les opérations d'API suivantes pour récupérer les métadonnées relatives à la tâche :
+ `DescribeJournalS3Export`
+ `ListJournalS3Exports`
+ `ListJournalS3ExportsForLedger`

Toutefois, cette expiration n'a aucun impact sur les données exportées elles-mêmes. Toutes les métadonnées sont conservées dans les fichiers manifestes écrits par vos exportations. Cette expiration est conçue pour faciliter les opérations d'API répertoriant les tâches d'exportation de journaux. QLDB supprime les anciennes tâches d'exportation afin que vous ne puissiez voir que les exportations récentes sans avoir à analyser plusieurs pages de tâches.

# Sortie d'exportation du journal dans QLDB
<a name="export-journal.output"></a>

**Important**  
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez [Migrer un registre Amazon QLDB vers Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

Une tâche d'exportation de journal Amazon QLDB écrit deux fichiers manifestes en plus des objets de données contenant vos blocs de journal. Ils sont tous enregistrés dans le compartiment Amazon S3 que vous avez fourni dans votre [demande d'exportation](export-journal.request.md). Les sections suivantes décrivent le format et le contenu de chaque objet en sortie.

**Note**  
Si vous spécifiez JSON comme format de sortie de votre tâche d'exportation, QLDB convertit les données du journal Amazon Ion en JSON dans vos objets de données exportés. Pour plus d'informations, rendez-vous sur[Conversion descendante au format JSON](#export-journal.output.json).

**Topics**
+ [

## Fichiers manifestes
](#export-journal.output.manifest)
+ [

## Objets de données
](#export-journal.output.data)
+ [

## Conversion descendante au format JSON
](#export-journal.output.json)
+ [

## bibliothèque de processeurs d'exportation (Java)
](#export-journal.output.processor)

## Fichiers manifestes
<a name="export-journal.output.manifest"></a>

Amazon QLDB crée deux fichiers manifestes dans le compartiment S3 fourni pour chaque demande d'exportation. Le fichier *manifeste initial* est créé dès que vous soumettez la demande d'exportation. Le fichier *manifeste final* est écrit une fois l'exportation terminée. Vous pouvez utiliser ces fichiers pour vérifier le statut de vos tâches d'exportation dans Amazon S3.

Le format du contenu des fichiers manifestes correspond au format de sortie demandé pour l'exportation.

### Manifeste initial
<a name="export-journal.output.manifest.initial"></a>

Le manifeste initial indique que votre tâche d'exportation a commencé. Il contient les paramètres d'entrée que vous avez transmis à la demande. Outre la destination Amazon S3 et les paramètres d'heure de début et de fin de l'exportation, ce fichier contient également un`exportId`. `exportId`Il s'agit d'un identifiant unique que QLDB attribue à chaque tâche d'exportation.

La convention de dénomination des fichiers est la suivante.

```
s3://amzn-s3-demo-qldb-cloudtrail/prefix/exportId.started.manifest
```

Voici un exemple de fichier manifeste initial et de son contenu au format texte Ion.

```
s3://amzn-s3-demo-qldb-cloudtrail/journalExport/8UyXulxccYLAsbN1aon7e4.started.manifest
```

```
{
  ledgerName:"my-example-ledger",
  exportId:"8UyXulxccYLAsbN1aon7e4",
  inclusiveStartTime:2019-04-15T00:00:00.000Z,
  exclusiveEndTime:2019-04-15T22:00:00.000Z,
  bucket:"amzn-s3-demo-qldb-cloudtrail",
  prefix:"journalExport",
  objectEncryptionType:"NO_ENCRYPTION",
  outputFormat:"ION_TEXT"
}
```

Le manifeste initial inclut le manifeste `outputFormat` uniquement s'il a été spécifié dans la demande d'exportation. Si vous ne spécifiez pas le format de sortie, les données exportées sont `ION_TEXT` formatées par défaut.

Le fonctionnement de l'API [DescribeJournalS3Export](https://docs.aws.amazon.com/qldb/latest/developerguide/API_DescribeJournalS3Export.html) et le type de contenu des objets Amazon S3 exportés indiquent également le format de sortie.

### Manifeste final
<a name="export-journal.output.manifest.final"></a>

Le manifeste final indique que votre tâche d'exportation pour un *volet* de journal en particulier est terminée. La tâche d'exportation écrit un fichier manifeste final distinct pour chaque volet.

**Note**  
Dans Amazon QLDB, un fil est une partition du journal de votre registre. QLDB prend actuellement en charge les revues à un seul volet.

Le manifeste final inclut une liste ordonnée de clés d'objets de données écrites lors de l'exportation. La convention de dénomination des fichiers est la suivante.

```
s3://amzn-s3-demo-qldb-cloudtrail/prefix/exportId.strandId.completed.manifest
```

`strandId`Il s'agit d'un identifiant unique que QLDB attribue au brin. Voici un exemple de fichier manifeste final et de son contenu au format texte Ion.

```
s3://amzn-s3-demo-qldb-cloudtrail/journalExport/8UyXulxccYLAsbN1aon7e4.JdxjkR9bSYB5jMHWcI464T.completed.manifest
```

```
{
  keys:[
    "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-4.ion",
    "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.5-10.ion",
    "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.11-12.ion",
    "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.13-20.ion",
    "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.21-21.ion"
  ]
}
```

## Objets de données
<a name="export-journal.output.data"></a>

Amazon QLDB écrit les objets de données de journal dans le compartiment Amazon S3 fourni sous forme de texte ou de représentation binaire au format Amazon Ion, ou *au format de texte JSON* Lines.

Au format JSON Lines, chaque bloc d'un objet de données exporté est un objet JSON valide délimité par une nouvelle ligne. Vous pouvez utiliser ce format pour intégrer directement les exportations JSON à des outils d'analyse tels qu'Amazon Athena et AWS Glue parce que ces services peuvent analyser automatiquement le JSON délimité par de nouvelles lignes. Pour plus d'informations sur le format, consultez [Lignes JSON](https://jsonlines.org/).

### Noms des objets de données
<a name="export-journal.output.data.filename"></a>

Une tâche d'exportation de journal écrit ces objets de données selon la convention de dénomination suivante.

```
s3://amzn-s3-demo-qldb-cloudtrail/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
```
+ Les données de sortie de chaque tâche d'exportation sont divisées en morceaux.
+ `yyyy/mm/dd/hh`— La date et l'heure auxquelles vous avez soumis la demande d'exportation. Les objets exportés dans la même heure sont regroupés sous le même préfixe Amazon S3.
+ `strandId`— L'identifiant unique du fil spécifique qui contient le bloc de journal en cours d'exportation.
+ `startSn-endSn`— La plage de numéros de séquence incluse dans l'objet. Un numéro de séquence indique l'emplacement d'un bloc dans un fil.

Supposons, par exemple, que vous spécifiez le chemin suivant.

```
s3://amzn-s3-demo-qldb-cloudtrail/journalExport/
```

Votre tâche d'exportation crée un objet de données Amazon S3 qui ressemble à ce qui suit. Cet exemple montre le nom d'un objet au format Ion.

```
s3://amzn-s3-demo-qldb-cloudtrail/journalExport/2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-5.ion
```

### Contenu de l'objet de données
<a name="export-journal.output.data.contents"></a>

Chaque objet de données contient des objets de bloc de journal au format suivant.

```
{
  blockAddress: {
    strandId: String,
    sequenceNo: Int
  },
  transactionId: String,
  blockTimestamp: Datetime,
  blockHash: SHA256,
  entriesHash: SHA256,
  previousBlockHash: SHA256,
  entriesHashList: [ SHA256 ],
  transactionInfo: {
    statements: [
      {
        //PartiQL statement object
      }
    ],
    documents: {
      //document-table-statement mapping object
    }
  },
  revisions: [
    {
      //document revision object
    }
  ]
}
```

Un *bloc* est un objet qui est enregistré dans le journal lors d'une transaction. Un bloc contient des métadonnées de transaction ainsi que des entrées représentant les révisions du document qui ont été validées dans la transaction et les instructions [partiQL](ql-reference.md) qui les ont validées.

Voici un exemple de bloc contenant des exemples de données au format texte Ion. Pour plus d'informations sur les champs d'un objet de type bloc, consultez[Contenu du journal dans Amazon QLDB](journal-contents.md).

**Note**  
Cet exemple de bloc est fourni à titre informatif uniquement. Les hachages affichés ne sont pas de véritables valeurs de hachage calculées.

```
{
  blockAddress:{
    strandId:"JdxjkR9bSYB5jMHWcI464T",
    sequenceNo:1234
  },
  transactionId:"D35qctdJRU1L1N2VhxbwSn",
  blockTimestamp:2019-10-25T17:20:21.009Z,
  blockHash:{{WYLOfZClk0lYWT3lUsSr0ONXh+Pw8MxxB+9zvTgSvlQ=}},
  entriesHash:{{xN9X96atkMvhvF3nEy6jMSVQzKjHJfz1H3bsNeg8GMA=}},
  previousBlockHash:{{IAfZ0h22ZjvcuHPSBCDy/6XNQTsqEmeY3GW0gBae8mg=}},
  entriesHashList:[
      {{F7rQIKCNn0vXVWPexilGfJn5+MCrtsSQqqVdlQxXpS4=}},
      {{C+L8gRhkzVcxt3qRJpw8w6hVEqA5A6ImGne+E7iHizo=}}
  ],
  transactionInfo:{
    statements:[
      {
        statement:"CREATE TABLE VehicleRegistration",
        startTime:2019-10-25T17:20:20.496Z,
        statementDigest:{{3jeSdejOgp6spJ8huZxDRUtp2fRXRqpOMtG43V0nXg8=}}
      },
      {
        statement:"CREATE INDEX ON VehicleRegistration (VIN)",
        startTime:2019-10-25T17:20:20.549Z,
        statementDigest:{{099D+5ZWDgA7r+aWeNUrWhc8ebBTXjgscq+mZ2dVibI=}}
      },
      {
        statement:"CREATE INDEX ON VehicleRegistration (LicensePlateNumber)",
        startTime:2019-10-25T17:20:20.560Z,
        statementDigest:{{B73tVJzVyVXicnH4n96NzU2L2JFY8e9Tjg895suWMew=}}
      },
      {
        statement:"INSERT INTO VehicleRegistration ?",
        startTime:2019-10-25T17:20:20.595Z,
        statementDigest:{{ggpon5qCXLo95K578YVhAD8ix0A0M5CcBx/W40Ey/Tk=}}
      }
    ],
    documents:{
      '8F0TPCmdNQ6JTRpiLj2TmW':{
        tableName:"VehicleRegistration",
        tableId:"BPxNiDQXCIB5l5F68KZoOz",
        statements:[3]
      }
    }
  },
  revisions:[
    {
      hash:{{FR1IWcWew0yw1TnRklo2YMF/qtwb7ohsu5FD8A4DSVg=}}
    },
    {
      blockAddress:{
        strandId:"JdxjkR9bSYB5jMHWcI464T",
        sequenceNo:1234
      },
      hash:{{t8Hj6/VC4SBitxnvBqJbOmrGytF2XAA/1c0AoSq2NQY=}},
      data:{
        VIN:"1N4AL11D75C109151",
        LicensePlateNumber:"LEWISR261LL",
        State:"WA",
        City:"Seattle",
        PendingPenaltyTicketAmount:90.25,
        ValidFromDate:2017-08-21,
        ValidToDate:2020-05-11,
        Owners:{
          PrimaryOwner:{
            PersonId:"GddsXfIYfDlKCEprOLOwYt"
          },
          SecondaryOwners:[]
        }
      },
      metadata:{
        id:"8F0TPCmdNQ6JTRpiLj2TmW",
        version:0,
        txTime:2019-10-25T17:20:20.618Z,
        txId:"D35qctdJRU1L1N2VhxbwSn"
      }
    }
  ]
}
```

Sur le `revisions` terrain, certains objets de révision peuvent ne contenir qu'une `hash` valeur et aucun autre attribut. Il s'agit de révisions internes du système qui ne contiennent aucune donnée utilisateur. Une tâche d'exportation inclut ces révisions dans leurs blocs respectifs, car les hachages de ces révisions font partie de la chaîne de hachage complète du journal. La chaîne de hachage complète est requise pour la vérification cryptographique.

## Conversion descendante au format JSON
<a name="export-journal.output.json"></a>

Si vous spécifiez JSON comme format de sortie de votre tâche d'exportation, QLDB convertit les données du journal Amazon Ion en JSON dans vos objets de données exportés. Cependant, la conversion d'Ion en JSON entraîne des pertes dans certains cas où vos données utilisent des types d'ions riches qui n'existent pas dans JSON.

Pour en savoir plus sur les règles de conversion d'ions en JSON, consultez la section [Conversion descendante au format JSON](https://amzn.github.io/ion-docs/guides/cookbook.html#down-converting-to-json) dans le livre de recettes *Amazon Ion.*

## bibliothèque de processeurs d'exportation (Java)
<a name="export-journal.output.processor"></a>

QLDB fournit un framework extensible pour Java qui rationalise le traitement des exportations dans Amazon S3. Cette bibliothèque de framework permet de lire le résultat d'une exportation et d'itérer les blocs exportés dans un ordre séquentiel. Pour utiliser ce processeur d'exportation, consultez le GitHub référentiel [amazon-qldb-export-processorawslabs/](https://github.com/awslabs/amazon-qldb-export-processor-java) -java.

# Autorisations d'exportation de journaux dans QLDB
<a name="export-journal.perms"></a>

**Important**  
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez [Migrer un registre Amazon QLDB vers Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

Avant de soumettre une demande d'exportation de journal dans Amazon QLDB, vous devez fournir à QLDB des autorisations d'écriture dans le compartiment Amazon S3 que vous avez spécifié. Si vous choisissez un client géré AWS KMS key comme type de chiffrement d'objet pour votre compartiment Amazon S3, vous devez également autoriser QLDB à utiliser la clé de chiffrement symétrique que vous avez spécifiée. Amazon S3 ne prend pas en charge les [clés KMS asymétriques](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

Pour fournir à votre tâche d'exportation les autorisations nécessaires, vous pouvez faire en sorte que QLDB assume un rôle de service IAM avec les politiques d'autorisation appropriées. Un rôle de service est un [rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) qu’un service endosse pour accomplir des actions en votre nom. Un administrateur IAM peut créer, modifier et supprimer un rôle de service à partir d’IAM. Pour plus d’informations, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*. 

**Note**  
Pour transmettre un rôle à QLDB lors d'une demande d'exportation de journal, vous devez disposer des autorisations nécessaires pour effectuer `iam:PassRole` l'action sur la ressource du rôle IAM. Cela s'ajoute à l'`qldb:ExportJournalToS3`autorisation sur la ressource du registre QLDB.  
Pour savoir comment contrôler l'accès à QLDB à l'aide d'IAM, consultez. [Comment Amazon QLDB fonctionne avec IAM](security_iam_service-with-iam.md) Pour un exemple de politique QLDB, consultez. [Exemples de politiques basées sur l'identité pour Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-export-to-s3-bucket)

Dans cet exemple, vous créez un rôle qui permet à QLDB d'écrire des objets dans un compartiment Amazon S3 en votre nom. Pour plus d’informations, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*.

Si vous exportez un journal QLDB dans Compte AWS votre journal pour la première fois, vous devez d'abord créer un rôle IAM avec les politiques appropriées en procédant comme suit. Vous pouvez également [utiliser la console QLDB](export-journal.request.md#export-journal.request.con) pour créer automatiquement le rôle pour vous. Sinon, vous pouvez choisir un rôle que vous avez créé précédemment.

**Topics**
+ [

## Création d’une stratégie d’autorisations
](#export-journal.perms.create-policy)
+ [

## Créer un rôle IAM
](#export-journal.perms.create-role)

## Création d’une stratégie d’autorisations
<a name="export-journal.perms.create-policy"></a>

Procédez comme suit pour créer une politique d'autorisation pour une tâche d'exportation de journaux QLDB. Cet exemple montre une politique de compartiment Amazon S3 qui accorde à QLDB les autorisations d'écrire des objets dans le compartiment que vous avez spécifié. Le cas échéant, l'exemple montre également une politique de clé qui permet à QLDB d'utiliser votre clé KMS de chiffrement symétrique.

Pour plus d'informations sur les politiques relatives aux compartiments Amazon S3, consultez la section [Utilisation des politiques relatives aux compartiments et des politiques utilisateur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*. Pour en savoir plus sur les politiques AWS KMS clés, consultez la section [Utilisation des politiques clés AWS KMS dans](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) le *Guide du AWS Key Management Service développeur*.

**Note**  
Votre compartiment Amazon S3 et votre clé KMS doivent tous deux se trouver dans le même registre Région AWS que votre registre QLDB.

**Pour utiliser l’éditeur de politique JSON afin de créer une politique**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans la colonne de navigation de gauche, sélectionnez **Politiques**.

   Si vous choisissez **Politiques** pour la première fois, la page **Bienvenue dans les politiques gérées** s'affiche. Sélectionnez **Mise en route**.

1. En haut de la page, sélectionnez **Créer une politique**.

1. Choisissez l’onglet **JSON**.

1. Entrez un document de stratégie JSON.
   + Si vous utilisez une clé KMS gérée par le client pour le chiffrement des objets Amazon S3, utilisez l'exemple de document de politique suivant. Pour utiliser cette politique, remplacez*amzn-s3-demo-qldb-cloudtrail*, *us-east-1**123456789012*, et *1234abcd-12ab-34cd-56ef-1234567890ab* dans l'exemple par vos propres informations.

     ```
     {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "QLDBJournalExportS3Permission",
                 "Action": [
                     "s3:PutObjectAcl",
                     "s3:PutObject"
                 ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:s3:::amzn-s3-demo-qldb-cloudtrail/*"
             },
             {
                 "Sid": "QLDBJournalExportKMSPermission",
                 "Action": [ "kms:GenerateDataKey" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
             }
         ]
     }
     ```
   + Pour les autres types de chiffrement, utilisez l'exemple de document de politique suivant. Pour utiliser cette politique, remplacez-la *amzn-s3-demo-qldb-cloudtrail* dans l'exemple par votre propre nom de compartiment Amazon S3.

     ```
     {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "QLDBJournalExportS3Permission",
                 "Action": [
                     "s3:PutObjectAcl",
                     "s3:PutObject"
                 ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:s3:::amzn-s3-demo-qldb-cloudtrail/*"
             }
         ]
     }
     ```

1. Choisissez **Examiner une politique**.
**Note**  
Vous pouvez basculer à tout moment entre les onglets **Éditeur visuel** et **JSON**. Toutefois, si vous apportez des modifications ou sélectionnez **Examiner une politique** dans l'onglet **Éditeur visuel**, IAM peut restructurer votre politique pour optimiser son affichage dans l'éditeur visuel. Pour de plus amples informations, consulte [Restructuration d'une politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) dans le *Guide de l'utilisateur IAM*.

1. Dans la page **Examiner une politique**, entrez un **nom** et éventuellement une **description** pour la politique que vous êtes en train de créer. Vérifiez le **récapitulatif** de la politique pour voir les autorisations accordées par votre politique. Sélectionnez ensuite **Créer une politique** pour enregistrer votre travail.

## Créer un rôle IAM
<a name="export-journal.perms.create-role"></a>

Après avoir créé une politique d'autorisation pour votre tâche d'exportation de journal QLDB, vous pouvez créer un rôle IAM et y associer votre politique.

**Pour créer le rôle de service pour QLDB (console IAM)**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation de la console IAM, sélectionnez **Roles** (Rôles), puis **Create role** (Créer un rôle).

1. Pour **Trusted entity** (Entité de confiance), choisissez **Service AWS**.

1. Pour **Service ou cas d'utilisation**, choisissez **QLDB**, puis choisissez le cas d'utilisation **QLDB**.

1. Choisissez **Suivant**.

1. Cochez la case à côté de la politique que vous avez créée lors des étapes précédentes.

1. (Facultatif) Définissez une [limite d'autorisations](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Il s’agit d’une fonctionnalité avancée disponible pour les fonctions de service, mais pas pour les rôles liés à un service.

   1. Ouvrez la section **Définir une limite des autorisations** et choisissez **Utiliser une limite des autorisations pour contrôler le nombre maximum d’autorisations de rôle**.

      IAM inclut une liste des politiques AWS gérées et gérées par le client dans votre compte.

   1. Sélectionnez la politique à utiliser comme limite d'autorisations.

1. Choisissez **Suivant**.

1. Entrez un nom de rôle ou un suffixe de nom de rôle pour vous aider à identifier l'objectif du rôle.
**Important**  
Lorsque vous nommez un rôle, notez ce qui suit :  
Les noms de rôles doivent être uniques au sein du Compte AWS vôtre et ne peuvent pas être rendus uniques au cas par cas.  
Par exemple, ne créez pas deux rôles nommés **PRODROLE** et **prodrole**. Lorsqu’un nom de rôle est utilisé dans une politique ou dans le cadre d’un ARN, le nom de rôle est sensible à la casse. Cependant, lorsqu’un nom de rôle apparaît aux clients dans la console, par exemple lors de la procédure d’ouverture de session, le nom de rôle est insensible à la casse.
Vous ne pouvez pas modifier le nom du rôle après sa création, car d’autres entités pourraient y faire référence.

1. (Facultatif) Pour **Description**, saisissez la description du rôle.

1. (Facultatif) Pour modifier les cas d’utilisation et les autorisations du rôle, dans les sections **Étape 1 : sélectionner les entités de confiance** ou **Étape 2 : ajouter des autorisations**, sélectionnez **Modifier**.

1. (Facultatif) Pour identifier, organiser ou rechercher le rôle, ajoutez des identifications sous forme de paires clé-valeur. Pour plus d'informations sur l'utilisation des balises dans IAM, consultez la section [Balises pour les Gestion des identités et des accès AWS ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) dans le Guide de l'*utilisateur d'IAM*.

1. Passez en revue les informations du rôle, puis choisissez **Create role** (Créer un rôle).

Le document JSON suivant est un exemple de politique de confiance qui permet à QLDB d'assumer un rôle IAM auquel des autorisations spécifiques sont associées.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "qldb.amazonaws.com"
            },
            "Action": [ "sts:AssumeRole" ],
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

**Note**  
Cet exemple de politique de confiance montre comment vous pouvez utiliser les touches `aws:SourceArn` contextuelles et de condition `aws:SourceAccount` globale pour éviter le problème de *confusion des adjoints*. Grâce à cette politique de confiance, QLDB peut assumer le rôle de n'importe quelle ressource QLDB du compte uniquement. `123456789012`  
Pour de plus amples informations, veuillez consulter [Prévention du problème de l’adjoint confus entre services](cross-service-confused-deputy-prevention.md).

Après avoir créé votre rôle IAM, revenez à la console QLDB et actualisez **la page Créer une tâche d'exportation** afin qu'elle puisse trouver votre nouveau rôle.

# Erreurs courantes lors de l'exportation de journaux
<a name="export-journal.errors"></a>

**Important**  
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez [Migrer un registre Amazon QLDB vers Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

Cette section décrit les erreurs d'exécution générées par Amazon QLDB pour les demandes d'exportation de journaux.

Voici une liste des exceptions courantes renvoyées par le service. Chaque exception inclut un message d'erreur spécifique, suivi d'une brève description et de suggestions de solutions possibles.<a name="export-journal.errors.varlist"></a>

**AccessDeniedException**  
Message : L'utilisateur n'*userARN*est pas autorisé à exécuter : iam : PassRole on resource : *roleARN*  
Vous n'êtes pas autorisé à transmettre un rôle IAM au service QLDB. QLDB nécessite un rôle pour toutes les demandes d'exportation de journaux, et vous devez disposer des autorisations nécessaires pour transmettre ce rôle à QLDB. Le rôle fournit à QLDB des autorisations d'écriture dans le compartiment Amazon S3 que vous avez spécifié.  
Vérifiez que vous définissez une politique IAM qui autorise l'exécution de l'opération d'`PassRole`API sur la ressource de rôle IAM que vous avez spécifiée pour le service QLDB (). `qldb.amazonaws.com` Pour un exemple de stratégie, consultez [Exemples de politiques basées sur l'identité pour Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-export-to-s3-bucket).

**IllegalArgumentException**  
Message : QLDB a rencontré une erreur lors de la validation de la configuration S3 : *errorCode* *errorMessage*  
Cette erreur peut être due au fait que le compartiment Amazon S3 fourni n'existe pas dans Amazon S3. Ou bien, QLDB ne dispose pas des autorisations suffisantes pour écrire des objets dans le compartiment Amazon S3 que vous avez spécifié.  
Vérifiez que le nom du compartiment S3 que vous fournissez dans votre demande de tâche d'exportation est correct. Pour plus d'informations sur la dénomination des compartiments, consultez la section [Restrictions et limitations des](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) compartiments dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.  
Vérifiez également que vous définissez une politique pour le compartiment que vous avez spécifié qui accorde `PutObject` des `PutObjectAcl` autorisations au service QLDB (). `qldb.amazonaws.com` Pour en savoir plus, veuillez consulter la section [Autorisations d'exportation](export-journal.perms.md).

**IllegalArgumentException**  
Message : réponse inattendue d'Amazon S3 lors de la validation de la configuration S3. Réponse de S3 : *errorCode* *errorMessage*  
La tentative d'écriture des données d'exportation du journal dans le compartiment S3 fourni a échoué avec la réponse d'erreur Amazon S3 fournie. Pour plus d'informations sur les causes possibles, consultez la section [Résolution des problèmes liés à Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.  


**IllegalArgumentException**  
Message : le préfixe du compartiment Amazon S3 ne doit pas dépasser 128 caractères  
Le préfixe fourni dans la demande d'exportation du journal contient plus de 128 caractères.

**IllegalArgumentException**  
Message : La date de début ne doit pas être supérieure à la date de fin  
Les deux `InclusiveStartTime` `ExclusiveEndTime` doivent être au format de date et d'heure [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) et en temps universel coordonné (UTC).

**IllegalArgumentException**  
Message : La date de fin ne peut pas être future  
Les deux `InclusiveStartTime` `ExclusiveEndTime` doivent être au format `ISO 8601` date et heure et en UTC.

**IllegalArgumentException**  
Message : Le paramètre de chiffrement d'objet fourni (S3EncryptionConfiguration) n'est pas compatible avec une clé AWS Key Management Service (AWS KMS)  
Vous avez fourni `KMSKeyArn` l'un `ObjectEncryptionType` des deux `NO_ENCRYPTION` ou`SSE_S3`. Vous ne pouvez fournir qu'un client géré AWS KMS key pour un type de chiffrement d'objet de`SSE_KMS`. Pour en savoir plus sur les options de chiffrement côté serveur dans Amazon S3, consultez la section [Protection des données à l'aide du chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) dans le manuel *Amazon* S3 Developer Guide.

**LimitExceededException**  
Message : Dépassement de la limite de 2 tâches d'exportation du Journal exécutées simultanément  
QLDB impose une limite par défaut de deux tâches d'exportation de journaux simultanées.