

# Manutenção da funcionalidade Tabelas do S3
<a name="s3-tables-maintenance-overview"></a>

O Amazon S3 executa a manutenção automaticamente para aprimorar o desempenho das tabelas em buckets de tabela do S3. A manutenção é realizada no bucket de tabela e em cada tabela e inclui o seguinte:

**Manutenção em nível de bucket de tabela:**  
+ **Remoção de arquivos sem referência**: limpa arquivos órfãos para otimizar o uso e os custos do armazenamento.

**Manutenção em nível de tabela:**  
+ **Compactação de arquivos**: consolida arquivos pequenos para melhorar o desempenho das consultas e reduzir os custos de armazenamento.
+ **Gerenciamento de snapshots**: controla o histórico de versões da tabela e evita o aumento excessivo de metadados.

Essas opções não são permitidas por padrão. Você pode editar ou desabilitar essas operações por meio de arquivos de configuração de manutenção. 

Além dessas opções, também é possível habilitar e definir as configurações de expiração de registros de tabelas. Com essa opção, o Amazon S3 remove automaticamente os registros de uma tabela quando eles expiram.

**Topics**
+ [Status de trabalhos de manutenção da funcionalidade Tabelas do S3](s3-tables-maintenance-status.md)
+ [Manutenção para buckets de tabela](s3-table-buckets-maintenance.md)
+ [Manutenção de tabelas](s3-tables-maintenance.md)
+ [Expiração do registro de tabelas](s3-tables-record-expiration.md)
+ [Considerações e limitações para trabalhos de manutenção](s3-tables-considerations.md)

# Status de trabalhos de manutenção da funcionalidade Tabelas do S3
<a name="s3-tables-maintenance-status"></a>

Os trabalhos de manutenção da funcionalidade Tabelas do S3 são executados periodicamente para as tabelas ou os buckets de tabela do S3. Você pode consultar o status desses trabalhos com a API `GetTableMaintenanceJobStatus`.

**Como obter o status de trabalhos de manutenção usando a AWS CLI**  
O exemplo a seguir obterá os status de trabalhos de manutenção usando a API `GetTableMaintenanceJobStatus`.  

```
aws s3tables get-table-maintenance-job-status \
   --table-bucket-arn="arn:aws:s3tables:arn:aws::111122223333:bucket/amzn-s3-demo-bucket1" \
   --namespace="mynamespace" \
   --name="testtable"
```
Para ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/get-table-maintenance-job-status.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/get-table-maintenance-job-status.html) na *Referência de comandos da AWS CLI*.

Os trabalhos de manutenção da funcionalidade Tabelas do S3 podem transitar entre quatro status possíveis:
+ `Successful`
+ `Failed`
+ `Disabled`
+ `Not_Yet_Run`

Os trabalhos com status de falha incluirão uma mensagem de falha. A lista a seguir descreve possíveis mensagens de falha. 
+ Foi encontrada uma exceção de validação do Iceberg ao tentar ler a tabela. Verifique se sua tabela está legível, segue a especificação do Iceberg e contém somente caminhos do S3 que começam com o alias de tabela do S3.
+ No momento, o gerenciamento de snapshots do Iceberg não aceita tags ou referências definidas pelo usuário.
+ A configuração de manutenção de tabelas do Iceberg é incompatível com as propriedades de tabela “history.expire.max-snapshot-age-ms” e “history.expire.min-snapshots-to-keep”.
+ O gerenciamento de snapshots do Iceberg e a remoção de arquivos sem referência não são compatíveis quando a propriedade de tabela “gc.enabled” está definida como falsa. Essa propriedade não deve estar definida ou explicitamente definida como verdadeira.
+ Falha na confirmação devido a metadados desatualizados. A manutenção será repetida na próxima oportunidade disponível.
+ Acesso insuficiente para realizar manutenção de tabelas. A chave usada para criptografar a tabela deve estar ativa e ter uma política de recursos que conceda acesso à entidade principal de serviço `maintenance.s3tables.amazonaws.com` do S3.
**nota**  
 Para ter mais informações sobre as permissões do AWS KMS para Tabelas do S3, consulte [Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3](s3-tables-kms-permissions.md). 
+ Erro interno

