

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Exportación de datos de diarios desde Amazon QLDB
<a name="export-journal"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

Amazon QLDB utiliza un registro transaccional inmutable, conocido como *diario*, para el almacenamiento de datos. El diario realiza un seguimiento de cada cambio en los datos confirmados y mantiene un historial de cambios completo y que se pueda verificar con el paso del tiempo.

Puede acceder al contenido del diario de su libro mayor para diversos fines, como el análisis, la auditoría, la retención de datos, la verificación y la exportación a otros sistemas. Los siguientes temas describen cómo exportar [bloques](journal-contents.md) de libro mayor a un bucket de Amazon Simple Storage Service (Amazon S3) en su Cuenta de AWS. Un trabajo de exportación de diarios escribe los datos en Amazon S3 como objetos en el formato de texto o binario de [Amazon Ion](ion.md), o en el formato de texto de *líneas JSON*.

En el formato JSON Lines, cada bloque de un objeto de datos exportado es un objeto JSON válido que está delimitado por saltos de línea. Puede usar este formato para integrar directamente las exportaciones de JSON con herramientas de análisis como Amazon Athena y AWS Glue porque estos servicios pueden analizar automáticamente el JSON delimitado por nuevas líneas. Para obtener más información sobre el formato de datos, consulte [JSON Lines](https://jsonlines.org/).

Para obtener más información acerca de Amazon S3, consulte la [Guía del usuario de Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

**nota**  
Si especifica JSON como formato de salida de su trabajo de exportación, QLDB convierte de forma descendente los datos del diario de Ion a JSON en los objetos de datos exportados. Para obtener más información, consulte [Conversión descendente a JSON](export-journal.output.md#export-journal.output.json).

**Topics**
+ [Cómo solicitar la exportación de una diario en QLDB](export-journal.request.md)
+ [Salida de exportación de diarios en QLDB](export-journal.output.md)
+ [Permisos de exportación de diarios en QLDB](export-journal.perms.md)
+ [Errores comunes en la exportación de diarios](export-journal.errors.md)

# Cómo solicitar la exportación de una diario en QLDB
<a name="export-journal.request"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

Amazon QLDB proporciona una API para solicitar la exportación de sus bloques de diario para un intervalo de fechas y horas específico y para un destino de bucket de Amazon S3 específico. Un trabajo de exportación del diario puede escribir los objetos de datos en el formato de texto o binario de [Amazon Ion](ion.md), o en el formato de texto [JSON Lines](https://jsonlines.org/). Puede usar el Consola de administración de AWS, un AWS SDK o el AWS Command Line Interface (AWS CLI) para crear un trabajo de exportación.

**Topics**
+ [Consola de administración de AWS](#export-journal.request.con)
+ [API DE QLDB](#export-journal.request.api)
+ [Caducidad del trabajo de exportación](#export-journal.request.expiration)

## Consola de administración de AWS
<a name="export-journal.request.con"></a>

Siga estos pasos para enviar una solicitud de exportación de diarios en QLDB mediante la consola de QLDB.

**Solicitud de una exportación (consola)**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon QLDB en /qldb. https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. En el panel de navegación, elija **Exportar**.

1. Elija **Crear trabajo de exportación**. 

1. En la página **Crear trabajo de exportación**, introduzca los siguientes ajustes de exportación:
   + **Libro mayor**: el libro mayor cuyos bloques de diario desea exportar.
   + **Fecha y hora de inicio**: la marca horaria de inicio incluida en la hora universal coordinada (UTC) del rango de bloques de diario que se van a exportar. Esta marca de tiempo debe ser anterior a la **Fecha y hora de finalización**. Si proporciona una marca de tiempo de inicio anterior a la `CreationDateTime` del libro mayor, QLDB la asigna por defecto a la `CreationDateTime` del libro mayor.
   + **Fecha y hora de finalización**: la marca de tiempo de finalización (UTC) exclusiva del rango de bloques de diario que se va a exportar. Estas fecha y hora no pueden estar en el futuro.
   + **Destino de los bloques de diario**: el nombre del prefijo y el bucket de Amazon S3 en los que el trabajo de exportación escribe los objetos de datos. Utilice el siguiente formato de URI de Amazon S3.

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

     Debe especificar un nombre de bucket de S3 y un nombre de prefijo opcional para los objetos de salida. A continuación se muestra un ejemplo.

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

     Tanto el nombre como el prefijo del bucket deben cumplir con las normas y convenciones de nomenclatura de Amazon S3. Para obtener más información sobre la nomenclatura de buckets, consulte [Restricciones y limitaciones de los buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) en la *Guía para desarrolladores de Amazon S3*. Para obtener más información sobre prefijos de nombre de clave, consulte [Clave y metadatos de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html).
**nota**  
No se admiten exportaciones entre regiones. El bucket de Amazon S3 especificado debe estar en el mismo lugar Región de AWS que su libro mayor.
   + **Cifrado S3**: la configuración de cifrado que utiliza su trabajo de exportación para escribir datos en un bucket de Amazon S3. Para obtener más información sobre opciones de cifrado del servidor en Amazon S3, consulte [Protección de datos mediante cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) en la *Guía para desarrolladores de Amazon S3*.
     + **Cifrado predeterminado del bucket**: utilice la configuración de cifrado predeterminada del bucket de Amazon S3 especificado.
     + **AES-256**: utilice el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3).
     + **AWS-KMS**: utilice el cifrado del lado del servidor con claves AWS KMS administradas (SSE-KMS).

       Si elige este tipo junto con la opción **Elegir otra AWS KMS key**, también debe especificar una clave KMS de cifrado simétrico en el siguiente formato de nombre de recurso de Amazon (ARN).

       ```
       arn:aws:kms:aws-region:account-id:key/key-id
       ```
   + **Acceso al servicio**: el rol de IAM que concede permisos de escritura de QLDB en su bucket de Amazon S3. Si corresponde, el rol de IAM también debe conceder permisos de QLDB para usar su clave de KMS.

     *Para transferir un rol a QLDB al solicitar una exportación de diario, debe tener permisos para realizar la acción `iam:PassRole` en el recurso de rol de IAM.*
     + **Crear y utilizar un nuevo rol de servicio**: deje que la consola cree un nuevo rol para usted con los permisos necesarios para el bucket de Amazon S3 especificado.
     + **Utilizar un rol de servicio existente**: para obtener información sobre cómo crear manualmente este rol en IAM, consulte [Permisos de exportación](export-journal.perms.md).
   + **Formato de salida**: el formato de salida de los datos de su diario exportados
     + **Ion en texto**: representación textual (predeterminada) de Amazon Ion
     + **Ion binario**: representación binaria de Amazon Ion
     + **JSON**: formato de texto JSON delimitado por saltos de línea

       Si elige JSON, QLDB convierte de forma descendente los datos del diario de Ion a JSON en los objetos de datos exportados. Para obtener más información, consulte [Conversión descendente a JSON](export-journal.output.md#export-journal.output.json).

1. Cuando esté conforme con los ajustes, elija **Crear**.

   El tiempo que tarda en finalizar el trabajo de exportación varía según el tamaño de los datos. Si la solicitud se envía correctamente, la consola vuelve a la página principal de **Exportación** y muestra los trabajos de exportación con su estado actual.

1. Puede ver los objetos de exportación en la consola de Amazon S3.

   Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   Para obtener más información sobre el formato de estos objetos de salida, consulte [Salida de exportación de diarios en QLDB](export-journal.output.md).

**nota**  
Los trabajos de exportación caducan siete días después de completarse. Para obtener más información, consulte [Caducidad del trabajo de exportación](#export-journal.request.expiration).

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

También puede solicitar la exportación de una revista mediante la API de Amazon QLDB con AWS un SDK o el. AWS CLI La API de QLDB ofrece las siguientes operaciones para usarlas en los programas de aplicación:
+ `ExportJournalToS3`: exporta el contenido del diario dentro de un intervalo de fechas y horas de un libro mayor determinado a un bucket de Amazon S3 específico. Un trabajo de exportación escribe los objetos de datos como objetos en el formato de texto o binario de Amazon Ion, o en el formato de texto de líneas JSON.
+ `DescribeJournalS3Export`: devuelve información detallada sobre un trabajo de exportación de diario. El resultado incluye su estado actual, la hora de creación y los parámetros de la solicitud de exportación original.
+ `ListJournalS3Exports`: devuelve una lista de las descripciones de los trabajos de exportación de diarios de todos los libros mayores asociados a la Cuenta de AWS y a la región actuales. El resultado de cada descripción del trabajo de exportación incluye los mismos detalles que devuelve `DescribeJournalS3Export`.
+ `ListJournalS3ExportsForLedger`: devuelve una lista de las descripciones de los trabajos de exportación de diarios de un libro mayor determinado. El resultado de cada descripción del trabajo de exportación incluye los mismos detalles que devuelve `DescribeJournalS3Export`.

Para obtener una descripción completa de estas operaciones de API, consulte la [Referencia de la API de Amazon QLDB](api-reference.md).

Para obtener información sobre la exportación de datos de revistas mediante el AWS CLI, consulte la Referencia de [AWS CLI comandos](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html).

### Aplicación de ejemplo (Java)
<a name="export-journal.request.api.sample"></a>

Para ver ejemplos de operaciones de exportación básicas en código Java, consulte el GitHub repositorio [amazon-qldb-dmv-sampleaws-samples/](https://github.com/aws-samples/amazon-qldb-dmv-sample-java) -java. Para obtener instrucciones acerca de cómo descargar e instalar esta aplicación de ejemplo, consulte [Instalación de la aplicación de ejemplo Java de Amazon QLDB](sample-app.java.md). Antes de solicitar una exportación, siga los pasos del 1 al 3 de [Tutorial de Java](getting-started.java.tutorial.md) para crear un libro mayor de muestra y cargarlo con datos de ejemplo.

El código del tutorial de las siguientes clases proporciona ejemplos de cómo crear una exportación, comprobar el estado de una exportación y procesar el resultado de una exportación.

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

## Caducidad del trabajo de exportación
<a name="export-journal.request.expiration"></a>

Los trabajos de exportación de diarios finalizados están sujetos a un período de retención de 7 días. Una vez transcurrido este límite, se eliminan automáticamente de forma permanente. Este período de caducidad es un límite codificado y no se puede cambiar.

Después de que un trabajo de exportación completado se haya eliminado, ya no podrá utilizar la consola de QLDB ni las siguientes operaciones de API para recuperar metadatos sobre el trabajo:
+ `DescribeJournalS3Export`
+ `ListJournalS3Exports`
+ `ListJournalS3ExportsForLedger`

Sin embargo, esta caducidad no afecta a los datos exportados en sí mismos. Todos los metadatos se conservan en los archivos de manifiesto que se escriben en las exportaciones. Esta caducidad está diseñada para proporcionar una experiencia más fluida a las operaciones de la API que enumeran los trabajos de exportación de diarios. QLDB elimina los trabajos de exportación antiguos para garantizar que solo vea las exportaciones recientes sin tener que analizar múltiples páginas de trabajos.

# Salida de exportación de diarios en QLDB
<a name="export-journal.output"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

Un trabajo de exportación de diarios de Amazon QLDB escribe dos archivos de manifiesto además de los objetos de datos que contienen sus bloques de diario. Todos estos archivos se guardan en el bucket de Amazon S3 que especifique en su [solicitud de exportación](export-journal.request.md). En las siguientes secciones se describe el formato y el contenido de cada objeto de salida.

**nota**  
Si especifica JSON como formato de salida de su trabajo de exportación, QLDB convierte de forma descendente los datos del diario de Amazon Ion a JSON en los objetos de datos exportados. Para obtener más información, vaya a [Conversión descendente a JSON](#export-journal.output.json).

**Topics**
+ [Archivos de manifiesto](#export-journal.output.manifest)
+ [Objetos de datos](#export-journal.output.data)
+ [Conversión descendente a JSON](#export-journal.output.json)
+ [Biblioteca de procesador de exportación (Java)](#export-journal.output.processor)

## Archivos de manifiesto
<a name="export-journal.output.manifest"></a>

Amazon QLDB crea dos archivos de manifiesto en el bucket de S3 proporcionado para cada solicitud de exportación. El archivo de *manifiesto inicial* se crea en cuanto envía la solicitud de exportación. El archivo de *manifiesto final* se escribe una vez finalizada la exportación. Puede utilizar estos archivos para comprobar el estado de sus trabajos de exportación en Amazon S3.

El formato del contenido de los archivos de manifiesto corresponde al formato de salida solicitado para la exportación.

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

El manifiesto inicial indica que su trabajo de exportación ha comenzado. Contiene los parámetros de entrada que has transferido a la solicitud. Además del destino de Amazon S3 y los parámetros de hora de inicio y finalización de la exportación, este archivo también contiene un `exportId`. El `exportId` es un identificador único que QLDB asigna a cada trabajo de exportación.

La convención de nomenclatura de archivos es la siguiente.

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

A continuación se incluye un ejemplo de un archivo de manifiesto inicial y su contenido en formato de texto 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"
}
```

El manifiesto inicial solo incluye el `outputFormat` si se especificó en la solicitud de exportación. Si no especifica el formato de salida, los datos exportados tomarán el formato `ION_TEXT` predeterminado.

La operación de la API [DescribeJournalS3Export](https://docs.aws.amazon.com/qldb/latest/developerguide/API_DescribeJournalS3Export.html) y el tipo de contenido de los objetos de Amazon S3 exportados también indican el formato de salida.

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

El manifiesto final indica que su trabajo de exportación para una *cadena* concreta del diario ha finalizado. El trabajo de exportación escribe un archivo de manifiesto final independiente para cada cadena.

**nota**  
En Amazon QLDB, una cadena es una partición del diario del libro mayor. Actualmente, QLDB admite diarios con una sola cadena.

El manifiesto final incluye una lista ordenada de claves de objetos de datos que se escribieron durante la exportación. La convención de nomenclatura de archivos es la siguiente.

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

El `strandId` es un identificador único que QLDB asigna a la cadena. A continuación se incluye un ejemplo de un archivo de manifiesto final y su contenido en formato de texto 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"
  ]
}
```

## Objetos de datos
<a name="export-journal.output.data"></a>

Amazon QLDB escribe los objetos de datos del diario en el bucket Amazon S3 especificado en el formato de texto o binario de Amazon Ion, o en el formato de texto de *líneas JSON*.

En el formato JSON Lines, cada bloque de un objeto de datos exportado es un objeto JSON válido que está delimitado por saltos de línea. Puede usar este formato para integrar directamente las exportaciones de JSON con herramientas de análisis como Amazon Athena y AWS Glue porque estos servicios pueden analizar automáticamente el JSON delimitado por nuevas líneas. Para obtener más información sobre el formato de datos, consulte [JSON Lines](https://jsonlines.org/).

### Nombres de objetos de datos
<a name="export-journal.output.data.filename"></a>

Un trabajo de exportación de diarios escribe estos objetos de datos con la siguiente convención de nomenclatura.

```
s3://amzn-s3-demo-qldb-cloudtrail/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
```
+ Los datos de salida de cada trabajo de exportación se dividen en partes.
+ `yyyy/mm/dd/hh`: la fecha y hora en que envió la solicitud de exportación. Los objetos que se exportan en la misma hora se agrupan con el mismo prefijo de Amazon S3.
+ `strandId`: el identificador único de la cadena del diario concreta que contiene el bloque del diario que se va a exportar.
+ `startSn-endSn`: el rango de números de secuencia que se incluye en el objeto. Un número de secuencia especifica la ubicación de un bloque dentro de una cadena.

Por ejemplo, suponga que especifica la siguiente ruta.

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

El trabajo de exportación crea un objeto de datos de Amazon S3 similar al siguiente. Este ejemplo muestra el nombre de un objeto en formato Ion.

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

### Contenido del objeto de datos
<a name="export-journal.output.data.contents"></a>

Cada objeto de datos contiene objetos de bloques de diario con el siguiente formato.

```
{
  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 *bloque* es un objeto que se asigna al diario durante una transacción. Un bloque contiene metadatos de transacciones junto con entradas que representan las revisiones del documento que se registraron en la transacción y las instrucciones [PartiQL](ql-reference.md) que las confirmaron.

A continuación, se muestra un ejemplo de un bloque con datos de ejemplo en formato de texto Ion. Para obtener más información sobre los campos en un objeto de bloque, consulte [Contenido del diario en Amazon QLDB](journal-contents.md).

**nota**  
Este ejemplo de bloque se ofrece solo con fines informativos. Los hash que se muestran no son valores hash calculados reales.

```
{
  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"
      }
    }
  ]
}
```

En el campo `revisions`, es posible que algunos objetos de revisión contengan solo un valor `hash` y ningún otro atributo. Son revisiones del sistema exclusivamente internas que no contienen datos de usuario. Un trabajo de exportación incluye estas revisiones en sus bloques respectivos porque los hashes de estas revisiones forman parte de toda la cadena de hash del diario. Se requiere la cadena de hash completa para la verificación criptográfica.

## Conversión descendente a JSON
<a name="export-journal.output.json"></a>

Si especifica JSON como formato de salida de su trabajo de exportación, QLDB convierte de forma descendente los datos del diario de Amazon Ion a JSON en los objetos de datos exportados. Sin embargo, la conversión de Ion a JSON conlleva pérdidas en algunos casos en los que los datos emplean tipos de Ion enriquecidos que no existen en JSON.

Para obtener más información sobre las reglas de conversión de Ion a JSON, consulte [Conversión descendente a JSON](https://amzn.github.io/ion-docs/guides/cookbook.html#down-converting-to-json) en *Amazon Ion Cookbook*.

## Biblioteca de procesador de exportación (Java)
<a name="export-journal.output.processor"></a>

QLDB ofrece un marco extensible para Java que agiliza el procesamiento de las exportaciones en Amazon S3. Esta biblioteca de marcos se encarga del trabajo de leer el resultado de una exportación e iterar los bloques exportados en orden secuencial. [Para usar este procesador de exportación, consulte el repositorio awslabs/ -java GitHub . amazon-qldb-export-processor](https://github.com/awslabs/amazon-qldb-export-processor-java)

# Permisos de exportación de diarios en QLDB
<a name="export-journal.perms"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

Antes de enviar una solicitud de exportación de diarios en Amazon QLDB, debe proporcionar a QLDB permisos de escritura en el bucket de Amazon S3 especificado. Si elige una AWS KMS key administrada por el cliente como tipo de cifrado de objetos para su bucket de Amazon S3, también debe proporcionar a QLDB permisos para utilizar la clave de cifrado simétrica especificada. Amazon S3 no admite las [claves de KMS asimétricas](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

Para proporcionar a su trabajo de exportación los permisos necesarios, puede hacer que QLDB asuma un rol de servicio de IAM con las políticas de permisos adecuadas. Un rol de servicio es un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que asume un servicio para realizar acciones en su nombre. Un administrador de IAM puede crear, modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte [Creación de un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*. 

**nota**  
Para transferir un rol a QLDB al solicitar una exportación de diario, debe tener permisos para realizar la acción `iam:PassRole` en el recurso de rol de IAM. Esto se suma al permiso `qldb:ExportJournalToS3` del recurso de libro mayor de QLDB.  
Para obtener información sobre cómo controlar el acceso a QLDB mediante IAM, consulte [Cómo funciona Amazon QLDB con IAM](security_iam_service-with-iam.md). Para ver una política de ejemplo de QLDB, consulte [Ejemplos de políticas basadas en identidades para Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-export-to-s3-bucket).

En este ejemplo, se crea un rol que permite a QLDB escribir objetos en un bucket de Amazon S3 en su nombre. Para obtener más información, consulta [Creación de un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*.

Si es la primera vez que exporta un diario de QLDB, primero debe crear un rol de IAM con las políticas adecuadas de la siguiente manera. Cuenta de AWS O bien, puede [usar la consola de QLDB](export-journal.request.md#export-journal.request.con) para que cree automáticamente el rol por usted. También puede elegir un rol que haya creado anteriormente.

**Topics**
+ [Creación de una política de permisos](#export-journal.perms.create-policy)
+ [Creación de un rol de IAM](#export-journal.perms.create-role)

## Creación de una política de permisos
<a name="export-journal.perms.create-policy"></a>

Complete los siguientes pasos para crear una política de permisos para un trabajo de exportación de diarios de QLDB. En este ejemplo, se muestra una política de bucket de Amazon S3 que concede permisos de QLDB para escribir objetos en el bucket especificado. Si corresponde, el ejemplo también muestra una política de claves que permite a QLDB utilizar su clave KMS de cifrado simétrica.

Para obtener más información acerca de las políticas de bucket para Amazon S3, consulte [Uso de políticas de bucket y políticas de usuario](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html) en la *Guía del usuario de Amazon Simple Storage Service*. Para obtener más información acerca de las políticas de claves de AWS KMS , consulte [Uso de las políticas de claves en AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) en la *Guía para desarrolladores de AWS Key Management Service *.

**nota**  
Tanto el bucket de Amazon S3 como la clave de KMS deben estar en el mismo lugar que el Región de AWS libro mayor de QLDB.

**Utilización del editor de política de JSON para la creación de una política**

1. Inicie sesión en la consola de Consola de administración de AWS IAM y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. En la columna de navegación de la izquierda, elija **Políticas**.

   Si es la primera vez que elige **Políticas**, aparecerá la página **Bienvenido a políticas administradas**. Elija **Comenzar**.

1. En la parte superior de la página, seleccione **Crear política**.

1. Seleccione la pestaña **JSON**.

1. Especifique un documento de política JSON.
   + Si utiliza una clave de KMS administrada por el cliente para el cifrado de objetos de Amazon S3, utilice el siguiente documento de política de ejemplo. Para usar esta política, sustituya*amzn-s3-demo-qldb-cloudtrail*,*us-east-1*, y*123456789012*, *1234abcd-12ab-34cd-56ef-1234567890ab* en el ejemplo, por su propia información.

     ```
     {
         "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"
             }
         ]
     }
     ```
   + Para otros tipos de cifrado, utilice el siguiente ejemplo de documento de política. Para usar esta política, *amzn-s3-demo-qldb-cloudtrail* sustitúyala en el ejemplo por tu propio nombre de bucket de 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. Elija **Revisar política**.
**nota**  
Puede alternar entre las pestañas **Visual editor (Editor visual)** y **JSON** en cualquier momento. Sin embargo, si realiza cambios o elige **Review policy** en la pestaña **Visual editor**, IAM podría reestructurar la política para optimizarla para el editor visual. Para obtener más información, consulte [Reestructuración de política](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) en la *Guía del usuario de IAM*.

1. En la página **Review Policy (Revisar política)**, ingrese un **Nombre** y una **descripción** (opcional) para la política que está creando. Revise el **Summary** (Resumen) de la política para ver los permisos concedidos por su política. A continuación, elija **Create policy** (Crear política) para guardar su trabajo.

## Creación de un rol de IAM
<a name="export-journal.perms.create-role"></a>

Tras crear una política de permisos para su trabajo de exportación de diarios de QLDB, puede crear un rol de IAM y adjuntarle su política.

**Creación de un rol de servicio de QLDB (consola de IAM)**

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, seleccione **Roles** y, a continuación, elija **Crear rol**.

1. En **Tipo de entidad de confianza**, elija **Servicio de AWS**.

1. En **Servicio o caso de uso**, seleccione **QLDB** y, a continuación, el caso de uso **QLDB**.

1. Elija **Siguiente**.

1. Seleccione la casilla junto a la política que ha creado en los pasos anteriores.

1. (Opcional) Configure un [límite de permisos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Se trata de una característica avanzada que está disponible para los roles de servicio, pero no para los roles vinculados a servicios.

   1. Abra la sección **Configurar límite de permisos** y, a continuación, elija **Utilizar un límite de permisos para controlar los permisos que puedes tener el rol como máximo**.

      IAM incluye una lista de las políticas AWS gestionadas y gestionadas por los clientes de tu cuenta.

   1. Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Siguiente**.

1. Escriba un nombre o sufijo de nombre para el rol, que pueda ayudarle a identificar su finalidad.
**importante**  
Cuando asigne un nombre a un rol, tenga en cuenta lo siguiente:  
Los nombres de los roles deben ser únicos dentro de tu perfil Cuenta de AWS y no se pueden hacer únicos por mayúsculas y minúsculas.  
Por ejemplo, no puedes crear roles denominados tanto **PRODROLE** como **prodrole**. Cuando se utiliza un nombre de rol en una política o como parte de un ARN, el nombre de rol distingue entre mayúsculas y minúsculas, sin embargo, cuando un nombre de rol les aparece a los clientes en la consola, como por ejemplo durante el proceso de inicio de sesión, el nombre de rol no distingue entre mayúsculas y minúsculas.
Dado que otras entidades podrían hacer referencia al rol, no es posible editar el nombre del rol una vez creado.

1. (Opcional) **En Descripción**, ingrese una descripción para el rol.

1. (Opcional) Para editar los casos de uso y los permisos de la función, en las secciones **Paso 1: Seleccionar entidades confiables** o en **Paso 2: Agregar permisos**, elija **Editar**.

1. (Opcional) Para ayudar a identificar, organizar o buscar el rol, agregue etiquetas como pares clave-valor. Para obtener más información sobre el uso de etiquetas en IAM, consulte [Etiquetas para obtener AWS Identity and Access Management recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) en la Guía del *usuario de IAM*.

1. Revise el rol y, a continuación, elija **Crear rol**.

El siguiente documento JSON es un ejemplo de una política de confianza que permite a QLDB asumir un rol de IAM con permisos específicos asociados.

```
{
    "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"
                }
            }
        }
    ]
}
```

**nota**  
El siguiente ejemplo de política de confianza muestra cómo se pueden utilizar las claves contextuales de condición global `aws:SourceArn` y `aws:SourceAccount` para evitar el problema del *suplente confuso*. Con esta política de confianza, QLDB solo puede asumir el rol de cualquier recurso de QLDB en la cuenta `123456789012`.  
Para obtener más información, consulte [Prevención de la sustitución confusa entre servicios](cross-service-confused-deputy-prevention.md).

Tras crear su rol de IAM, vuelva a la consola de QLDB y actualice la página **Crear trabajo de exportación** para que pueda encontrar su nuevo rol.

# Errores comunes en la exportación de diarios
<a name="export-journal.errors"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

En esta sección se describen los errores de tiempo de ejecución que genera Amazon QLDB para las solicitudes de exportación de diarios.

La siguiente es una lista de excepciones comunes devueltas por el servicio. Cada excepción incluye el mensaje de error específico, seguido de una breve descripción y sugerencias de posibles soluciones.<a name="export-journal.errors.varlist"></a>

**AccessDeniedException**  
Mensaje: Usuario: no *userARN* está autorizado a realizar: iam: on resource: PassRole *roleARN*  
No tiene permisos para transferir un rol de IAM al servicio QLDB. QLDB requiere un rol para todas las solicitudes de exportación de diarios y debe tener permisos para transferir este rol a QLDB. El rol proporciona a QLDB permisos de escritura en el bucket de Amazon S3 especificado.  
Compruebe que ha definido una política de IAM que conceda permiso para realizar la operación de API `PassRole` en el recurso de rol de IAM especificado para el servicio QLDB (`qldb.amazonaws.com`). Para ver una política de ejemplo, consulte [Ejemplos de políticas basadas en identidades para Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-export-to-s3-bucket).

**IllegalArgumentException**  
Mensaje: QLDB detectó un error al validar la configuración de S3: *errorCode* *errorMessage*  
Una posible causa de este error es que el bucket de Amazon S3 proporcionado no existe en Amazon S3. O bien, QLDB no tiene permisos suficientes para escribir objetos en el bucket de Amazon S3 especificado.  
Compruebe que el nombre del bucket de S3 que proporcionó en su solicitud de trabajo de exportación es correcto. Para obtener información sobre la nomenclatura de buckets, consulte [Restricciones y limitaciones de los buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) en la *Guía del usuario de Amazon Simple Storage Service*.  
Además, compruebe que ha definido una política para el bucket especificado que conceda los permisos `PutObject` y `PutObjectAcl` al servicio QLDB (`qldb.amazonaws.com`). Para obtener más información, consulte [Permisos de exportación](export-journal.perms.md).

**IllegalArgumentException**  
Mensaje: Unexpected response from Amazon S3 while validating the S3 configuration. Respuesta de S3: *errorCode* *errorMessage*  
El intento de escribir los datos de exportación del diario en el bucket de S3 proporcionado falló con la respuesta de error de Amazon S3 proporcionada. Para obtener más información acerca de las posibles causas, consulte [Solución de problemas de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) en la *Guía de usuario de Amazon Simple Storage Service*.  


**IllegalArgumentException**  
Mensaje: Amazon S3 bucket prefix must not exceed 128 characters  
El prefijo proporcionado en la solicitud de exportación del diario contiene más de 128 caracteres.

**IllegalArgumentException**  
Mensaje: Start date must not be greater than end date  
`InclusiveStartTime` y `ExclusiveEndTime` deben estar en formato de fecha y hora [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) y en hora universal coordinada (UTC).

**IllegalArgumentException**  
Mensaje: End date cannot be in the future  
Tanto `InclusiveStartTime` como `ExclusiveEndTime` deben estar en formato `ISO 8601` de fecha y hora y en UTC.

**IllegalArgumentException**  
Mensaje: La configuración de cifrado de objetos (S3EncryptionConfiguration) proporcionada no es compatible con una clave AWS Key Management Service (AWS KMS)  
Ha proporcionado un `KMSKeyArn` con un `ObjectEncryptionType` de `NO_ENCRYPTION` o `SSE_S3`. Solo puede proporcionar una AWS KMS key administrada por el cliente para un tipo de cifrado de objeto `SSE_KMS`. Para obtener más información sobre opciones de cifrado del servidor en Amazon S3, consulte [Protección de datos mediante cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) en la *Guía para desarrolladores de Amazon S3*.

**LimitExceededException**  
Mensaje: Exceeded the limit of 2 concurrently running Journal export jobs  
QLDB impone un límite predeterminado de dos trabajos de exportación de diarios simultáneos.