

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exportação de dados do diário do Amazon QLDB
<a name="export-journal"></a>

**Importante**  
Aviso de fim do suporte: os clientes existentes poderão usar o Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte [Migrar um Amazon QLDB Ledger para o Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

O Amazon QLDB usa um log transacional imutável, conhecido como *diário*, para armazenamento de dados. O diário rastreia todas as alterações em seus dados confirmados e mantém um histórico de alterações completo e verificável ao longo do tempo.

Você pode acessar o conteúdo do diário em seu livro para vários fins, incluindo análise, auditoria, retenção de dados, verificação e exportação para outros sistemas. Os seguintes tópicos descrevem como exportar [blocos](journal-contents.md) de diário do seu ledger para um bucket do Amazon Simple Storage Service (Amazon S3) no seu Conta da AWS. Um trabalho de exportação de diário grava seus dados no Amazon S3 como objetos na representação de texto ou binária do formato [Amazon Ion](ion.md) ou no formato de texto *Linhas JSON*.

No formato JSON Lines, cada bloco em um objeto de dados exportado é um objeto JSON válido delimitado por uma nova linha. Você pode usar esse formato para integrar diretamente as exportações JSON com ferramentas de análise, como o Amazon Athena, AWS Glue e porque esses serviços podem analisar automaticamente o JSON delimitado por novas linhas. Para obter mais informações sobre o formato, consulte [Linhas JSON](https://jsonlines.org/).

Para obter informações sobre o Amazon S3, consulte o [Guia do usuário do Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

**nota**  
Se você especificar JSON como o formato de saída do seu trabalho de exportação, o QLDB converterá negativamente os dados do diário Ion em JSON nos objetos de dados exportados. Para obter mais informações, consulte [Conversão descendente para JSON](export-journal.output.md#export-journal.output.json).

**Topics**
+ [Solicitar uma exportação de diário no QLDB](export-journal.request.md)
+ [Saída de exportação de diário no QLDB](export-journal.output.md)
+ [Permissões de exportação de diário no QLDB](export-journal.perms.md)
+ [Erros comuns na exportação de diários](export-journal.errors.md)

# Solicitar uma exportação de diário no QLDB
<a name="export-journal.request"></a>

**Importante**  
Aviso de fim do suporte: os clientes existentes poderão usar o Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte [Migrar um Amazon QLDB Ledger para o Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

O Amazon QLDB fornece uma API para solicitar a exportação de seus blocos de diário para um intervalo de data e hora especificado e um destino específico do bucket do Amazon S3. Um trabalho de exportação de diário pode gravar os objetos de dados no texto ou na representação binária do formato [Amazon Ion](ion.md) ou no formato de texto [JSON Lines](https://jsonlines.org/). Você pode usar o Console de gerenciamento da AWS, um AWS SDK ou o AWS Command Line Interface (AWS CLI) para criar um trabalho de exportação.

**Topics**
+ [Console de gerenciamento da AWS](#export-journal.request.con)
+ [API QLDB](#export-journal.request.api)
+ [Expiração do trabalho de exportação](#export-journal.request.expiration)

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

Siga estas etapas para enviar uma solicitação de exportação de diário no QLDB usando o console do QLDB.

**Para solicitar uma exportação (console)**

1. [Faça login no e abra Console de gerenciamento da AWS o console do Amazon QLDB em /qldb. https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. No painel de navegação, selecione **Exportar**.

1. Escolha **Criar exportação**.

1. Na página **Criar tarefa de exportação**, insira as seguintes configurações de exportação:
   + **ledger**: o ledger cujos blocos de diário você deseja exportar.
   + **Data e hora de início**: a data e hora inclusiva de início no Horário Universal Coordenado (UTC) do intervalo de blocos de diário a serem exportados. Esse carimbo de data/hora deve ser anterior à **data e hora de término**. Se você fornecer uma data e hora de início anterior à `CreationDateTime` do ledger, o QLDB usará como padrão a `CreationDateTime` do ledger .
   + **Data e hora de término**: a data e hora de término (UTC) exclusiva da variedade de blocos de diário a serem exportados. Essa data e hora não podem estar no futuro.
   + **Destino dos blocos de diário**: o bucket do Amazon S3 e o nome do prefixo no qual seu trabalho de exportação grava os objetos de dados. Use o seguinte formato de URI do Amazon S3.

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

     É necessário especificar um nome de bucket do S3 e um nome de prefixo opcional para os objetos de saída. Veja um exemplo a seguir.

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

     O nome e o prefixo do bucket devem estar em conformidade com as regras e convenções de nomenclatura do Amazon S3. Para obter informações sobre como nomear buckets, consulte [Restrições e limitações de buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) no *Guia do usuário do Amazon S3*. Para ter mais informações sobre prefixos de nomes de chaves, consulte [Chave de objeto e metadados](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html).
**nota**  
Exportações entre regiões não são compatíveis. O bucket especificado do Amazon S3 deve estar no mesmo que seu livro Região da AWS contábil.
   + **Criptografia S3**: as configurações de criptografia usadas pelo seu trabalho de exportação para gravar dados em um bucket do Amazon S3. Para obter mais informações sobre o uso da criptografia no lado do servidor no Amazon S3, consulte [ Proteger dados usando criptografia no lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html), no *Guia do desenvolvedor do Amazon S3*.
     + **Criptografia padrão do bucket**: use as configurações de criptografia padrão do bucket do Amazon S3 especificado.
     + **AES-256**: use criptografia no lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).
     + **AWS-KMS** — Use criptografia do lado do servidor com AWS KMS chaves gerenciadas (SSE-KMS).

       Se você escolher esse tipo junto com a opção **Escolher uma opção diferente AWS KMS key**, também deverá especificar uma chave KMS de criptografia simétrica no seguinte formato de nome do recurso da Amazon (ARN).

       ```
       arn:aws:kms:aws-region:account-id:key/key-id
       ```
   + **Acesso ao serviço**: o perfil do IAM que concede permissões de gravação ao QLDB em seu bucket do Amazon S3. Se aplicável, o perfil do IAM também deve conceder permissões ao QLDB para usar sua chave KMS.

     *Para transmitir um perfil ao QLDB ao solicitar uma exportação de diário, você deve ter permissões para realizar a ação `iam:PassRole` no recurso do perfil do IAM.*
     + **Crie e use um novo perfil de serviço**: deixe o console criar uma nova função para você com as permissões necessárias para o bucket do Amazon S3 especificado.
     + **Use um perfil de serviço existente**: para saber como criar essa função manualmente no IAM, consulte [Permissões de exportação](export-journal.perms.md).
   + **Formato de saída**: o formato de saída dos dados exportados do diário
     + **Texto de íons**: (padrão) representação de texto do Amazon Ion
     + **Binário de íons**: representação binária do Amazon Ion
     + **JSON**: formato de texto JSON delimitado por nova linha

       Se você escolher JSON, o QLDB converterá negativamente os dados do diário Ion em JSON nos objetos de dados exportados. Para obter mais informações, consulte [Conversão descendente para JSON](export-journal.output.md#export-journal.output.json).

1. Quando estiver satisfeito com as configurações, escolha **Criar trabalho de exportação**.

   O tempo necessário para a conclusão do trabalho de exportação varia dependendo do tamanho dos dados. Se o envio da solicitação for bem-sucedido, o console retornará à página principal de **Exportação** e listará seus trabalhos de exportação com o status atual.

1. É possível ver seus objetos de exportação no console do Amazon S3.

   Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   Para saber mais sobre o formato desses objetos de saída, consulte [Saída de exportação de diário no QLDB](export-journal.output.md).

**nota**  
Os trabalhos de exportação expiram sete dias após serem concluídos. Para obter mais informações, consulte [Expiração do trabalho de exportação](#export-journal.request.expiration).

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

Você também pode solicitar a exportação de um diário usando a API Amazon QLDB com AWS um SDK ou o. AWS CLI A API do QLDB fornece as seguintes operações para uso por programas aplicativos:
+ `ExportJournalToS3`: exporta o conteúdo do diário dentro de um intervalo de data e hora de um determinado ledger para um bucket específico do Amazon S3. Um trabalho de exportação pode gravar os dados como objetos no texto ou na representação binária do formato Amazon Ion ou no formato de texto JSON Lines.
+ `DescribeJournalS3Export`: devolve informações detalhadas sobre um trabalho de exportação de diário. A saída inclui seu status atual, hora de criação e os parâmetros da sua solicitação de exportação original.
+ `ListJournalS3Exports`: devolve uma lista de descrições de trabalhos de exportação de diários para todos os ledgers associados à atual Conta da AWS e à região. A saída de cada descrição do trabalho de exportação inclui os mesmos detalhes retornados por `DescribeJournalS3Export`.
+ `ListJournalS3ExportsForLedger`: devolve uma lista de descrições de trabalhos de exportação de diários para um determinado ledger. A saída de cada descrição do trabalho de exportação inclui os mesmos detalhes retornados por `DescribeJournalS3Export`.

Para uma descrição completa dessas operações de API, consulte o [Referência da API do Amazon QLDB](api-reference.md).

Para obter informações sobre como exportar dados do diário usando o AWS CLI, consulte a [Referência de AWS CLI Comandos](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html).

### Aplicativos de exemplo (Java)
<a name="export-journal.request.api.sample"></a>

Para exemplos de código Java de operações básicas de exportação, consulte o GitHub repositório [amazon-qldb-dmv-sampleaws-samples/](https://github.com/aws-samples/amazon-qldb-dmv-sample-java) -java. Para obter instruções sobre como baixar e instalar esse aplicativo de amostra, consulte [Como instalar o aplicativo de amostra Java do Amazon QLDB](sample-app.java.md). Antes de solicitar uma exportação, siga as etapas de 1 a 3 em [Tutorial de Java](getting-started.java.tutorial.md) para criar um ledger de amostra e carregá-lo com dados de amostra.

O código do tutorial nas classes a seguir fornece exemplos de como criar uma exportação, verificar o status de uma exportação e processar a saída de uma exportação.

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

## Expiração do trabalho de exportação
<a name="export-journal.request.expiration"></a>

Os trabalhos de exportação de diários concluídos estão sujeitos a um período de retenção de 7 dias. Eles são excluídos automaticamente após a expiração desse limite. Esse período de expiração é um limite fixo e não pode ser alterado.

Depois que um trabalho de exportação concluído for excluído, você não poderá mais usar o console do QLDB ou as seguintes operações de API para recuperar metadados sobre o trabalho:
+ `DescribeJournalS3Export`
+ `ListJournalS3Exports`
+ `ListJournalS3ExportsForLedger`

No entanto, essa expiração não afeta os dados exportados em si. Todos os metadados são preservados nos arquivos de manifesto gravados por suas exportações. Essa expiração foi projetada para fornecer uma experiência mais tranquila para as operações de API que listam trabalhos de exportação de diários. O QLDB remove trabalhos de exportação antigos para garantir que você veja apenas exportações recentes sem precisar analisar várias páginas de trabalhos.

# Saída de exportação de diário no QLDB
<a name="export-journal.output"></a>

**Importante**  
Aviso de fim do suporte: os clientes existentes poderão usar o Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte [Migrar um Amazon QLDB Ledger para o Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Um trabalho de exportação de diário do Amazon QLDB grava dois arquivos de manifesto, além dos objetos de dados que contêm seus blocos de diário. Esses arquivos são salvos no bucket do Amazon S3 fornecido por você na [solicitação de exportação](export-journal.request.md). As seções a seguir descrevem o formato e o conteúdo de cada objeto de saída.

**nota**  
Se você especificar JSON como formato de saída do seu trabalho de exportação, o QLDB converterá negativamente os dados do diário do Amazon Ion em JSON nos objetos de dados exportados. Para obter mais informações, acesse o [Conversão descendente para JSON](#export-journal.output.json).

**Topics**
+ [Arquivos de manifesto](#export-journal.output.manifest)
+ [Objetos de dados](#export-journal.output.data)
+ [Conversão descendente para JSON](#export-journal.output.json)
+ [Biblioteca de processadores de exportação (Java)](#export-journal.output.processor)

## Arquivos de manifesto
<a name="export-journal.output.manifest"></a>

O Amazon QLDB cria dois arquivos de manifesto no bucket do S3 fornecido para cada solicitação de exportação. O arquivo de *manifesto inicial* é criado assim que você envia a solicitação de exportação. O arquivo de *manifesto final* é gravado após a conclusão da exportação. Você pode usar esses arquivos para verificar o status dos seus trabalhos de exportação no Amazon S3.

O formato do conteúdo dos arquivos de manifesto corresponde ao formato de saída solicitado para a exportação.

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

O manifesto inicial indica que seu trabalho de exportação foi iniciado. Ele contém os parâmetros de entrada que você passou para a solicitação. Além do destino do Amazon S3 e dos parâmetros de horário de início e término da exportação, esse arquivo também contém um `exportId`. O `exportId` é um ID exclusivo atribuído pelo QLDB a cada tarefa de exportação.

A convenção de nomenclatura de arquivos é a seguinte.

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

Veja a seguir um exemplo de manifesto inicial e seu conteúdo no 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"
}
```

O manifesto inicial inclui `outputFormat` somente se tiver sido especificado na solicitação de exportação. Se você não especificar o formato de saída, os dados exportados assumirão o formato padrão `ION_TEXT`.

A operação da API [DescribeJournalS3Export](https://docs.aws.amazon.com/qldb/latest/developerguide/API_DescribeJournalS3Export.html) e o tipo de conteúdo dos objetos Amazon S3 exportados também indicam o formato de saída.

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

O manifesto final indica que seu trabalho de exportação para uma determinada *cadeia* do diário foi concluído. O trabalho de exportação grava um arquivo de manifesto final separado para cada cadeia.

**nota**  
No Amazon QLDB, uma cadeia é uma partição do diário do seu ledger. Atualmente, o QLDB suporta diários com apenas uma única vertente.

O manifesto final inclui uma lista ordenada de chaves de objetos de dados que foram gravadas durante a exportação. A convenção de nomenclatura de arquivos é a seguinte.

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

O `strandId` é um ID exclusivo atribuído pelo QLDB à cadeia de caracteres. Veja a seguir um exemplo de manifesto final e seu conteúdo em 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 dados
<a name="export-journal.output.data"></a>

O Amazon QLDB grava objetos de dados de diário no bucket Amazon S3 fornecido na representação de texto ou binária do formato Amazon Ion ou no formato de texto *JSON Lines*.

No formato JSON Lines, cada bloco em um objeto de dados exportado é um objeto JSON válido delimitado por uma nova linha. Você pode usar esse formato para integrar diretamente as exportações JSON com ferramentas de análise, como o Amazon Athena, AWS Glue e porque esses serviços podem analisar automaticamente o JSON delimitado por novas linhas. Para obter mais informações sobre o formato, consulte [Linhas JSON](https://jsonlines.org/).

### Nomes de objeto de dados
<a name="export-journal.output.data.filename"></a>

Um trabalho de exportação de diário grava esses objetos de dados com a seguinte convenção de nomenclatura.

```
s3://amzn-s3-demo-qldb-cloudtrail/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
```
+ Os dados de saída de cada trabalho de exportação são divididos em partes.
+ `yyyy/mm/dd/hh`: a data e a hora em que você enviou a solicitação de exportação. Objetos que são exportados na mesma hora são agrupados sob o mesmo prefixo do Amazon S3.
+ `strandId`: o ID exclusivo da cadeia específica que contém o bloco de diário que está sendo exportado.
+ `startSn-endSn`: o intervalo de números de sequência incluído no objeto. Um número de sequência especifica a localização de um bloco dentro de uma cadeia.

Por exemplo, suponha que você especifique o seguinte caminho.

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

Seu trabalho de exportação cria um objeto de dados do Amazon S3 semelhante ao seguinte. Este exemplo mostra um nome de objeto no formato Ion.

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

### Conteúdo do objeto de dados
<a name="export-journal.output.data.contents"></a>

Cada objeto de dados contém objetos de bloco de diário com o seguinte 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
    }
  ]
}
```

Um *bloco* é um objeto que é confirmado no diário durante uma transação. Um bloco contém metadados da transação junto com entradas que representam as revisões do documento que foram confirmadas na transação e as declarações [PartiQL](ql-reference.md) que as confirmaram.

O exemplo a seguir é de um bloco com dados de amostra em formato de texto Ion. Para obter mais informações sobre os campos em um objeto de bloco, consulte [Conteúdo do diário no Amazon QLDB](journal-contents.md).

**nota**  
Este exemplo de bloco é fornecido apenas para fins informativos. Os hashes mostrados não são valores reais de hash calculados.

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

No campo `revisions`, alguns objetos de revisão podem conter apenas um valor `hash` e nenhum outro atributo. Essas são revisões de sistema somente internas que não contêm dados do usuário. Um trabalho de exportação inclui essas revisões em seus respectivos blocos porque os hashes dessas revisões fazem parte da cadeia de hash completa do diário. A cadeia de hash completa é necessária para a verificação criptográfica.

## Conversão descendente para JSON
<a name="export-journal.output.json"></a>

Se você especificar JSON como formato de saída do seu trabalho de exportação, o QLDB converterá negativamente os dados do diário do Amazon Ion em JSON nos objetos de dados exportados. No entanto, a conversão de Ion para JSON causa perdas em alguns casos em que seus dados usam os tipos ricos de Ion que não existem em JSON.

Para obter detalhes sobre as regras de conversão de Ion para JSON, consulte [Conversão descendente para JSON](https://amzn.github.io/ion-docs/guides/cookbook.html#down-converting-to-json) no *Cookbook Amazon Ion*.

## Biblioteca de processadores de exportação (Java)
<a name="export-journal.output.processor"></a>

O QLDB fornece uma estrutura extensível para Java que simplifica o processamento de exportações no Amazon S3. Essa biblioteca de estrutura lida com o trabalho de ler a saída de uma exportação e iterar os blocos exportados em ordem sequencial. Para usar esse processador de exportação, consulte o GitHub repositório [amazon-qldb-export-processorawslabs/](https://github.com/awslabs/amazon-qldb-export-processor-java) -java.

# Permissões de exportação de diário no QLDB
<a name="export-journal.perms"></a>

**Importante**  
Aviso de fim do suporte: os clientes existentes poderão usar o Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte [Migrar um Amazon QLDB Ledger para o Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Antes de enviar uma solicitação de exportação de diário no Amazon QLDB, você deve fornecer ao QLDB permissões de gravação no bucket especificado do Amazon S3. Se você escolher um cliente gerenciado AWS KMS key como o tipo de criptografia de objeto para seu bucket Amazon S3, você também deverá fornecer ao QLDB permissões para usar sua chave de criptografia simétrica especificada. O Amazon RDS não oferece suporte para [chaves do KMS assimétricas](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

Para fornecer ao seu trabalho de exportação as permissões necessárias, você pode fazer com que o QLDB assuma um perfil de serviço do IAM com as políticas de permissões apropriadas. O perfil de serviço é um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que um serviço assume para executar ações em seu nome. Um administrador do IAM pode criar, modificar e excluir um perfil de serviço do IAM. Para obter mais informações, consulte [Criar um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do Usuário do IAM*. 

**nota**  
Para transmitir um perfil ao QLDB ao solicitar uma exportação de diário, você deve ter permissões para realizar a ação `iam:PassRole` no recurso do perfil do IAM. Isso é um acréscimo à `qldb:ExportJournalToS3` permissão no recurso de contabilidade do QLDB.  
Para saber como controlar o acesso ao QLDB usando o IAM, consulte [Como o Amazon QLDB funciona com o IAM](security_iam_service-with-iam.md). Para ver um exemplo de política do QLDB, consulte [Exemplos de políticas baseadas em identidade para o Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-export-to-s3-bucket).

Neste exemplo, você cria uma função que permite ao QLDB gravar objetos em um bucket do Amazon S3 em seu nome. Para obter mais informações, consulte [Criar um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do usuário do IAM*.

Se você estiver exportando um diário do QLDB pela primeira vez, primeiro deverá criar uma função do IAM com as políticas apropriadas fazendo o seguinte. Conta da AWS Ou você pode [usar o console do QLDB](export-journal.request.md#export-journal.request.con) para criar automaticamente a função para você. Caso contrário, você poderá escolher uma função que você criou anteriormente.

**Topics**
+ [Criação de uma política de permissões](#export-journal.perms.create-policy)
+ [Criar um perfil do IAM](#export-journal.perms.create-role)

## Criação de uma política de permissões
<a name="export-journal.perms.create-policy"></a>

Conclua as etapas a seguir para criar uma política de permissões para um trabalho de exportação de diário do QLDB. Este exemplo mostra uma política de bucket do Amazon S3 que concede permissões ao QLDB para gravar objetos em seu bucket especificado. Se aplicável, o exemplo também mostra uma política de chave que permite que o QLDB use sua chave KMS de criptografia simétrica.

Para obter mais informações sobre políticas de bucket do Amazon S3, consulte [Uso de políticas de bucket e políticas de usuário](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html) no *Guia do Usuário Amazon Simple Storage Service*. Para obter mais informações sobre políticas de chave do AWS KMS , consulte [Uso de políticas de chave no AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) no *Guia do desenvolvedor do AWS Key Management Service *.

**nota**  
Seu bucket do Amazon S3 e sua chave KMS devem estar no mesmo livro contábil do Região da AWS QLDB.

**Para usar o editor de políticas JSON para criar uma política**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Na coluna de navegação à esquerda, selecione **Políticas**.

   Se essa for a primeira vez que você escolhe **Políticas**, a página **Bem-vindo às políticas gerenciadas** será exibida. Escolha **Começar**.

1. Na parte superior da página, escolha **Criar política**.

1. Selecione a guia **JSON**.

1. Insira um documento de política JSON.
   + Se você estiver usando uma chave KMS gerenciada pelo cliente para criptografia de objetos do Amazon S3, use o seguinte exemplo de documento de política. Para usar essa política, substitua *amzn-s3-demo-qldb-cloudtrail**us-east-1*,*123456789012*,, e *1234abcd-12ab-34cd-56ef-1234567890ab* no exemplo por suas próprias informações.

     ```
     {
         "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 outros tipos de criptografia, use o seguinte exemplo de documento de política. Para usar essa política, substitua *amzn-s3-demo-qldb-cloudtrail* no exemplo pelo nome do seu próprio bucket do 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. Selecione **Revisar política**.
**nota**  
Você pode alternar entre as guias **Editor visual** e **JSON** sempre que quiser. No entanto, se você fizer alterações ou escolher **Revisar política** na guia **Editor visual**, o IAM pode reestruturar sua política de forma a otimizá-la para o editor visual. Para obter mais informações, consulte [Restruturação de política](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) no *Manual do usuário do IAM*.

1. Na página **Review policy (Revisar política)**, insira um **Name (Nome)** e uma **Description (Descrição)** opcional para a política que você está criando. Revise o **Resumo** da política para ver as permissões que são concedidas pela política. Em seguida, escolha **Criar política** para salvar seu trabalho.

## Criar um perfil do IAM
<a name="export-journal.perms.create-role"></a>

Depois de criar uma política de permissões para seu trabalho de exportação de diário do QLDB, você pode criar um perfil do IAM e anexar sua política a ela.

**Para criar um perfil de serviço para QLDB (console do IAM)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis** e, em seguida, **Criar perfil**.

1. Em **Tipo de Entidade Confiável**, escolha **AWS service (Serviço da AWS)**.

1. Para **Serviço ou caso de uso**, escolha **QLDB** e, em seguida, escolha o caso de uso do **QLDB**.

1. Escolha **Próximo**.

1. Selecione a caixa ao lado da política que você criou nas etapas anteriores.

1. (Opcional) Defina um [limite de permissões](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Esse é um atributo avançado que está disponível para perfis de serviço, mas não para perfis vinculados ao serviço.

   1. Abra a seção **Definir limite de permissões** e escolha **Usar um limite de permissões para controlar o número máximo de permissões do perfil**.

      O IAM inclui uma lista das políticas AWS gerenciadas e gerenciadas pelo cliente em sua conta.

   1. Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Insira um nome de perfil ou um sufixo de nome de perfil para ajudar a identificar a finalidade do perfil.
**Importante**  
Quando nomear um perfil, observe o seguinte:  
Os nomes das funções devem ser exclusivos dentro de você Conta da AWS e não podem ser diferenciados por maiúsculas e minúsculas.  
Por exemplo, não crie dois perfis denominados **PRODROLE** e **prodrole**. Quando usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. No entanto, quando exibido para os clientes no console, como durante o processo de login, o nome de perfil diferencia maiúsculas de minúsculas.
Não é possível editar o nome do perfil depois de criá-lo porque outras entidades podem referenciar o perfil.

1. (Opcional) Em **Descrição**, insira uma descrição para o perfil.

1. (Opcional) Para editar os casos de uso e as permissões do perfil, escolha **Editar** nas seções **Etapa 1: selecionar entidades confiáveis** ou **Etapa 2: adicionar permissões**.

1. (Opcional) Para ajudar a identificar, organizar ou pesquisar o perfil, adicione tags como pares de chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte [Tags para AWS Identity and Access Management recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) no *Guia do usuário do IAM*.

1. Reveja a função e escolha **Criar função**.

O documento JSON a seguir é um exemplo de política de confiança que permite ao QLDB assumir um perfil do IAM com permissões específicas anexadas.

```
{
    "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**  
O exemplo a seguir mostra como é possível usar as chaves de contexto de condição globais `aws:SourceArn` e `aws:SourceAccount` para evitar o problema de *substituto confuso*. Com essa política de confiança, o QLDB pode assumir a função de qualquer recurso do QLDB somente na conta `123456789012`.  
Para obter mais informações, consulte [Prevenção contra o ataque do “substituto confuso” em todos os serviços](cross-service-confused-deputy-prevention.md).

Depois de criar seu perfil do IAM, retorne ao console do QLDB e atualize a página **Criar tarefa de exportação** para que ele possa encontrar seu novo perfil.

# Erros comuns na exportação de diários
<a name="export-journal.errors"></a>

**Importante**  
Aviso de fim do suporte: os clientes existentes poderão usar o Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte [Migrar um Amazon QLDB Ledger para o Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Esta seção descreve os erros de runtime que são lançados pelo Amazon QLDB para solicitações de exportação de diários.

Veja a seguir uma lista de exceções comuns retornadas pelo serviço. Cada exceção inclui a mensagem de erro específica, seguida por uma breve descrição e sugestões de possíveis soluções.<a name="export-journal.errors.varlist"></a>

**AccessDeniedException**  
Mensagem: Usuário: não *userARN* está autorizado a realizar: iam: PassRole no recurso: *roleARN*  
Você não tem permissões para passar um perfil do IAM para o serviço do QLDB. O QLDB exige um perfil para todas as solicitações de exportação de diários, e você deve ter permissões para passar esse perfil para o QLDB. O perfil fornece ao QLDB permissões de gravação no bucket especificado do Amazon S3.  
Verifique se você define uma política do IAM que concede permissão para realizar a operação da API `PassRole` no seu recurso de perfil do IAM especificado para o serviço QLDB (`qldb.amazonaws.com`). Para ver um exemplo de política, consulte [Exemplos de políticas baseadas em identidade para o Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-export-to-s3-bucket).

**IllegalArgumentException**  
Mensagem: O QLDB encontrou um erro ao validar a configuração do S3: *errorCode* *errorMessage*  
Uma possível causa desse erro é que o bucket do Amazon S3 fornecido não existe no Amazon S3. Ou o QLDB não tem permissões suficientes para gravar objetos em seu bucket do Amazon S3 especificado.  
Verifique se o nome do bucket do S3 fornecido na solicitação de trabalho de exportação está correto. Para obter informações sobre a nomenclatura de buckets, consulte [Restrições e limitações do bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) no *Guia do usuário do Amazon Simple Storage Service*.  
Além disso, verifique se você define uma política para o bucket especificado que concede `PutObject` e `PutObjectAcl` permissões ao serviço QLDB (`qldb.amazonaws.com`). Para saber mais, consulte [Permissões de exportação](export-journal.perms.md).

**IllegalArgumentException**  
Mensagem: Resposta inesperada do Amazon S3 ao validar a configuração do S3. Resposta do S3: *errorCode* *errorMessage*  
A tentativa de gravar dados de exportação do diário no bucket do S3 fornecido falhou com a resposta de erro fornecida pelo Amazon S3. Para obter mais informações sobre as causas possíveis, consulte [Solução de problemas do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) no *Guia do usuário do Amazon Simple Storage Service*.  


**IllegalArgumentException**  
Mensagem: O prefixo do bucket do Amazon S3 não deve exceder 128 caracteres  
O prefixo fornecido na solicitação de exportação do diário contém mais de 128 caracteres.

**IllegalArgumentException**  
Mensagem: A data de início não deve ser maior que a data de término  
O `InclusiveStartTime` e `ExclusiveEndTime` devem estar no formato de data e hora [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) e em UTC (Tempo Universal Coordenado).

**IllegalArgumentException**  
Mensagem: A data de término não pode ser no futuro  
O `InclusiveStartTime` e `ExclusiveEndTime` devem estar no formato de data e hora `ISO 8601` e em UTC.

**IllegalArgumentException**  
Mensagem: A configuração de criptografia de objeto fornecida (S3EncryptionConfiguration) não é compatível com uma chave AWS Key Management Service (AWS KMS)  
Você forneceu um `KMSKeyArn` com um `ObjectEncryptionType` de `NO_ENCRYPTION` ou `SSE_S3`. Você só pode fornecer um cliente gerenciado AWS KMS key para um tipo de criptografia de objeto de `SSE_KMS`. Para obter mais informações sobre o uso da criptografia no lado do servidor no Amazon S3, consulte [Proteger dados usando criptografia no lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html), no *Guia do desenvolvedor do Amazon S3*.

**LimitExceededException**  
Mensagem: Excedeu o limite de 2 trabalhos de exportação de diário em execução simultânea  
O QLDB impõe um limite padrão de dois trabalhos simultâneos de exportação de diário.