# Manutenção para buckets de tabela
<a name="s3-table-buckets-maintenance"></a>

O Amazon S3 oferece operações de manutenção para aprimorar o gerenciamento e a performance dos buckets de tabela. A opção a seguir é habilitada por padrão para todos os buckets de tabela. Você pode editar ou desabilitar essa opção especificando um arquivo de configuração de manutenção para o bucket de tabela.

A edição dessa configuração requer a permissão `s3tables:PutTableBucketMaintenanceConfiguration`.

**Topics**
+ [Remoção de arquivos sem referência](#s3-table-bucket-maintenance-unreferenced)
+ [Considerações e limitações](#s3-tables-buckets-considerations-see-more)

## Remoção de arquivos sem referência
<a name="s3-table-bucket-maintenance-unreferenced"></a>

A remoção de arquivos sem referência identifica e exclui todos os objetos que não são referidos por nenhum snapshot de tabela. Como parte da política de remoção de arquivos sem referência, você pode configurar duas propriedades: `unreferencedDays` (três dias por padrão) e `nonCurrentDays` (dez dias por padrão).

Para qualquer objeto não referenciado pela tabela e mais antigo que a propriedade `unreferencedDays`, o S3 marca o objeto como desatualizado. O S3 exclui objetos desatualizados após o número de dias especificado pela propriedade `nonCurrentDays`.

**nota**  
As exclusões de objetos desatualizados são permanentes, sem nenhuma maneira de recuperá-los.

Para visualizar ou recuperar objetos que foram marcados como desatualizados, você deve entrar em contato com o AWS Support. Para obter informações sobre como entrar em contato com o AWS Support, consulte [Entrar em contato com a AWS](https://aws.amazon.com/contact-us/) ou a [Documentação do AWS Support](https://aws.amazon.com/documentation/aws-support/).

A remoção de arquivos não referenciados determina os objetos a serem excluídos de uma tabela somente com referência a essa tabela. Qualquer referência feita a esses objetos fora da tabela não impedirá que a remoção de arquivos não referenciados exclua um objeto.

Se você desativar a remoção de arquivos não referenciados, nenhum trabalho em andamento será afetado. A nova configuração entrará em vigor no próximo trabalho após a alteração da configuração. Para ter mais informações, consulte as informações sobre preços na [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

Você só pode configurar a remoção de arquivos não referenciados ao nível do bucket de tabela. Essa configuração se aplicará a todas as tabelas do bucket.

**Como configurar a remoção de arquivos não referenciados usando a AWS CLI**  
O exemplo a seguir definirá `unreferencedDays` como 4 dias e `nonCurrentDays` como 10 dias usando a API `PutTableBucketMaintenanceConfiguration`.  

```
aws s3tables put-table-bucket-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergUnreferencedFileRemoval \
   --value '{"status":"enabled","settings":{"icebergUnreferencedFileRemoval":{"unreferencedDays":4,"nonCurrentDays":10}}}'
```

Para ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-bucket-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-bucket-maintenance-configuration.html) na *Referência de comandos da AWS CLI*.

## Considerações e limitações
<a name="s3-tables-buckets-considerations-see-more"></a>

Para saber mais sobre considerações adicionais e limites para remoção de arquivos não referenciados, consulte [Considerações e limitações para trabalhos de manutenção](s3-tables-considerations.md).

# Manutenção de tabelas
<a name="s3-tables-maintenance"></a>

A funcionalidade Tabelas do S3 oferece operações de manutenção para aprimorar o gerenciamento e o desempenho de tabelas individuais. As opções a seguir estão habilitadas por padrão para todas as tabelas em buckets de tabela. Você pode editar ou desabilitar essas opções especificando arquivos de configuração de manutenção para a tabela do S3.

A edição dessa configuração requer as permissões `s3tables:GetTableMaintenanceConfiguration` e `s3tables:PutTableMaintenanceConfiguration`.

**nota**  
É possível acompanhar as operações de manutenção automatizada da funcionalidade Tabelas do S3 em suas tabelas por meio de logs do CloudTrail. Para ter mais informações, consulte [Eventos de gerenciamento do CloudTrail para manutenção da funcionalidade Tabelas do S3](s3-tables-logging.md#s3-tables-maintenance-events).

**Topics**
+ [Compactação](#s3-tables-maintenance-compaction)
+ [Gerenciamento de snapshots](#s3-tables-maintenance-snapshot)
+ [Considerações e limitações](#s3-tables-considerations-see-more)

## Compactação
<a name="s3-tables-maintenance-compaction"></a>

A compactação é configurada no nível da tabela e combina vários objetos menores em menos objetos maiores a fim de melhorar o desempenho de consulta do Apache Iceberg. Ao combinar objetos, a compactação também aplica os efeitos das exclusões em nível de linha na tabela.

A compactação está habilitada por padrão para todas as tabelas, com um tamanho de arquivo de destino padrão de 512 MB ou um valor personalizado de 64 MB a 512 MB especificado por você. Os arquivos compactados são gravados como o snapshot mais recente da tabela.

**nota**  
A compactação só é compatível com os tipos de arquivo Apache Parquet, Avro e ORC.

### Estratégias de compactação
<a name="s3-tables-maintenance-compaction-strategies"></a>

Você pode escolher entre várias estratégias de compactação que podem aumentar ainda mais o desempenho da consulta, dependendo dos padrões de consulta e da ordem de classificação da tabela.

O serviço Tabelas do S3 permite estas estratégias de compactação para tabelas:
+ **Auto (padrão)**
  + O Amazon S3 seleciona a melhor estratégia de compactação com base na ordem de classificação da tabela. Essa é a estratégia de compactação padrão para todas as tabelas.
  + Para tabelas com uma ordem de classificação definida nos respectivos metadados, `auto` aplicará automaticamente a compactação `sort`.
  + Para tabelas sem uma ordem de classificação, `auto` usará por padrão a compactação `binpack`.
+ **Binpack**
  + Combina arquivos pequenos em arquivos maiores, geralmente visando tamanhos acima de 100 MB, enquanto aplica quaisquer exclusões pendentes. Essa é a estratégia de compactação padrão para tabelas não classificadas.
+ **Classificar**
  + Organiza os dados com base em colunas especificadas que são classificadas automaticamente por hierarquia durante a compactação, melhorando o desempenho da consulta para operações filtradas. Essa estratégia é recomendada quando suas consultas filtram colunas específicas com frequência. Quando você usa essa estratégia, o serviço Tabelas do S3 aplica automaticamente a classificação hierárquica nas colunas quando `sort_order` é definido nas propriedades da tabela.
+ **Z-order**
  + Otimiza a organização dos dados combinando vários atributos em um único valor escalar que pode ser usado para classificação, permitindo consultas eficientes em várias dimensões. Essa estratégia é recomendada quando você precisa consultar dados em várias dimensões simultaneamente. Ela exige que você defina uma ordem de classificação nas propriedades de tabela do Iceberg usando a propriedade de tabela `sort_order`.

A compactação incorrerá em custos adicionais. As estratégias de compactação `z-order` e `sort` estão sujeitas a um custo maior do que a `binpack`. Para ter mais informações sobre preços, consulte [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

### Exemplos de compactação
<a name="tables-compaction-examples"></a>

Os exemplos a seguir mostram configurações para compactação de tabelas.

**Como configurar o tamanho do arquivo de destino de compactação usando a AWS CLI**  
O tamanho mínimo do arquivo de compactação de destino é 64 MB; o máximo é 512 MB.  
O exemplo a seguir alterará o tamanho do arquivo de destino para 256 MB usando a API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \
   --type icebergCompaction \
   --namespace mynamespace \
   --name testtable \
   --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'
```
Para ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) na *Referência de comandos da AWS CLI*.

**Como configurar a estratégia de compactação usando a AWS CLI**  
O exemplo a seguir mudará a estratégia de compactação para `sort` usando a API `PutTableMaintenanceConfiguration`. Ao definir a compactação, você pode escolher entre as seguintes estratégias de compactação: `auto`, `binpack`, `sort` ou `z-order`  
Para definir a estratégia de compactação como `sort` ou `z-order`, você precisa atender aos seguintes pré-requisitos:  
+ Uma ordem de classificação definida nas propriedades de tabela do Iceberg.
+ A permissão `s3tables:GetTableData`.

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergCompaction \
   --namespace mynamespace \
   --name testtable \
   --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'
```
Para ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) na *Referência de comandos da AWS CLI*.

**Como desabilitar a compactação usando a AWS CLI**  
O exemplo a seguir desabilitará a compactação usando a API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergCompaction \
   --namespace mynamespace \
   --name testtable \
   --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'
```
Para ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) na *Referência de comandos da AWS CLI*.

## Gerenciamento de snapshots
<a name="s3-tables-maintenance-snapshot"></a>

O gerenciamento de snapshots determina o número de snapshots ativos para uma tabela. Isso se baseia em `MinimumSnapshots` (1 por padrão) e em `MaximumSnapshotAge` (120 horas por padrão). O gerenciamento de snapshots expira e remove os snapshots de tabela com base nessas configurações.

Quando um snapshot expira, o Amazon S3 marca quaisquer objetos referenciados apenas por esse snapshot como desatualizados. Esses objetos desatualizados são excluídos após o número de dias especificado pela propriedade `NoncurrentDays` na política de remoção de arquivos não referenciados.

**nota**  
As exclusões de objetos desatualizados são permanentes, sem nenhuma maneira de recuperá-los.

Para visualizar ou recuperar objetos que foram marcados como desatualizados, você deve entrar em contato com o AWS Support. Para obter informações sobre como entrar em contato com o AWS Support, consulte [Entrar em contato com a AWS](https://aws.amazon.com/contact-us/) ou a [Documentação do AWS Support](https://aws.amazon.com/documentation/aws-support/).

O gerenciamento de snapshots determina os objetos a serem excluídos de uma tabela com referências apenas a essa tabela. Qualquer referência feita a esses objetos fora da tabela não impedirá que o gerenciamento de snapshots exclua um objeto.

**nota**  
O gerenciamento de snapshots não oferece suporte a valores de retenção que você configura como propriedades de tabela do Iceberg no arquivo `metadata.json` ou por meio de um comando SQL `ALTER TABLE SET TBLPROPERTIES`, incluindo retenção baseada em ramificação ou tag. O gerenciamento de snapshots é desabilitado quando você configura uma política de retenção baseada em ramificação ou tag, ou configura uma política de retenção no arquivo `metadata.json` que seja maior do que os valores configurados por meio da API `PutTableMaintenanceConfiguration`. Nesses casos, o S3 não expirará nem removerá snapshots e você precisará excluir manualmente os snapshots ou remover as propriedades de tabela do Iceberg para evitar cobranças de armazenamento.

Você só pode configurar o gerenciamento de snapshots ao nível da tabela. Para ter mais informações, consulte as informações sobre preços na [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

### Exemplos de gerenciamento de snapshots
<a name="tables-snapshot-examples"></a>

Os exemplos a seguir mostram configurações para o gerenciamento de snapshots de tabela.

**Como configurar o gerenciamento de snapshots usando a AWS CLI**  
O exemplo a seguir definirá `MinimumSnapshots` como 10 e `MaximumSnapshotAge` como 2.500 horas usando a API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
--namespace my_namespace \
--name my_table \
--type icebergSnapshotManagement \
--value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
```

**Como desabilitar o gerenciamento de snapshots usando a AWS CLI**  
O exemplo a seguir desabilitará o gerenciamento de snapshots usando a API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
--namespace my_namespace \
--name my_table \
--type icebergSnapshotManagement \
--value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'
```

Para ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) na *Referência de comandos da AWS CLI*.

## Considerações e limitações
<a name="s3-tables-considerations-see-more"></a>

Para saber mais sobre considerações e limites adicionais para compactação e gerenciamento de snapshots, consulte [Considerações e limitações para trabalhos de manutenção](s3-tables-considerations.md).

**nota**  
O serviço Tabelas do S3 aplica o tamanho padrão do grupo de linhas de parquets de 128 MB.

# Expiração do registro de tabelas
<a name="s3-tables-record-expiration"></a>

Por padrão, os registros nas tabelas do S3 não expiram. Para ajudar a minimizar os custos de armazenamento de tabelas, você pode habilitar e configurar a expiração de registros das tabelas. Com essa opção, o Amazon S3 remove automaticamente os registros de uma tabela quando eles expiram.

Se você habilitar a expiração de registros para uma tabela, especifique o número de dias para retê-los na tabela até a expiração. Pode ser qualquer número de dias, entre 1 dia e 2.147.483.647 dias. Por exemplo, para reter os registros da tabela por um ano, especifique `365` dias. Os registros serão mantidos por 365 dias. Após 365 dias, eles expiram e o Amazon S3 os remove automaticamente.

É possível habilitar e configurar a expiração de registros para tabelas gerenciadas pela AWS que armazenam conjuntos de dados específicos de determinados Serviços da AWS, no momento a Lente de Armazenamento do Amazon S3 e o Catálogo do Amazon SageMaker. Atualmente, as opções de expiração de registros não estão disponíveis para outras tabelas gerenciadas pela AWS. A exceção são as tabelas de diário de metadados do Amazon S3. As tabelas de diário usam configurações distintas de expiração de registros que são especificadas em nível de serviço. Para ter informações sobre como configurar a expiração de registros para esse tipo de tabela, consulte [Registros expirados da tabela de diário](metadata-tables-expire-journal-table-records.md). Observe que as opções de expiração de registros não estão disponíveis para as tabelas do S3 que você cria.

Após a habilitação da expiração de registros para uma tabela, é possível desabilitá-la a qualquer momento. Em seguida, o Amazon S3 para de encerrar e remover registros da tabela.

**Topics**
+ [Como funciona](#s3-tables-record-expiration-how-it-works)
+ [Configurar a expiração de registros](#s3-tables-record-expiration-configure)
+ [Monitorar a expiração do registro](#s3-tables-record-expiration-monitor)
+ [Considerações](#s3-tables-expiration-considerations)

## Como funciona a expiração de registros
<a name="s3-tables-record-expiration-how-it-works"></a>

A expiração de registros remove automaticamente os registros de uma tabela do S3 quando eles são mais antigos do que o número de dias especificado nas respectivas configurações de expiração de registros. Para determinar quando os registros expiram, o Amazon S3 usa carimbos de data/hora específicos nos registros. A escolha da coluna de carimbo de data/hora é deduzida diretamente do esquema de uma tabela. Não é necessário especificar qual coluna de carimbo de data/hora usar. As tabelas são gerenciadas pela AWS e o Amazon S3 escolhe automaticamente a coluna apropriada a ser usada quando a expiração de registros de uma tabela é habilitada.

É possível habilitar e definir as configurações de expiração de registros para tabelas gerenciadas pela AWS que armazenam métricas específicas da Lente de Armazenamento do Amazon S3 ou metadados específicos do Catálogo do Amazon SageMaker. As opções de expiração de registros estão disponíveis para as seguintes tabelas gerenciadas pela AWS desses serviços:
+ Lente de Armazenamento do S3: `bucket_property_metrics`, `default_activity_metrics`, `default_storage_metrics`, `expanded_prefixes_activity_metrics` e `expanded_prefixes_storage_metrics`. Para determinar quando os registros nessas tabelas expiram, o Amazon S3 usa o campo `report_time` nos registros.
+ Catálogo do Amazon SageMaker: `ASSET`. Para determinar quando os registros nessa tabela expiram, o Amazon S3 usa o campo `snapshot_time` nos registros.

Após a habilitação da expiração de registros de uma tabela, o Amazon S3 começa a executar trabalhos de expiração de registros que realizam as seguintes operações para a tabela:

1. Identifica os registros mais antigos do que a configuração de expiração especificada.

1. Cria um snapshot que exclui referências aos registros expirados.

A remoção também se baseia na expiração do snapshot e nas configurações de remoção de arquivos sem referência nas configurações de manutenção de tabelas. Para saber mais sobre as configurações de capacidade, consulte . [Manutenção de tabelas](s3-tables-maintenance.md).

**Atenção**  
O Amazon S3 encerra e remove os registros no prazo de 24 a 48 horas depois que eles de tornam elegíveis para expiração. Os registros da tabela são removidos do snapshot mais recente. Os dados e o armazenamento dos registros são removidos por meio de operações de manutenção de tabelas. Depois que os registros da tabela expiram, eles não podem mais ser recuperados.

## Configurar a expiração de registros para uma tabela
<a name="s3-tables-record-expiration-configure"></a>

É possível habilitar, configurar ou gerenciar as configurações de expiração de registros para uma tabela do Amazon S3 usando o console do Amazon S3, a API REST do Amazon S3, a AWS Command Line Interface (AWS CLI) ou SDKs da AWS.

Para tentar realizar essas tarefas em uma tabela, é necessário ter as seguintes permissões do AWS Identity and Access Management (IAM):
+ `s3tables:GetTableRecordExpirationConfiguration`: esta ação permite acessar as configurações atuais de expiração de registros de tabelas.
+ `s3tables:PutTableRecordExpirationConfiguration`: esta ação permite habilitar, configurar e desabilitar as configurações de expiração de registros de tabelas.
+ `s3tables:GetTableRecordExpirationJobStatus`: esta ação permite monitorar o status das operações de expiração de registros (trabalhos) de tabelas e métricas de acesso.

As seções a seguir explicam como habilitar, configurar e desabilitar as configurações de expiração de registros de uma tabela usando o console do Amazon S3 e a AWS CLI. Para realizar essas tarefas com a API REST do Amazon S3 ou um SDK da AWS, use a operação [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html). Para ter mais informações, consulte [Desenvolvimento com o Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/developing-s3.html) na *Referência de API do Amazon Simple Storage Service*.

### Usar o console do S3
<a name="configure-table-record-expiration-console"></a>

Para habilitar e definir as configurações de expiração de registros de uma tabela do S3 usando o console, siga as etapas abaixo.

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

1. No painel de navegação à esquerda, escolha **Buckets de tabela**.

1. Na página **Buckets de tabela**, escolha o bucket que armazena a tabela.

1. Na guia **Tabelas**, escolha a tabela.

1. Na guia **Manutenção**, na seção **Expiração dos registros**, escolha **Editar**.

1. Em **Expiração dos registros**, escolha **Habilitar**.

1. Em **Dias após os quais os registros expiram**, insira o número de dias para reter registros na tabela. Pode ser qualquer número inteiro entre 1 e 2.147.483.647. Por exemplo, para reter registros por um ano, insira **365**.
**Atenção**  
Ao determinar o período de retenção adequado dos registros na tabela, observe que os registros não podem ser recuperados após a expiração.

1. Escolha **Salvar alterações**.

Para alterar posteriormente o período de retenção, repita as etapas anteriores.

Para desabilitar posteriormente a expiração de registros, repita as Etapas de 1 a 5. Em seguida, para a Etapa 6, escolha **Desabilitar**. Quando terminar, escolha **Salvar alterações**.

### Como usar o AWS CLI
<a name="configure-table-record-expiration-CLI"></a>

Para configurar e gerenciar as configurações de expiração de registros de uma tabela do S3 usando a AWS CLI, execute o comando [https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html).

Para começar, crie um arquivo JSON contendo as configurações de expiração de registros a serem aplicadas à tabela. O exemplo a seguir mostra o conteúdo de um arquivo JSON que habilita a expiração de registros de uma tabela. Ele também especifica um período de retenção de registros de trinta dias na tabela. Em outras palavras, ele especifica que os registros da tabela devem expirar após trinta dias.

```
{
    "status": "enabled",
        "settings": {
            "days": 30
        {
}
```

Para usar o exemplo precedente, substitua `user input placeholders` pelas suas próprias informações.

**Atenção**  
Ao determinar o período de retenção adequado dos registros na tabela, observe que os registros não podem ser recuperados após a expiração.

Para desabilitar a expiração de registros de uma tabela, especifique `disabled` para o campo `status` e omita o objeto `settings` do arquivo. Por exemplo:

```
{
    "status": "disabled"
}
```

Depois de criar um arquivo JSON com as configurações a serem aplicadas, execute o comando `put-table-record-expiration-configuration`. Para o parâmetro `table-arn`, especifique o nome do recurso da Amazon (ARN) da tabela. Para o parâmetro `value`, especifique o nome do arquivo que armazena as configurações.

Por exemplo, o comando a seguir atualiza a configuração de expiração de registros de uma tabela. As configurações são especificadas em um arquivo chamado *`record-expiration-config.json`*.

```
aws s3tables put-table-record-expiration-configuration \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table \
    --value file://./record-expiration-config.json
```

Para usar o exemplo precedente, substitua `user input placeholders` pelas suas próprias informações.

## Monitorar a expiração do registro de uma tabela
<a name="s3-tables-record-expiration-monitor"></a>

Para monitorar o status e os resultados das operações de expiração de registros de tabelas do S3, use a operação [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html) ou, se estiver usando a AWS CLI, execute o comando [https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html). Em sua solicitação, especifique o nome do recurso da Amazon (ARN) da tabela.

Por exemplo, o comando AWS CLI a seguir recupera o status das operações de expiração de registros de uma tabela específica em um bucket de tabela. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables get-table-record-expiration-job-status \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table
```

Se sua solicitação tiver êxito, você receberá uma resposta que fornece determinados detalhes, como a data mais recente em que o Amazon S3 executou operações de expiração de registros de uma tabela e o status dessa execução. Se a execução tiver êxito, a resposta também incluirá métricas de processamento, como o número de arquivos e registros de dados que foram removidos e o tamanho total dos dados que foram removidos. Se ocorrerem erros durante a execução mais recente, a resposta incluirá uma mensagem de falha que descreve por que a execução falhou.

## Considerações
<a name="s3-tables-expiration-considerations"></a>

Ao definir e gerenciar as configurações de expiração de registros para tabelas do S3 gerenciadas pela AWS, lembre-se do seguinte:
+ A expiração de registros está disponível somente para determinadas tabelas gerenciadas pela AWS criadas por Serviços da AWS compatíveis, como a Lente de Armazenamento do Amazon S3 e o Catálogo do Amazon SageMaker. Além disso, a expiração de registros está disponível somente para tabelas individuais, não para buckets de tabela inteiros.
+ Para determinar quando os registros expiram, o Amazon S3 usa carimbos de data/hora específicos nas tabelas. Esses carimbos de data/hora representam quando os dados foram criados, não quando o Amazon S3 ingeriu os registros em uma tabela. A coluna de carimbo de data/hora usada depende do serviço que publica a tabela: para métricas da Lente de Armazenamento do S3, o campo `report_time`; e, para metadados do Catálogo do Amazon SageMaker, o campo `snapshot_time`. Não é possível especificar qual campo usar porque as tabelas são gerenciadas pela AWS.
+ Se houver atrasos na exportação de dados para uma tabela, os registros poderão se tornar elegíveis para expiração antes do esperado. Por esse motivo, é recomendável considerar possíveis atrasos na ingestão adicionando uma folga ao período de retenção nas configurações de expiração para tabelas.
+ Os registros expiram e são removidos no prazo de 24 a 48 horas depois que se tornam elegíveis para expiração. O Amazon S3 não encerra nem remove registros imediatamente depois que eles se tornam elegíveis para expiração.
+ Os registros não podem ser recuperados depois que eles expiram e são removidos.

# Considerações e limitações para trabalhos de manutenção
<a name="s3-tables-considerations"></a>

O Amazon S3 oferece operações de manutenção para aprimorar a performance das tabelas e dos buckets de tabela do S3. Essas opções são compactação de arquivos, gerenciamento de snapshots e remoção de arquivos não referenciados. Veja a seguir as limitações e considerações para essas opções de gerenciamento.

**Topics**
+ [Considerações para compactação](#s3-tables-compaction-considerations)
+ [Considerações para gerenciamento de snapshots](#s3-tables-snapshot-considerations)
+ [Considerações para remoção de arquivos não referenciados](#s3-tables-unreferenced-file-removal-considerations)
+ [Limites para operações de manutenção de tabelas e buckets de tabela do S3 e APIs relacionadas](#s3-tables-maintenance-limits)

## Considerações para compactação
<a name="s3-tables-compaction-considerations"></a>

As considerações a seguir se aplicam à compactação. Para ter mais informações sobre compactação, consulte [Manutenção de tabelas](s3-tables-maintenance.md).
+ A compactação só é compatível com os tipos de arquivo Apache Parquet, Avro e ORC.
+ Ela grava novos arquivos no formato Apache Parquet por padrão. Se, em vez disso, quiser compactar arquivos nos formatos Avro ou ORC, defina a propriedade de tabela `write.format.default` como `avro` ou `orc`.
+ Não é possível usar o seguinte tipo de dados na compactação: `Fixed`.
+ A compactação não oferece suporte aos seguintes tipos de compressão: `brotli` e `lz4`.
+ A compactação ocorre de acordo com um cronograma automatizado. Se quiser evitar cobranças associadas à compactação, você pode desabilitá-la manualmente para uma tabela usando a operação de API [PutTableMaintenanceConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableMaintenanceConfiguration.html).

**nota**  
O Apache Iceberg usa um modelo de simultaneidade otimista, bem como a detecção de conflitos, para arbitrar transações de gravação. Com a simultaneidade otimista, as transações de usuário e compactação podem entrar em conflito, fazendo com que as transações falhem. Se ocorrerem conflitos e houver falha, os trabalhos de compactação serão executados novamente. É recomendável que seus pipelines também usem a lógica de nova tentativa para superar transações que falham devido a operações conflitantes.

## Considerações para gerenciamento de snapshots
<a name="s3-tables-snapshot-considerations"></a>

As considerações a seguir se aplicam ao gerenciamento de snapshots. Para ter mais informações sobre o gerenciamento de snapshots, consulte [Manutenção de tabelas](s3-tables-maintenance.md).
+ Os snapshots serão preservados somente quando ambos os critérios forem satisfeitos: o número mínimo de snapshots a serem mantidos e o período de retenção especificado.
+ O gerenciamento de snapshots exclui metadados de snapshots expirados do Apache Iceberg, evitando consultas de viagem no tempo para snapshots expirados e, opcionalmente, excluindo arquivos de dados associados.
+ O gerenciamento de snapshots não oferece suporte a valores de retenção que você configura como propriedades de tabela do Iceberg no arquivo `metadata.json` ou por meio de um comando SQL `ALTER TABLE SET TBLPROPERTIES`, incluindo retenção baseada em ramificação ou tag. O gerenciamento de snapshots é desabilitado quando você configura uma política de retenção baseada em ramificação ou tag, ou configura uma política de retenção no arquivo `metadata.json` que seja maior do que os valores configurados por meio da API `PutTableMaintenanceConfiguration`. Nesses casos, o S3 não expirará nem removerá snapshots e você precisará excluir manualmente os snapshots ou remover as propriedades de tabela do Iceberg para evitar cobranças de armazenamento.

## Considerações para remoção de arquivos não referenciados
<a name="s3-tables-unreferenced-file-removal-considerations"></a>

As considerações a seguir se aplicam à remoção de arquivos não referenciados. Para ter mais informações sobre a remoção de arquivos não referenciados, consulte [Manutenção para buckets de tabela](s3-table-buckets-maintenance.md).
+ A remoção de arquivos não referenciados exclui arquivos de dados e metadados que não são mais referenciados pelos metadados do Iceberg quando o horário de criação é anterior ao período de retenção.

## Limites para operações de manutenção de tabelas e buckets de tabela do S3 e APIs relacionadas
<a name="s3-tables-maintenance-limits"></a>




| Operação de manutenção | Propriedade | Configurável ao nível do bucket de tabela? | Configurável ao nível da tabela? | Valor padrão | Valor mínimo | Rotina de manutenção relacionada ao Iceberg | Controlar a API da funcionalidade Tabelas do S3 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Compactação | targetFileSizeMB | Não | Sim | 512 MB | 64 MB | [https://iceberg.apache.org/docs/latest/maintenance/#compact-data-files](https://iceberg.apache.org/docs/latest/maintenance/#compact-data-files) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| Gerenciamento de snapshots | minimumSnapshots | Não | Sim | 1 | 1 | [https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) retainLast | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| Gerenciamento de snapshots | maximumSnapshotAge | Não | Sim | 120 horas | 1 hora | [https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) expireOlderThan | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| Remoção de arquivos sem referência | unreferencedDays | Sim | Não | 3 dias | 1 dia | [https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files](https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html) | 
| Remoção de arquivos não referenciados | nonCurrentDays | Sim | Não | 10 dias | 1 dia | N/D | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html) | 

**nota**  
O serviço Tabelas do S3 aplica o tamanho padrão do grupo de linhas de parquets de 128 MB.