

# Trabalhar com a funcionalidade Tabelas do Amazon S3 e com buckets de tabela
<a name="s3-tables"></a>

A funcionalidade Tabelas do Amazon S3 fornece armazenamento do S3 otimizado para workloads de analytics, com recursos projetados para melhorar continuamente a performance das consultas e reduzir os custos de armazenamento de tabelas. A funcionalidade Tabelas do S3 foi criada especificamente para armazenar dados tabulares, como transações de compras diárias, dados de sensores de streaming ou impressões de anúncios. Os dados tabulares representam dados em colunas e linhas, como em uma tabela de banco de dados. 

Os dados na funcionalidade Tabelas do S3 são armazenados em um novo tipo de bucket: um *bucket de tabela*, que armazena tabelas como sub-recursos. Os buckets de tabela oferecem suporte ao armazenamento de tabelas no formato Apache Iceberg. Usando instruções SQL padrão, você pode consultar as tabelas com mecanismos de consulta compatíveis com Iceberg, como Amazon Athena, Amazon Redshift e Apache Spark.

**Topics**
+ [

## Recursos da funcionalidade Tabelas do S3
](#s3-tables-features)
+ [

## Serviços relacionados
](#s3-tables-services)
+ [

# Tutorial: conceitos básicos da funcionalidade Tabelas do S3
](s3-tables-getting-started.md)
+ [

# Buckets de tabela
](s3-tables-buckets.md)
+ [

# Manutenção da funcionalidade Tabelas do S3
](s3-tables-maintenance-overview.md)
+ [

# Otimização de custos de tabelas com o Intelligent-Tiering
](tables-intelligent-tiering.md)
+ [

# Namespaces de tabela
](s3-tables-namespace.md)
+ [

# Tabelas em buckets de tabela do S3
](s3-tables-tables.md)
+ [

# Acessar dados da tabela
](s3-tables-access.md)
+ [

# Trabalhar com o Apache Iceberg V3
](working-with-apache-iceberg-v3.md)
+ [

# Replicar tabelas do S3
](s3-tables-replication-tables.md)
+ [

# Regiões da AWS, endpoints e cotas de serviço da funcionalidade Tabelas do S3
](s3-tables-regions-quotas.md)
+ [

# Fazer solicitações para a funcionalidade Tabelas do S3 por meio do IPv6
](s3-tables-ipv6.md)
+ [

# Segurança para a funcionalidade Tabelas do S3
](s3-tables-security-overview.md)
+ [

# Registro em log e monitoramento para Tabelas do S3
](s3-tables-monitoring-overview.md)

## Recursos da funcionalidade Tabelas do S3
<a name="s3-tables-features"></a>

**Armazenamento de tabelas com propósito específico**  
Os buckets de tabela do S3 são projetados especificamente para tabelas. Os buckets de tabela fornecem quantidades mais altas de transações por segundo (TPS) e melhor throughput de consultas em comparação com as tabelas autogerenciadas em buckets de uso geral do S3. Os buckets de tabela oferecem a mesma durabilidade, disponibilidade e escalabilidade de outros tipos de bucket do Amazon S3.

**Suporte integrado para o Apache Iceberg**  
As tabelas nos buckets de tabela são armazenadas no formato [https://aws.amazon.com//what-is/apache-iceberg/](https://aws.amazon.com//what-is/apache-iceberg/). Você pode consultar essas tabelas usando SQL padrão em mecanismos de consulta compatíveis com Iceberg. O Iceberg tem uma variedade de recursos para otimizar a performance das consultas, incluindo evolução de esquemas e evolução de partições.  
Com o Iceberg, você pode alterar a maneira como os dados são organizados para que possam evoluir com o tempo sem que precise reescrever as consultas ou reconstruir as estruturas de dados. O Iceberg foi projetado para ajudar a garantir a consistência e a confiabilidade dos dados por meio de suporte às transações. Para ajudar você a corrigir problemas ou realizar consultas de viagem no tempo, é possível acompanhar como os dados mudam ao longo do tempo e reverter para versões históricas.

**Otimização automatizada de tabelas**  
Para otimizar as tabelas para consulta, o S3 executa continuamente operações automáticas de manutenção, como compactação, gerenciamento de snapshots e remoção de arquivos não referenciados. Essas operações aumentam a performance da tabela ao compactar objetos menores em menos arquivos maiores. As operações de manutenção também reduzem os custos de armazenamento ao limpar objetos não utilizados. Essa manutenção automatizada simplifica a operação de data lakes em grande escala, reduzindo a necessidade de manutenção manual das tabelas. Para cada tabela e bucket de tabela, você pode personalizar as configurações de manutenção.

**Gerenciamento de acesso e segurança**  
Você pode gerenciar o acesso tanto para buckets de tabela quanto para tabelas individuais com o AWS Identity and Access Management (IAM) e as [políticas de controle de serviço](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_scps.html) no AWS Organizations. A funcionalidade Tabelas do S3 usa um namespace de serviço diferente do Amazon S3: o namespace *s3tables*. Portanto, é possível criar políticas especificamente para a funcionalidade Tabelas do S3 e seus recursos. Você pode criar políticas para conceder acesso a tabelas individuais, a todas as tabelas em um namespace de tabelas ou a buckets de tabela inteiros. Todas as configurações da funcionalidade Bloqueio de Acesso Público do Amazon S3 estão sempre habilitadas para buckets de tabela e não podem ser desabilitadas. 

**Integração com os serviços de analytics da AWS**  
É possível integrar automaticamente os buckets de tabela do Amazon S3 ao Amazon SageMaker Lakehouse por meio do console do S3. Essa integração permite que os serviços de analytics da AWS descubram e acessem dados de tabela automaticamente por meio do AWS Glue Data Catalog. Após a integração, é possível trabalhar com as tabelas usando serviços de analytics, como o Amazon Athena, o Amazon Redshift, o Quick e outros. Para ter mais informações sobre como a integração funciona, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

## Serviços relacionados
<a name="s3-tables-services"></a>

Você pode usar os Serviços da AWS a seguir com a funcionalidade Tabelas do S3 para oferecer suporte a aplicações de analytics específicas.


+ [https://docs.aws.amazon.com//athena/latest/ug/what-is.html](https://docs.aws.amazon.com//athena/latest/ug/what-is.html): o Athena é um serviço de consultas interativas que você pode usar para analisar dados no Amazon S3 usando SQL padrão. Você também pode usar o Athena para executar análises de dados de maneira interativa usando o Apache Spark sem a necessidade de planejamento, configuração ou gerenciamento de recursos. Ao executar aplicações do Apache Spark no Athena, você envia o código Spark para processamento e recebe os resultados de forma direta.
+ [https://docs.aws.amazon.com//glue/latest/dg/what-is-glue.html](https://docs.aws.amazon.com//glue/latest/dg/what-is-glue.html) – AWS Glue o é um serviço de integração de dados com tecnologia sem servidor que permite que você descubra, prepare, migre e integre dados de várias fontes. Você pode usar o AWS Glue para analytics, machine learning (ML) e desenvolvimento de aplicações. O AWS Glue também inclui outras ferramentas de produtividade e operações de dados para criação, execução de trabalhos e implementação de fluxos de trabalho de negócios.
+ [https://docs.aws.amazon.com//sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html](https://docs.aws.amazon.com//sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html): o Estúdio Unificado SageMaker oferece uma experiência integrada para analytics e IA com acesso unificado a todos os dados. Colabore e crie no Estúdio Unificado SageMaker usando ferramentas da AWS conhecidas para analytics SQL, processamento de dados, desenvolvimento de modelos e IA generativa, acelerados pelo [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html).
+ [https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-what-is-emr.html](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-what-is-emr.html): o Amazon EMR é uma plataforma de cluster gerenciada que simplifica a execução de frameworks de big data, como Apache Hadoop e Apache Spark, na AWS a fim de processar e analisar grandes volumes de dados.
+ [https://docs.aws.amazon.com//redshift/latest/mgmt/welcome.html](https://docs.aws.amazon.com//redshift/latest/mgmt/welcome.html): o Amazon Redshift é um serviço de data warehouse na escala de petabytes na nuvem. Você pode usar o Amazon Redshift sem servidor para acessar e analisar dados sem todas as configurações de um data warehouse provisionado. Os recursos são provisionados automaticamente e a capacidade do data warehouse escala de maneira inteligente para oferecer performance rápida até mesmo às workloads mais exigentes e imprevisíveis. O tempo em que o data warehouse fica ocioso não é cobrado, portanto você paga apenas pelo que usa. Você pode carregar dados e começar a consultar imediatamente no editor de consultas v2 do Amazon Redshift ou na sua ferramenta de business intelligence (BI) favorita.
+ [https://docs.aws.amazon.com//quicksight/latest/user/welcome.html](https://docs.aws.amazon.com//quicksight/latest/user/welcome.html): o Quick é um serviço de analytics de negócios para criar visualizações, executar análises ad hoc e extrair rapidamente insights dos dados. O Quick descobre facilmente as fontes de dados da AWS e oferece um desempenho de consulta rápido e responsivo por meio do SPICE (mecanismo de cálculo super-rápido, paralelo e na memória) do Quick.
+ [https://docs.aws.amazon.com//lake-formation/latest/dg/what-is-lake-formation.html.html](https://docs.aws.amazon.com//lake-formation/latest/dg/what-is-lake-formation.html.html): o Lake Formation é um serviço gerenciado que simplifica o processo de configuração, proteção e gerenciamento de data lakes. O Lake Formation ajuda a descobrir suas fontes de dados para catalogar, limpar e transformar os dados. Com o Lake Formation, você pode gerenciar um controle de acesso refinado para os dados de um data lake no Amazon S3 e seus metadados no AWS Glue Data Catalog.

# Tutorial: conceitos básicos da funcionalidade Tabelas do S3
<a name="s3-tables-getting-started"></a>

Neste tutorial, você vai criar um bucket de tabela e integrar buckets de tabela em sua região com os serviços de analytics da AWS. Depois, você usará a AWS CLI para criar seu primeiro namespace e tabela no bucket de tabela. Por fim, você usará o AWS Lake Formation para conceder permissão na tabela a fim de poder começar a consultá-la com o Athena.

**dica**  
Caso esteja migrando dados tabulares de buckets de uso geral para buckets de tabela, a Biblioteca de Soluções da AWS tem uma solução guiada para ajudar você. Essa solução automatiza a movimentação de tabelas do Apache Iceberg e do Apache Hive registradas no AWS Glue Data Catalog e armazenadas em buckets de uso geral para buckets de tabela por meio do AWS Step Functions e o Amazon EMR com o Apache Spark. Consulte mais informações em [Guidance for Migrating Tabular Data from Amazon S3 to S3 Tables](https://aws.amazon.com/solutions/guidance/migrating-tabular-data-from-amazon-s3-to-s3-tables/) na Biblioteca de Soluções da AWS.

**Topics**
+ [

## Etapa 1: criar um bucket de tabela e integrá-lo aos serviços de analytics da AWS
](#s1-tables-tutorial-create-bucket)
+ [

## Etapa 2: criar um namespace de tabela e uma tabela
](#s2-tables-tutorial-create-namespace-and-table)
+ [

## (Opcional) Etapa 3: conceder permissões do Lake Formation na tabela
](#s3-tables-tutorial-create-table)
+ [

## Etapa 4: consultar dados com SQL no Athena
](#s4-query-tables)

## Etapa 1: criar um bucket de tabela e integrá-lo aos serviços de analytics da AWS
<a name="s1-tables-tutorial-create-bucket"></a>

Nesta etapa, use o console do Amazon S3 para criar seu primeiro bucket de tabela. Para conferir outras maneiras de criar um bucket de tabela, consulte [Criar um bucket de tabela](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html).

**nota**  
Por padrão, o console do Amazon S3 integra automaticamente os buckets de tabela ao Amazon SageMaker Lakehouse, o que permite que os serviços de analytics da AWS descubram e acessem automaticamente seus dados de tabela do S3. Se criar seu primeiro bucket de tabela de maneira programática usando a AWS Command Line Interface (AWS CLI), os SDKs da AWS ou a API REST, você deverá concluir manualmente a integração dos serviços de analytics da AWS. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

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. Na barra de navegação na parte superior da página, escolha o nome da Região da AWS exibida no momento. Depois, escolha a região na qual você deseja criar o bucket de tabela.

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

1. Escolha **Criar bucket de tabela**.

1. Em **Configuração geral**, insira um nome para o bucket de tabela.

   O nome do bucket de tabela deve: 
   + Ser exclusivo na sua Conta da AWS e na região atual.
   + Ter entre 3 e 63 caracteres.
   + Consistir apenas em letras minúsculas, números e hífens (`-`).
   + Inicie e termine com uma letra ou um número.

   Após a criação do bucket, não é possível alterar o respectivo nome. O bucket de tabela pertence à Conta da AWS que o criou. Consulte mais informações sobre como nomear buckets de tabela em [Regras de nomenclatura de buckets de tabela](s3-tables-buckets-naming.md#table-buckets-naming-rules).

1. Na seção **Integração com serviços de analytics da AWS**, verifique se a caixa de seleção **Habilitar integração** está marcada. 

   Se a opção **Habilitar integração** estiver selecionada quando você criar seu primeiro bucket de tabela usando o console, o Amazon S3 tentará integrar o bucket de tabela aos serviços de analytics da AWS. Essa integração permite que você use os serviços de analytics da AWS para acessar todas as tabelas na região atual. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

1. Selecione **Criar bucket**.

## Etapa 2: criar um namespace de tabela e uma tabela
<a name="s2-tables-tutorial-create-namespace-and-table"></a>

Nesta etapa, você cria um namespace no bucket de tabela e, depois, cria uma tabela nesse namespace. É possível criar um namespace de tabela e uma tabela usando o console ou a AWS CLI. 

**Importante**  
Ao criar tabelas, use apenas letras minúsculas nos nomes e nas definições das tabelas. Por exemplo, os nomes das colunas devem estar todos em minúsculas. Se o nome da tabela ou a definição da tabela contiver letras maiúsculas, a tabela não será compatível com o AWS Lake Formation ou o AWS Glue Data Catalog. Nesse caso, a tabela não estará visível para serviços de analytics da AWS, como o Amazon Athena, mesmo que os buckets de tabela estejam integrados aos serviços de analytics da AWS.   
Se a definição da tabela contiver letras maiúsculas, você receberá a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”.

### Usar o console do S3 e o Amazon Athena
<a name="s3-tables-tutorial-create-table-console"></a>

O procedimento a seguir usa o console do Amazon S3 para criar um namespace e uma tabela com o Amazon Athena. 

**Como criar um namespace de tabela e uma tabela**

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 de tabela no qual você deseja criar uma tabela.

1. Na página de detalhes do bucket de tabela, escolha **Criar tabela com o Athena**. 

1. Na caixa de diálogo **Criar tabela com o Athena**, escolha **Criar um namespace** e insira um nome no campo **Nome do namespace**. Os nomes de namespace devem ter de 1 a 255 caracteres e ser exclusivos no bucket de tabela. Os caracteres válidos são a–z, 0–9 e sublinhado (`_`). Sublinhados não são permitidos no início dos nomes de namespace.

1. Escolha **Create namespace (Criar namespace)**.

1. Escolha **Criar tabela com o Athena**.

1. O console do Amazon Athena é aberto e o editor de consultas do Athena aparece. O editor de consultas é preenchido com uma consulta de exemplo que você pode usar para criar uma tabela. Modifique a consulta para especificar o nome da tabela e as colunas que você deseja que a tabela tenha. 

1. Quando terminar de modificar a consulta, escolha **Executar** para criar a tabela. 

Se a criação da tabela tiver sido bem-sucedida, o nome da nova tabela aparecerá na lista de tabelas do Athena. Ao voltar para o console do Amazon S3, a nova tabela aparecerá na lista **Tabelas** na página de detalhes do bucket de tabela depois que você atualizar a lista. 

### Como usar o AWS CLI
<a name="s3-tables-tutorial-create-table-CLI"></a>

Para usar os exemplos de comando da AWS CLI a seguir para criar um namespace no bucket de tabela e, depois, criar uma tabela com um esquema nesse namespace, substitua os valores de `user input placeholder` pelos seus próprios.

**Pré-requisitos**
+ Anexe a política [https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html) à identidade do IAM. 
+ Instale a AWS CLI versão 2.23.10 ou posterior. Para obter mais informações, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário do AWS Command Line Interface*.

1. Crie um namespace no bucket de tabela executando o seguinte comando:

   ```
   aws s3tables create-namespace \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --namespace my_namespace
   ```

   1. Confirme se o namespace foi criado com sucesso executando o seguinte comando: 

     ```
     aws s3tables list-namespaces \
     --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
     ```

1. Crie uma tabela com um esquema de tabela executando o seguinte comando:

   ```
   aws s3tables create-table --cli-input-json file://mytabledefinition.json
   ```

   Para o arquivo `mytabledefinition.json`, use o seguinte exemplo de definição de tabela:

   ```
   {
       "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket",
       "namespace": "my_namespace",
       "name": "my_table",
       "format": "ICEBERG",
       "metadata": {
           "iceberg": {
               "schema": {
                   "fields": [
                        {"name": "id", "type": "int","required": true},
                        {"name": "name", "type": "string"},
                        {"name": "value", "type": "int"}
                   ]
               }
           }
       }
   }
   ```

## (Opcional) Etapa 3: conceder permissões do Lake Formation na tabela
<a name="s3-tables-tutorial-create-table"></a>

Nesta etapa, você concede permissões do Lake Formation na nova tabela a outras entidades principais do IAM. Essas permissões autorizam que outras entidades principais, além de você, acessem os recursos do bucket de tabela usando o Athena e outros serviços de analytics da AWS. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](grant-permissions-tables.md#grant-lf-table). Se você for o único usuário que acessará as tabelas, poderá pular essa etapa. 

1. Abra o console do AWS Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) e faça login como administrador do data lake. Consulte mais informações sobre como criar um administrador de data lake em [Create a data lake administrator](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin).

1. No painel de navegação, escolha **Permissões de dados** e **Conceder**. 

1. Na página **Conceder permissões**, em **Entidades principais**, escolha **Usuários e perfis do IAM** e selecione o usuário ou o perfil do IAM que você deseja permitir que execute consultas na tabela.

1. Em **Tags do LF ou recursos de catálogo**, escolha **Recursos do catálogo de dados nomeados**.

1. Execute um destes procedimentos, dependendo se deseja conceder acesso a todas as tabelas da conta ou se deseja conceder acesso somente aos recursos dentro do bucket de tabela que você criou:
   + Em **Catálogos**, escolha um catálogo no nível da conta que você criou ao integrar o bucket de tabela. Por exemplo, `111122223333:s3tablescatalog`. 
   + Em **Catálogos**, escolha o subcatálogo para o bucket de tabela. Por exemplo, `111122223333:s3tablescatalog/amzn-s3-demo-table-bucket`.

1. (Opcional) Se você escolheu o subcatálogo para o bucket de tabela, execute um ou ambos os procedimentos:
   + Em **Bancos de dados**, escolha o namespace do bucket de tabela que você criou.
   + Em **Tabelas**, escolha a tabela que você criou no bucket de tabelas ou escolha **Todas as tabelas**. 

1. Será possível definir permissões em nível de catálogo, banco de dados ou tabela, dependendo de você ter escolhido um catálogo ou subcatálogo e, depois, um banco de dados ou uma tabela. Consulte mais informações sobre as permissões do Lake Formation em [Managing Lake Formation permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-permissions.html) no *Guia do desenvolvedor do AWS Lake Formation*.

   Execute um destes procedimentos:
   + Em **Permissões de catálogo**, escolha **Super** para conceder a outra entidade principal todas as permissões no catálogo ou escolha permissões mais detalhadas, como **Descrever**.
   + Em **Permissões de banco de dados**, você não pode escolher **Super** para conceder a outra entidade principal todas as permissões no banco de dados. Em vez disso, escolha permissões mais detalhadas, como **Descrever**.
   + Em **Permissões de tabela**, escolha **Super** para conceder a outra entidade principal todas as permissões na tabela ou escolha permissões mais detalhadas, como **Selecionar** ou **Descrever**.
**nota**  
Quando você concede permissões do Lake Formation em um recurso do catálogo de dados para uma conta externa ou diretamente para uma entidade principal do IAM em outra conta, o Lake Formation usa o serviço do AWS Resource Access Manager (AWS RAM) para compartilhar o recurso. Se a conta do concedido estiver na mesma organização da conta do concedente, o recurso compartilhado estará disponível imediatamente para o concedido. Se a conta do concedido não estiver na mesma organização, o AWS RAM envia um convite à conta do concedido para aceitar ou rejeitar a concessão do recurso. Em seguida, para disponibilizar o recurso compartilhado, o administrador do data lake deve usar o console AWS RAM ou AWS CLI para aceitar o convite na conta do concedido. Consulte mais informações sobre o compartilhamento de dados entre contas em [Cross-account data sharing in Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html) no *Guia do desenvolvedor do AWS Lake Formation*.

1. Selecione **Conceder**.

## Etapa 4: consultar dados com SQL no Athena
<a name="s4-query-tables"></a>

Você pode consultar a tabela com SQL no Athena. O Athena é compatível com consultas Data Definition Language (DDL), Data Manipulation Language (DML) e Data Query Language (DQL) para Tabelas do S3.

É possível acessar a consulta do Athena pelo console do Amazon S3 ou pelo console do Amazon Athena. 

### Usar o console do S3 e o Amazon Athena
<a name="s4-query-tables-query-table-s3-console"></a>

O procedimento a seguir usa o console do Amazon S3 para acessar o editor de consultas do Athena e possibilitar que você consulte uma tabela com o Amazon Athena. 

**Como consultar uma tabela**

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 de tabela que contém a tabela que você deseja consultar.

1. Na página de detalhes do bucket de tabela, escolha o botão de opção ao lado do nome da tabela que você deseja consultar. 

1. Escolha **Consultar tabela com o Athena**.

1. O console do Amazon Athena é aberto e o editor de consultas do Athena aparece com uma amostra de consulta `SELECT` carregada para você. Modifique essa consulta conforme necessário para seu caso de uso. 

1. Para executar a consulta, escolha **Run** (Executar).

### Usar o console do Amazon Athena
<a name="s4-query-tables-query-table-athena-console"></a>

**Como consultar uma tabela**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Consulte a tabela. Veja a seguir uma amostra de consulta que você pode modificar. Substitua `user input placeholders` por suas próprias informações.

   ```
   SELECT * FROM "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" LIMIT 10
   ```

1. Para executar a consulta, escolha **Run** (Executar). 

# Buckets de tabela
<a name="s3-tables-buckets"></a>

Os buckets de tabela do Amazon S3 são um tipo de bucket do S3 que você pode usar para criar e armazenar tabelas como recursos do S3. Os buckets de tabela são usados para armazenar dados tabulares e metadados como objetos para uso em workloads de analytics. O S3 realiza a manutenção nos buckets de tabela automaticamente para ajudar a reduzir os custos de armazenamento de tabelas. Para obter mais informações, consulte [Manutenção da funcionalidade Tabelas do S3](s3-tables-maintenance-overview.md).

Para interagir com as tabelas armazenadas nos buckets de tabela, você pode integrar os buckets de tabela a aplicações de analytics compatíveis com [Apache Iceberg](https://iceberg.apache.org/docs/latest/). Os buckets de tabela se integram aos serviços de analytics da AWS por meio do AWS Glue Data Catalog. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md). Você também pode interagir com as tabelas utilizando mecanismos de consulta de código aberto usando o Catálogo de Tabelas do Amazon S3 para Apache Iceberg. Para obter mais informações, consulte [Acessar tabelas usando o endpoint Iceberg REST do serviço Tabelas do Amazon S3](s3-tables-integrating-open-source.md). 

Cada bucket de tabela tem um nome do recurso da Amazon (ARN) exclusivo e uma política de recurso associada a ele. Os ARNs de buckets de tabela seguem este formato:

```
arn:aws:s3tables:Region:OwnerAccountID:bucket/bucket-name
```

Todas as tabelas e buckets de tabela são privados e não podem ser tornados públicos. Esses recursos só podem ser acessados por usuários que tenham recebido acesso explícito. Para conceder acesso, você pode usar políticas baseadas em recurso do IAM para tabelas e buckets de tabela, e políticas baseadas em identidade do IAM para usuários e perfis.

Por padrão, você pode criar até dez buckets de tabela por Região da AWS em uma Conta da AWS. Para solicitar um aumento da cota de tabelas e de buckets de tabela, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase).

## Tipos de bucket de tabela
<a name="s3-tables-buckets-types"></a>

O Amazon S3 permite os seguintes tipos de bucket de tabela:

**Buckets de tabela gerenciados pelo cliente**  <a name="s3-tables-buckets-customer-managed"></a>
Os buckets de tabela gerenciados pelo cliente são recursos para armazenar tabelas do Amazon S3 criadas e gerenciadas pelos clientes. Você cria esses buckets explicitamente, escolhe os respectivos nomes e mantém controle total sobre as tabelas e os namespaces dentro deles. Com relação a buckets de tabela gerenciados pelo cliente, você pode criar, excluir, definir uma criptografia padrão personalizada ou configurar opções de manutenção conforme necessário.

**Buckets de tabela gerenciados pela AWS**  <a name="s3-tables-buckets-aws-managed"></a>
Os buckets de tabela gerenciados pela AWS são recursos gerenciados pela AWS que armazenam automaticamente tabelas criadas por serviços da AWS, como o inventário ativo e as tabelas de diário criadas pelo S3 Metadata. Esses buckets oferecem um local centralizado para todas as tabelas geradas pelo sistema. Esses buckets seguem uma convenção de nomenclatura padrão, usam um namespace padrão para todas as tabelas e têm configurações predefinidas de manutenção e criptografia padrão que o S3 modifica em seu nome. Você tem acesso somente de leitura para consultar os dados, enquanto a AWS lida com todas as operações de criação, atualização e manutenção de tabelas. Para obter mais informações, consulte [Trabalhar com buckets de tabela gerenciados pela AWS](s3-tables-aws-managed-buckets.md).

Há vários tipos de bucket do Amazon S3. Antes de criar um bucket, escolha o tipo de bucket que melhor se adapte aos requisitos de performance e da aplicação. Para obter mais informações sobre os vários tipos de bucket e os casos de uso apropriados para cada um, consulte [Buckets](Welcome.md#BasicsBucket).

**Topics**
+ [

## Tipos de bucket de tabela
](#s3-tables-buckets-types)
+ [

# Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3
](s3-tables-buckets-naming.md)
+ [

# Criar um bucket de tabela
](s3-tables-buckets-create.md)
+ [

# Excluir um bucket de tabela
](s3-tables-buckets-delete.md)
+ [

# Visualizar detalhes sobre um bucket de tabela do Amazon S3
](s3-tables-buckets-details.md)
+ [

# Gerenciar políticas de buckets de tabela
](s3-tables-bucket-policy.md)
+ [

# Trabalhar com buckets de tabela gerenciados pela AWS
](s3-tables-aws-managed-buckets.md)
+ [

# Usar tags com buckets de tabela do S3
](table-bucket-tagging.md)

# Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3
<a name="s3-tables-buckets-naming"></a>

Ao criar um bucket de tabela, escolha um nome de bucket e uma Região da AWS. O nome deve ser exclusivo dentro da conta na região escolhida. Depois de criar um bucket de tabela, você não poderá mais alterar o respectivo nome ou região. Os nomes dos buckets de tabela devem seguir regras de nomenclatura específicas. Para ter mais informações sobre as regras de nomenclatura para os buckets de tabela e para as tabelas e os namespaces dentro deles, consulte o tópico a seguir.

**Topics**
+ [

## Regras de nomenclatura de buckets de tabela
](#table-buckets-naming-rules)
+ [

## Regras de nomenclatura para tabelas e namespaces
](#naming-rules-table)

## Regras de nomenclatura de buckets de tabela
<a name="table-buckets-naming-rules"></a>

Ao criar buckets de tabela do Amazon S3, especifique um nome de bucket de tabela. Como outros tipos de bucket, não é possível renomear os buckets de tabela. Ao contrário de outros tipos de bucket, os buckets de tabela não estão em um namespace global, então cada nome de bucket na conta só precisa ser exclusivo apenas na região da AWS atual. 

Para conferir as regras de nomenclatura para buckets de uso geral, consulte [Regras de nomenclatura de buckets de uso geral](bucketnamingrules.md). Consulte as regras de nomenclatura de buckets de diretório em [Regras de nomenclatura de buckets de diretório](directory-bucket-naming-rules.md).

As regras de nomenclatura a seguir se aplicam aos buckets de tabela.
+ Os nomes dos buckets devem ter entre 3 e 63 caracteres.
+ Os nomes de bucket podem consistir apenas em letras minúsculas, números e hífenes (-).
+ Os nomes dos buckets devem começar e terminar com uma letra ou um número.
+ Os nomes de bucket não devem conter sublinhados (`_`) nem pontos (`.`).
+ Os nomes de bucket não devem começar com os seguintes prefixos: 
  + `xn--`
  + `sthree-`
  + `amzn-s3-demo-`
  + `aws`
+ Os nomes de bucket não devem terminar com os seguintes prefixos:
  + `-s3alias`
  + `--ol-s3`
  + `--x-s3`
  + `--table-s3`

## Regras de nomenclatura para tabelas e namespaces
<a name="naming-rules-table"></a>

As seguintes regras de nomenclatura se aplicam a tabelas e namespaces dentro de buckets de tabela:
+ Os nomes devem ter entre 1 e 255 caracteres.
+ Os nomes só podem consistir em letras minúsculas, números e sublinhados (`_`).
+ Os nomes devem começar com uma letra ou um número.
+ Os nomes não devem conter hifens (`-`) nem pontos (`.`).
+ O nome da tabela deve ser único dentro de um namespace.
+ Um namespace deve ser único dentro de um bucket de tabela.
+ Os nomes de namespaces não devem começar com o prefixo reservado `aws`.

**Importante**  
Ao criar tabelas, use apenas letras minúsculas nos nomes e nas definições das tabelas. Por exemplo, os nomes das colunas devem estar todos em minúsculas. Se o nome da tabela ou a definição da tabela contiver letras maiúsculas, a tabela não será compatível com o AWS Lake Formation ou o AWS Glue Data Catalog. Nesse caso, a tabela não estará visível para serviços de analytics da AWS, como o Amazon Athena, mesmo que os buckets de tabela estejam integrados aos serviços de analytics da AWS.   
Se a definição da tabela contiver letras maiúsculas, você receberá a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”.

# Criar um bucket de tabela
<a name="s3-tables-buckets-create"></a>

Os buckets de tabela do Amazon S3 são um tipo de bucket do S3 que você pode usar para criar e armazenar tabelas como recursos do S3. Para começar a usar a funcionalidade Tabelas do S3, crie um bucket de tabela para armazenar e gerenciar as tabelas. Ao criar um bucket de tabela, você escolhe um nome de bucket e uma Região da AWS. O nome do bucket de tabela deve ser exclusivo para a conta na região escolhida. Depois de criar um bucket de tabela, você não poderá mais alterar o respectivo nome ou região. Para ter mais informações sobre a nomeação de buckets de tabela, consulte [Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3](s3-tables-buckets-naming.md).

Os buckets de tabela têm o seguinte formato de nome do recurso da Amazon (ARN):

```
arn:aws:s3tables:region:owner-account-id:bucket/bucket-name
```

Por padrão, é possível criar até dez buckets de tabela por região em uma Conta da AWS. Para solicitar um aumento da cota de tabelas e de buckets de tabela, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase).

Ao criar um bucket de tabela, você pode especificar o tipo de criptografia que será usado para criptografar as tabelas criadas nesse bucket. Para ter mais informações sobre as opções de criptografia de bucket, consulte [Proteger os dados de tabela do S3 com criptografia](s3-tables-encryption.md).

**Pré-requisitos para a criação de buckets de tabela**

Para criar um bucket de tabela, primeiro é necessário fazer o seguinte: 
+ Você deve ter permissões do AWS Identity and Access Management (IAM) para `s3tables:CreateTableBucket`.

**nota**  
Se você escolher SSE-KMS como o tipo de criptografia padrão, deverá ter permissões para `s3tables:PutTableBucketEncryption` e a permissão `DescribeKey` na chave do AWS KMS escolhida. Além disso, a chave AWS KMS que você usa precisa conceder permissão à funcionalidade Tabelas do S3 para que realize a manutenção automática de tabelas. Para obter mais informações, consulte [Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3](s3-tables-kms-permissions.md).

Para criar um bucket de tabela, é possível usar o console do Amazon S3, a API REST do Amazon S3, a AWS Command Line Interface (AWS CLI) ou os SDKs da AWS.

## Usar o console do S3
<a name="create-table-bucket-console"></a>

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. Na barra de navegação na parte superior da página, escolha o nome da Região da AWS exibida no momento. Em seguida, escolha a região na qual você deseja criar um bucket.

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

1. Escolha **Criar bucket de tabela** para abrir a página **Criar bucket de tabela**.

1. Em **Propriedades**, insira um nome para o bucket de tabela.

   O nome do bucket de tabela deve: 
   + Ser exclusivo na sua conta e na região atual.
   + Ter entre 3 e 63 caracteres.
   + Consistir apenas em letras minúsculas, números e hífens (-).
   + Inicie e termine com uma letra ou um número.

   Depois de criado o bucket, você não pode mudar seu nome. A Conta da AWS que cria o bucket é a proprietária do bucket. Para ter mais informações sobre a nomeação de buckets de tabela, consulte [Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3](s3-tables-buckets-naming.md).

1. Se você quiser integrar os buckets de tabela aos serviços de analytics da AWS, selecione a opção **Habilitar integração** em **Integração com serviços de analytics da AWS**.
**nota**  
Quando você cria seu primeiro bucket de tabela usando o console com a opção **Habilitar integração** selecionada, o Amazon S3 tenta integrar automaticamente o bucket de tabela aos serviços de analytics da AWS. Essa integração permite que você use os serviços de analytics da AWS para consultar todas as tabelas na região atual. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

1. Para configurar a criptografia padrão, em **Tipo de criptografia**, selecione uma das seguintes opções: 
   + **Criptografia do lado do servidor com chave gerenciada pelo Amazon S3 (SSE-S3)**
   + **Criptografia do lado do servidor com chave do AWS Key Management Service (SSE-KMS)**

   Para ter mais informações sobre as opções de criptografia para dados de tabela, consulte [Proteger os dados de tabela do S3 com criptografia](s3-tables-encryption.md).

1. Escolha **Criar bucket**.

## Como usar o AWS CLI
<a name="create-table-bucket-CLI"></a>

Esse exemplo mostra como criar um bucket de tabela usando a AWS CLI. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables create-table-bucket \
    --region us-east-2 \
    --name amzn-s3-demo-bucket1
```

Por padrão, os buckets de tabela do S3 usam SSE-S3 como configuração de criptografia padrão, mas você pode usar o parâmetro opcional `--encryption-configuration` para especificar um tipo de criptografia diferente. O exemplo a seguir mostra como criar um bucket que usa a criptografia SSE-KMS. Para ter mais informações sobre configurações de criptografia para buckets de tabela, consulte [Proteger os dados de tabela do S3 com criptografia](s3-tables-encryption.md).

```
aws s3tables create-table-bucket \
    --region us-east-2 \
    --name amzn-s3-demo-bucket1
    --encryption-configuration '{
                    "sseAlgorithm": "aws:kms",
                    "kmsKeyArn": "arn:aws:kms:Region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }'
```

# Excluir um bucket de tabela
<a name="s3-tables-buckets-delete"></a>

Você pode usar as APIs do Amazon S3, a AWS Command Line Interface, ou os AWS SDKs para excluir um bucket de tabela. Antes de excluir um bucket de tabela, primeiro você deve excluir todos os namespaces e tabelas dentro do bucket.

**Importante**  
 Ao excluir um bucket de tabela, você precisa saber o seguinte:   
A exclusão de um bucket é permanente e não pode ser desfeita. 
Todos os dados e configurações associados ao bucket são perdidos definitivamente.

## Usar a AWS CLI
<a name="delete-table-bucket-CLI"></a>

Esse exemplo mostra como excluir um bucket de tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables delete-table-bucket \
    --region us-east-2 \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1
```

# Visualizar detalhes sobre um bucket de tabela do Amazon S3
<a name="s3-tables-buckets-details"></a>

Você pode visualizar os detalhes gerais de um bucket de tabela do Amazon S3, como o proprietário e o tipo do bucket, no console ou programaticamente. É possível visualizar programaticamente as configurações padrão de criptografia e as configurações de manutenção usando a API REST do serviço Tabelas S3, a AWS CLI ou SDKs da AWS.

## Visualizar detalhes do bucket de tabela
<a name="table-bucket-details-view"></a>

### Como usar o AWS CLI
<a name="table-bucket-details-CLI"></a>

Esse exemplo mostra como obter os detalhes de um bucket de tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table-bucket --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
```

### Usar o console do S3
<a name="table-bucket-details-CLI"></a>

1. 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. Selecione seu bucket de tabela.

1. Escolha a guia **Propriedades**.

## Visualizar configurações de criptografia de bucket de tabela
<a name="table-bucket-encryption-view"></a>

Para ter mais informações sobre criptografia de buckets de tabela, consulte [Usar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de tabela](s3-tables-kms-encryption.md).

### Como usar o AWS CLI
<a name="table-bucket-encryption-view-CLI"></a>

Este exemplo mostra como obter detalhes sobre configurações de buckets de tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table-bucket-encryption --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
```

## Visualizar configurações de manutenção de buckets de tabela
<a name="table-bucket-maintenance-view"></a>

Para ter mais informações sobre configurações de manutenção, consulte [Manutenção para buckets de tabela](s3-table-buckets-maintenance.md). 

### Como usar o AWS CLI
<a name="table-bucket-maintenance-view-CLI"></a>

Este exemplo mostra como obter detalhes sobre configurações de manutenção de buckets de tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table-bucket-maintenance-configuration --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
```

# Gerenciar políticas de buckets de tabela
<a name="s3-tables-bucket-policy"></a>

Você pode adicionar, excluir, atualizar e visualizar políticas para buckets de tabela do Amazon S3 usando a API REST do Amazon S3, os AWS SDKs e a AWS Command Line Interface (AWS CLI). Para obter mais informações, consulte os tópicos a seguir. 

Para obter mais informações, consulte os tópicos a seguir. Para ter mais informações sobre as chaves de condição e ações do AWS Identity and Access Management (IAM) compatíveis com a funcionalidade Tabelas do Amazon S3, consulte [Gerenciamento de acesso para a funcionalidade Tabelas do S3](s3-tables-setting-up.md). Para conferir exemplos de políticas para buckets de tabela, consulte [Políticas baseadas em recurso para a funcionalidade Tabelas do S3](s3-tables-resource-based-policies.md).

**nota**  
A política de bucket de tabela fornece acesso às tabelas armazenadas no bucket. As políticas de bucket de tabela não se aplicam a tabelas que pertencem a outras contas.

## Adicionar uma política de bucket de tabela
<a name="table-bucket-policy-add"></a>

Para adicionar uma política a um bucket de tabela, use o exemplo da AWS CLI a seguir. 

### Como usar o AWS CLI
<a name="table-bucket-policy-add-CLI"></a>

Esse exemplo mostra como criar uma política de bucket de tabela usando a AWS CLI. Para usar o comando, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables put-table-bucket-policy \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1  \
    --resource-policy your-policy-JSON
```

### Usar o console do S3
<a name="table-bucket-policy-add-console"></a>

1. 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 **Amazon S3**.

1. Escolha **Buckets de tabela** e selecione o nome do bucket de tabela ao qual você deseja adicionar uma política.

1. Escolha a aba **Permissões**.

1. Em **Política de bucket**, escolha **Editar**.

1. No editor de políticas, insira a política JSON. 

1. (Opcional) Escolha **Exemplos de política** para ver exemplos de política que você pode adaptar às suas necessidades.

1. Depois de inserir a política, escolha **Salvar alterações**.

## Visualizar uma política de bucket de tabela
<a name="table-bucket-policy-get"></a>

Para visualizar uma política que está anexada a um bucket de tabela, use o exemplo da AWS CLI a seguir. 

### Como usar o AWS CLI
<a name="table-bucket-policy-get-CLI"></a>

Esse exemplo mostra como visualizar a política que está anexada a um bucket de tabela usando a AWS CLI. Para usar o comando, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables get-table-bucket-policy --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1
```

### Usar o console do S3
<a name="get-policy-table-bucket-console"></a>

1. 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 **Amazon S3**.

1. Escolha **Buckets de tabela** e selecione o nome do bucket de tabela para o qual você deseja visualizar a política.

1. Escolha a aba **Permissões**.

## Excluir uma política de bucket de tabela
<a name="table-bucket-policy-delete"></a>

Para excluir uma política que está anexada a um bucket de tabela, use o exemplo da AWS CLI a seguir. 

### Como usar o AWS CLI
<a name="table-bucket-policy-delete-CLI"></a>

Esse exemplo mostra como excluir uma política de bucket de tabela usando a AWS CLI. Para usar o comando, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables delete-table-bucket-policy --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1
```

### Usar o console do S3
<a name="table-bucket-policy-delete-console"></a>

1. 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 **Amazon S3**.

1. Escolha **Buckets de tabela** e selecione o nome do bucket de tabela para o qual você deseja excluir uma política.

1. Escolha a aba **Permissões**.

1. Em **Política de bucket de tabela**, escolha **Excluir**.

# Trabalhar com buckets de tabela gerenciados pela AWS
<a name="s3-tables-aws-managed-buckets"></a>

Os buckets de tabela gerenciados pela AWS são buckets de tabela especializados do Amazon S3 projetados para armazenar tabelas gerenciadas pela AWS, como tabelas do [S3 Metadata](metadata-tables-overview.md), de diário e de inventário em tempo real. Diferentemente dos buckets de tabela gerenciados pelo cliente, que você cria e gerencia diretamente, os buckets de tabela gerenciados pela AWS são provisionados automaticamente pela AWS quando você configura recursos que exigem tabelas gerenciadas pela AWS. Quando as tabelas gerenciadas são criadas, elas pertencem a um namespace predefinido com base no nome do bucket de origem. Esse namespace predefinido não pode ser modificado. 

Cada Conta da AWS tem um bucket de tabela gerenciado pela AWS por região, seguindo a convenção de nomenclatura `aws-s3`. Esse bucket serve como um local centralizado para todas as tabelas gerenciadas associadas aos recursos da sua conta nessa região.

A tabela a seguir compara os buckets de tabela gerenciados pela AWS com os buckets de tabela gerenciados pelo cliente.


| **Recurso** | **Buckets de tabela gerenciados pela AWS** | **Buckets de tabela gerenciados pelo cliente** | 
| --- | --- | --- | 
| Criação | Criados automaticamente por Serviços da AWS. | Você os cria manualmente. | 
| Nomenclatura | Usam uma convenção de nomenclatura padrão (aws-s3). | Você define seus próprios nomes. | 
| Criação de tabela | Só Serviços da AWS podem criar tabelas. | Você pode criar tabelas. | 
| Controle de namespace | Não é possível criar ou excluir namespaces (todas as tabelas pertencem a um namespace fixo). | Você pode criar e excluir namespaces. | 
| Acesso da | Acesso somente leitura. | Acesso total. | 
| Criptografia | Você pode alterar as configurações de criptografia padrão (SSE-S3) somente se tiver criptografado a tabela inicial com uma chave do AWS Key Management Service (AWS KMS) gerenciada pelo cliente. | Você pode definir a criptografia padrão em nível de bucket e modificá-la a qualquer momento. | 
| Manutenção | Gerenciado pela Serviços da AWS | É possível personalizar a manutenção automatizada em nível de bucket. | 

## Permissões para trabalhar com buckets de tabela gerenciados pela AWS para consultar tabelas
<a name="aws-managed-buckets-permissions"></a>

Para trabalhar com buckets de tabela gerenciados pela AWS, você precisa de permissões para criar buckets de tabela e tabelas gerenciados pela AWS e especificar configurações de criptografia para tabelas gerenciadas pela AWS. Você também precisa de permissões para consultar as tabelas em seus buckets de tabela gerenciados pela AWS.

A seguinte política de exemplo permite que você crie um bucket de tabela gerenciado pela AWS por meio de uma configuração do S3 Metadata:

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"PermissionsToWorkWithMetadataTables",
         "Effect":"Allow",
         "Action":[
             "s3:CreateBucketMetadataTableConfiguration",
             "s3tables:CreateTableBucket",
             "s3tables:CreateNamespace",
             "s3tables:CreateTable",
             "s3tables:GetTable",
             "s3tables:PutTablePolicy"
             "s3tables:PutTableEncryption",
             "kms:DescribeKey"
         ],
         "Resource":[
            "arn:aws:s3:::bucket/amzn-s3-demo-source-bucket",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*",
            "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
         ]
       }
    ]
}
```

A seguinte política de exemplo permite que você consulte tabelas em buckets de tabela gerenciados pela AWS:

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"PermissionsToQueryMetadataTables",
         "Effect":"Allow",
         "Action":[
             "s3tables:GetTable",
             "s3tables:GetTableData",
             "s3tables:GetTableMetadataLocation",
             "kms:Decrypt"
         ],
         "Resource":[
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*",
            "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
         ]
       }
    ]
}
```

## Consultar tabelas em buckets de tabela gerenciados pela AWS
<a name="querying-tables-in-aws-managed-table-buckets"></a>

Você pode consultar tabelas gerenciadas pela AWS em buckets de tabela gerenciados pela AWS usando métodos e mecanismos de acesso compatíveis com a funcionalidade Tabelas do S3. A seguir são apresentados alguns exemplos de consulta.

------
#### [ Using standard SQL ]

O seguinte exemplo a seguir mostra como consultar tabelas gerenciadas pela AWS usando a sintaxe SQL padrão:

```
SELECT *
FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory"
LIMIT 10;
```

O seguinte exemplo mostra como unir tabelas gerenciadas pela AWS com suas tabelas:

```
SELECT *
FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" a
JOIN "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" b
ON a.key = b.key
LIMIT 10;
```

------
#### [ Using Spark ]

O seguinte exemplo mostra como consultar uma tabela com o Spark:

```
spark.sql("""
    SELECT *
    FROM ice_catalog.inventory a
    JOIN ice_catalog.my_table b
    ON a.key = b.key
""").show(10, true)
```

O seguinte exemplo mostra como unir uma tabela gerenciada pela AWS com outra tabela:

```
SELECT *
FROM inventory a
JOIN my_table b
ON a.key = b.key
LIMIT 10;
```

------

## Criptografia para buckets de tabela gerenciados pela AWS
<a name="aws-managed-buckets-encryption"></a>

Por padrão, os buckets de tabela gerenciados pela AWS são criptografados com a criptografia do lado do servidor usando chaves gerenciadas pelo Amazon S3 (SSE-S3). Depois de criar o bucket de tabela gerenciado pela AWS, você poderá usar [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableBucketEncryption.html) para definir a configuração de criptografia padrão do bucket como criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS).

Durante a criação de tabelas gerenciadas pela AWS, você pode optar por criptografá-las com o SSE-KMS. Se você optar por usar o SSE-KMS, deverá fornecer uma chave do KMS gerenciada pelo cliente na mesma região do bucket de tabela gerenciado pela AWS. Você pode definir o tipo de criptografia de uma tabela gerenciada pela AWS somente ao criar a tabela. Após a criação de uma tabela gerenciada pela AWS, não é possível alterar a configuração de criptografia.

Se você quiser que o bucket de tabela AWS gerenciado e as tabelas armazenadas nele usem a mesma chave KMS, certifique-se de usar a mesma chave KMS que você usou para criptografar suas tabelas para criptografar o bucket de tabela depois de criado. Depois de alterar as configurações de criptografia padrão do bucket de tabelas para usar SSE-KMS, essas configurações de criptografia serão usadas para qualquer tabela futura criada no bucket.

# Usar tags com buckets de tabela do S3
<a name="table-bucket-tagging"></a>

Uma tag da AWS é um par de chave-valor que contém metadados sobre recursos, neste caso buckets de tabela do Amazon S3. É possível marcar buckets de tabela do S3 ao criá-los ou gerenciar tags em buckets de tabela existentes. Para ter informações gerais sobre tags, consulte [Atribuir tags para alocação de custos ou controle de acesso por atributo (ABAC)](tagging.md).

**nota**  
Não há cobrança adicional para usar tags em buckets de tabela além das taxas de solicitação padrão da API do S3. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

## Maneiras comuns de usar tags com buckets de tabela
<a name="common-ways-to-use-tags-table-bucket"></a>

Use tags em buckets de tabela do S3 para:

**Controle de acesso por atributo (ABAC)**: amplie as permissões de acesso e conceda acesso aos buckets de tabela do S3 com base nas respectivas tags. Para ter mais informações, consulte [Using tags for ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac).

### ABAC para buckets de tabela do S3
<a name="abac-for-table-buckets"></a>

Os buckets de tabela do Amazon S3 permitem o controle de acesso por atributo (ABAC) por meio de tags. Use chaves de condição baseadas em tags em políticas de bucket de tabela do S3, de suas organizações na AWS e do AWS Identity and Access Management (IAM). O ABAC no Amazon S3 permite a autorização em várias contas da AWS. 

Nas suas políticas do IAM, você pode controlar o acesso aos buckets de tabela do S3 com base nas tags do bucket de tabela usando a chave de condição `s3tables:TableBucketTag/tag-key` ou as [chaves de condição globais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` ou `aws:TagKeys`. 

#### aws:ResourceTag/key-name
<a name="table-bucket-condition-key-resource-tag"></a>

Use essa chave de condição para comparar o par chave-valor da tag especificada na política com o par de chave-valor anexado ao recurso. Por exemplo, é possível exigir que o acesso a um bucket de tabela seja permitido somente se o bucket de tabela tiver a chave de tag `Department` com o valor `Marketing`.

Essa chave de condição se aplica a todas as ações de bucket de tabela realizadas por meio do console do Amazon S3, da AWS Command Line Interface (CLI), das APIs do S3 ou dos SDKs da AWS, exceto para a solicitação de API `CreateBucket`.

Para visualizar um exemplo de política, consulte [1.1 Política de bucket de tabela para restringir operações nas tabelas dentro do bucket de tabela por meio de tags](#example-policy-table-bucket-resource-tag). 

Para ter mais informações, consulte [Controlar o acesso a recursos da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources) no *Guia do usuário do AWS Identity and Access Management*.

**nota**  
Para ações realizadas em tabelas, essa chave de condição atua nas tags aplicadas à tabela e não nas tags aplicadas ao bucket de tabela que contém a tabela. Em vez disso, use a `s3tables:TableBucketTag/tag-key` se quiser que suas políticas de ABAC atuem nas tags do bucket de tabela ao realizar ações de tabela. 

#### aws:RequestTag/key-name
<a name="table-bucket-condition-key-request-tag"></a>

Use essa chave de condição para comparar o par de chave-valor da tag que foi transmitido na solicitação com o par de tags especificado na política. Por exemplo, é possível verificar se a solicitação para marcar um bucket de tabela inclui a chave de tag `Department` e se ela tem o valor `Accounting`. 

Essa chave de condição se aplica quando as chaves de tag são transmitidas em uma solicitação de operação de API `TagResource` ou `CreateTableBucket` ou ao marcar ou criar um bucket de tabela com tags usando o console do Amazon S3, a AWS Command Line Interface (CLI) ou os SDKs da AWS. 

Para visualizar um exemplo de política, consulte [1.2 Política do IAM para criar ou modificar buckets de tabela com tags específicas](#example-policy-table-bucket-request-tag).

Para ver exemplos adicionais de política e ter mais informações, consulte [Controlar o acesso durante solicitações da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests) no *Guia do usuário do AWS Identity and Access Management*.

#### aws:TagKeys
<a name="table-bucket-condition-key-tag-keys"></a>

Use essa chave de condição para comparar as chaves de tag em uma solicitação com as chaves especificadas na política para definir quais chaves de tag são permitidas para acesso. Por exemplo, para permitir a marcação durante a ação `CreateTableBucket`, é necessário criar uma política que permita as ações `s3tables:CreateTableBucket` e `s3tables:TagResource`. Em seguida, é possível usar a chave de condição `aws:TagKeys` para impor o uso somente de tags específicas na solicitação `CreateTableBucket`. 

Essa chave de condição se aplica quando as chaves de tag são transmitidas em uma solicitação de operação de API `TagResource`, `UntagResource` ou `CreateTableBucket` ou ao marcar, desmarcar ou criar um bucket de tabela com tags usando o console do Amazon S3, a AWS Command Line Interface (CLI) ou os SDKs da AWS. 

Para visualizar um exemplo de política, consulte [1.3 Política do IAM para controlar a modificação de tags em recursos existentes, mantendo a governança de marcação](#example-policy-table-bucket-tag-keys).

Para ter mais informações e ver outros exemplos de política, consulte [Controlar o acesso com base em chaves de tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys), no *Guia do usuário do AWS Identity and Access Management*.

#### s3tables:TableBucketTag/tag-key
<a name="table-bucket-condition-key"></a>

Use essa chave de condição para conceder permissões a dados específicos em buckets de tabela por meio de tags. Essa chave de condição atua, na maior parte das vezes, nas tags atribuídas ao bucket de tabela para todas as ações de tabela do S3. Mesmo quando você cria uma tabela com tags, essa chave de condição atua nas tags aplicadas ao bucket de tabela que contém essa tabela. As exceções são: 
+ Quando você cria um bucket de tabela com tags, essa chave de condição atua nas tags na solicitação.

Para visualizar um exemplo de política, consulte [1.4 Usar a chave de condição s3tables:TableBucketTag](#example-policy-table-bucket-tag). 

#### Exemplos de política de ABAC para buckets de tabela
<a name="example-table-buckets-abac-policies"></a>

Veja os exemplos de política de ABAC a seguir para buckets de tabela do Amazon S3.

**nota**  
Se você estiver usando o Lake Formation para gerenciar o acesso a tabelas do Amazon S3 e tiver uma política baseada em recursos do IAM ou da funcionalidade Tabelas do S3 que restrinja usuários do IAM e perfis do IAM com base em tags de entidade principal, será necessário anexar as mesmas tags de entidade principal ao perfil do IAM que o Lake Formation usa para acessar dados do Amazon S3 (por exemplo, LakeFormationDataAccessRole) e conceder a esse perfil as devidas permissões. Isso é necessário para que a política de controle de acesso baseada em tags funcione corretamente com integração de analytics da funcionalidade Tabelas do S3.

##### 1.1 Política de bucket de tabela para restringir operações nas tabelas dentro do bucket de tabela por meio de tags
<a name="example-policy-table-bucket-resource-tag"></a>

Nessa política de bucket de tabela, as entidades principais especificadas do IAM (usuários e perfis) poderão executar a ação `GetTable` em qualquer tabela no bucket de tabela somente se o valor da tag `project` da tabela corresponder ao valor da tag `project` da entidade principal.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGetTable",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3tables:GetTable",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

##### 1.2 Política do IAM para criar ou modificar buckets de tabela com tags específicas
<a name="example-policy-table-bucket-request-tag"></a>

**nota**  
Se você estiver usando o AWS Lake Formation para gerenciar o acesso às suas tabelas do Amazon S3 e estiver usando o ABAC com a funcionalidade Tabelas do Amazon S3, também será necessário atribuir o acesso necessário ao perfil do IAM que o Lake Formation assumir. Para obter mais informações sobre como configurar o perfil do IAM para o Lake Formation, consulte [Pré-requisitos para integrar o catálogo de Tabelas do Amazon S3 ao Catálogo de Dados e ao Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/s3tables-catalog-prerequisites.html) no Guia do desenvolvedor do AWS Lake Formation. 

Nessa política do IAM, usuários ou perfis com essa política só poderão criar buckets de tabela do S3 se marcarem o bucket de tabela com a chave de tag `project` e o valor de tag `Trinity` na solicitação de criação do bucket de tabela. Eles também podem adicionar ou modificar tags em buckets de tabela existentes do S3, desde que a solicitação `TagResource` inclua o par de chave-valor de tag `project:Trinity`. Essa política não concede permissões de leitura, gravação ou exclusão nos buckets de tabela ou nos respectivos objetos. 

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateTableBucketWithTags",
      "Effect": "Allow",
      "Action": [
        "s3tables:CreateTableBucket",
        "s3tables:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

##### 1.3 Política do IAM para controlar a modificação de tags em recursos existentes, mantendo a governança de marcação
<a name="example-policy-table-bucket-tag-keys"></a>

Nessa política do IAM, as entidades principais do IAM (usuários e perfis) poderão modificar tags em um bucket de tabela somente se o valor da tag `project` do bucket de tabela corresponder ao valor da tag `project` da entidade principal. Somente as quatro tags (`project`, `environment`, `owner` e `cost-center`) especificadas nas chaves de condição `aws:TagKeys` são permitidas para esses buckets de tabela. Isso ajuda a impor a governança de tags, evita modificações não autorizadas nas tags e mantém o esquema de marcação consistente em todos os seus buckets de tabela.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3tables:TagResource",
        "s3tables:UntagResource"
      ],
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

##### 1.4 Usar a chave de condição s3tables:TableBucketTag
<a name="example-policy-table-bucket-tag"></a>

Nessa política do IAM, a instrução de condição permitirá acesso aos dados do bucket de tabela somente se o bucket tiver a chave de tag `Environment` e o valor de tag `Production`. A `s3tables:TableBucketTag/<tag-key>` é diferente da chave de condição `aws:ResourceTag/<tag-key>` porque, além de controlar o acesso aos buckets de tabela de acordo com as respectivas tags, ela permite controlar o acesso às tabelas com base nas tags do bucket de tabela principal.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificTables",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*",
      "Condition": {
        "StringEquals": {
          "s3tables:TableBucketTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## Gerenciar tags para buckets de tabela
<a name="table-bucket-working-with-tags"></a>

É possível adicionar ou gerenciar tags para buckets de tabela do S3 usando o console do Amazon S3, a AWS Command Line Interface (CLI), os SDKs da AWS ou as APIs [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_TagResource.html), [UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_UntagResource.html) e [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_ListTagsForResource.html) do S3. Para saber mais, consulte:

**Topics**
+ [

## Maneiras comuns de usar tags com buckets de tabela
](#common-ways-to-use-tags-table-bucket)
+ [

## Gerenciar tags para buckets de tabela
](#table-bucket-working-with-tags)
+ [

# Criar buckets de tabela com tags
](table-bucket-create-tag.md)
+ [

# Adicionar uma tag a um bucket de tabela
](table-bucket-tag-add.md)
+ [

# Visualizar as tags de um bucket de tabela
](table-bucket-tag-view.md)
+ [

# Excluir uma tag de um bucket de tabela
](table-bucket-tag-delete.md)

# Criar buckets de tabela com tags
<a name="table-bucket-create-tag"></a>

É possível marcar buckets de tabela do Amazon S3 ao criá-los. Não há cobrança adicional para usar tags em buckets de tabela além das taxas de solicitação padrão da API do S3. Para obter mais informações, consulte [Preço do Amazon S3](https://docs.aws.amazon.com/s3/pricing/). Para ter mais informações sobre marcação de buckets de tabela, consulte [Usar tags com buckets de tabela do S3](table-bucket-tagging.md).

## Permissões
<a name="table-bucket-create-tag-permissions"></a>

Para criar um bucket de tabela com tags, é necessário ter as seguintes permissões:
+ `s3tables:CreateTableBucket`
+ `s3tables:TagResource`

## Solucionar de problemas de erros
<a name="table-bucket-create-tag-troubleshooting"></a>

Se você encontrar um erro ao tentar criar um bucket de tabela com tags, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-bucket-create-tag-permissions) necessárias para criar o bucket de tabela e aplicar uma tag a ele.
+ Confira sua política de usuário do IAM para ver se existe alguma condição de controle de acesso por atributo (ABAC). Sua política pode exigir que você marque os buckets de tabela somente com chaves e valores de tag específicos. Para ter mais informações sobre ABAC e exemplos de política de ABAC de bucket de tabela, consulte [ABAC para buckets de tabela do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/table-bucket-tagging.html#abac-for-table-buckets).

## Etapas
<a name="table-bucket-create-tag-steps"></a>

É possível criar um bucket de tabela com tags aplicadas usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST da funcionalidade Tabelas do Amazon S3 e SDKs da AWS.

## Usar o console do S3
<a name="table-bucket-create-tag-console"></a>

Criar um bucket de tabela com tags usando o console do Amazon S3:

1. Faça login no 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. Para criar novo bucket de tabela, escolha **Criar bucket de tabela**.

1. Insira um nome para o bucket de tabela. Para obter mais informações, consulte [Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3](s3-tables-buckets-naming.md). 

1. Na página **Criar bucket de tabela**, há uma seção **Tags**.

1. Escolha **Adicionar nova tag** para abrir o editor de tags e inserir um par de chave-valor de tag. A chave de tag é necessária, mas o valor é opcional. 

1. Para adicionar outra tag, selecione novamente **Adicionar nova tag**. É possível adicionar até cinquenta pares de chave-valor de tag.

1. Especifique as opções restantes para seu novo bucket de tabela. Para obter mais informações, consulte [Criar um bucket de tabela](s3-tables-buckets-create.md).

1. Escolha **Criar bucket de tabela**.

## Uso da API REST
<a name="table-bucket-create-tag-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST da funcionalidade Tabelas do Amazon S3 para criar um bucket de tabela com tags, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [CreateTableBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_CreateTableBucket.html)

## Como usar o AWS CLI
<a name="table-bucket-create-tag-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como criar um bucket de tabela com tags usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

Ao criar um bucket de tabela, é necessário fornecer detalhes de configuração. Para obter mais informações, consulte [Criar um bucket de tabela](s3-tables-buckets-create.md). Também é necessário atribuir um nome ao bucket de tabela que siga a convenção de nomenclatura de buckets de tabela. Para obter mais informações, consulte [Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3](s3-tables-buckets-naming.md). 

**Solicitação:**

```
aws --region us-west-2 \
s3tables create-table-bucket \
--tags '{"Department":"Engineering"}' \
--name amzn-s3-demo-table-bucket
```

# Adicionar uma tag a um bucket de tabela
<a name="table-bucket-tag-add"></a>



É possível adicionar tags aos buckets de tabela do Amazon S3 e modificá-las. Para ter mais informações sobre marcação de buckets de tabela, consulte [Usar tags com buckets de tabela do S3](table-bucket-tagging.md).

## Permissões
<a name="table-bucket-tag-add-permissions"></a>

Para adicionar uma tag a um bucket de tabela, é necessário ter a seguinte permissão:
+ `s3tables:TagResource`

## Solucionar de problemas de erros
<a name="table-bucket-tag-add-troubleshooting"></a>

Se você encontrar um erro ao tentar adicionar uma tag a um bucket de tabela, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-bucket-tag-add-permissions) necessárias para adicionar uma tag a um bucket de tabela.
+ Se você tentou adicionar uma chave de tag que começa com o prefixo reservado `aws:` da AWS, altere-a e tente novamente. 
+ A chave de tag é obrigatória. Além disso, a chave e o valor da tag não devem exceder a extensão máxima de caracteres e não devem conter caracteres restritos. Para obter mais informações, consulte [Atribuir tags para alocação de custos ou controle de acesso por atributo (ABAC)](tagging.md).

## Etapas
<a name="table-bucket-tag-add-steps"></a>

É possível adicionar tags a buckets de tabela usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST da funcionalidade Tabelas do Amazon S3 e os SDKs da AWS.

## Usar o console do S3
<a name="table-bucket-tag-add-console"></a>

Para adicionar tags a um bucket de tabela usando o console do Amazon S3:

1. Faça login no 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. Escolha o nome do bucket de tabela. 

1. Escolha a guia **Properties (Propriedades)**. 

1. Role até a seção **Tags** e escolha **Adicionar nova tag**. 

1. Isso abre a página **Adicionar tags**. É possível adicionar até cinquenta pares de chave-valor de tag. 

1. Se você adicionar uma nova tag com a mesma chave de uma tag existente, o valor da nova sobrescreverá o valor da tag existente.

1. Nessa página, também é possível editar os valor das tags existentes.

1. Depois de adicionar as tags, escolha **Salvar alterações**. 

## Uso da API REST
<a name="table-bucket-tag-add-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para adicionar tags a um bucket de tabela, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_TagResource.html)

## Como usar o AWS CLI
<a name="table-bucket-tag-add-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como adicionar tags a um bucket de tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação:**

```
aws --region us-west-2 \
s3tables tag-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket \
--tags '{"Department":"Engineering"}'
```

# Visualizar as tags de um bucket de tabela
<a name="table-bucket-tag-view"></a>

É possível visualizar ou listar tags aplicadas aos buckets de tabela do Amazon S3. Para ter mais informações sobre marcação de buckets de tabela, consulte [Usar tags com buckets de tabela do S3](table-bucket-tagging.md).

## Permissões
<a name="table-bucket-tag-view-permissions"></a>

Para visualizar as tags aplicadas a um bucket de tabela, é necessário ter a seguinte permissão: 
+ `s3tables:ListTagsForResource`

## Solucionar de problemas de erros
<a name="table-bucket-tag-view-troubleshooting"></a>

Se você encontrar um erro ao tentar listar ou visualizar as tags de um bucket de tabela, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-bucket-tag-view-permissions) necessárias para visualizar ou listar as tags do bucket de tabela.

## Etapas
<a name="table-bucket-tag-view-steps"></a>

É possível visualizar as tags aplicadas a buckets de tabela usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3 e os SDKs da AWS.

## Usar o console do S3
<a name="table-bucket-tag-view-console"></a>

Para visualizar as tags aplicadas a um bucket de tabela usando o console do Amazon S3:

1. Faça login no 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. Escolha o nome do bucket de tabela. 

1. Escolha a guia **Properties (Propriedades)**. 

1. Role até a seção **Tags** para visualizar todas as tags aplicadas ao bucket de tabela. 

1. Por padrão, a seção **Tags** mostra as **tags definidas elo usuário**. Você pode selecionar a guia **Tags geradas pela AWS** para visualizar as tags aplicadas pelos serviços da AWS ao seu bucket de tabela.

## Uso da API REST
<a name="table-bucket-tag-view-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para visualizar as tags aplicadas a um bucket de tabela, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [ListTagsforResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_ListTagsForResource.html)

## Como usar o AWS CLI
<a name="table-bucket-tag-view-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo de CLI a seguir mostra como visualizar as tags aplicadas a um bucket de tabela. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação:**

```
aws --region us-west-2 \
s3tables list-tags-for-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/example_table
```

**Resposta: tags presentes:**

```
{
    "tags": {
        "project": "Trinity",
        "code": "123456"
    }
}
```

**Resposta: nenhuma tag presente:**

```
{
  "Tags": []
}
```

# Excluir uma tag de um bucket de tabela
<a name="table-bucket-tag-delete"></a>

É possível remover tags dos buckets de tabela do Amazon S3. Para ter mais informações sobre marcação de buckets de tabela, consulte [Usar tags com buckets de tabela do S3](table-bucket-tagging.md).

**nota**  
Se você excluir uma tag e depois descobrir que ela estava sendo usada para monitorar custos ou controlar o acesso, poderá adicionar a tag novamente ao bucket de tabela. 

## Permissões
<a name="table-bucket-tag-delete-permissions"></a>

Para excluir uma tag de um bucket de tabela, é necessário ter a seguinte permissão: 
+ `s3tables:UntagResource`

## Solucionar de problemas de erros
<a name="table-bucket-tag-delete-troubleshooting"></a>

Se você encontrar um erro ao tentar excluir uma tag de um bucket de tabela, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-bucket-tag-delete-permissions) necessárias para excluir uma tag de um bucket de tabela.

## Etapas
<a name="table-bucket-tag-delete-steps"></a>

É possível excluir tags de buckets de tabela usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST da funcionalidade Tabelas do Amazon S3 e os SDKs da AWS.

## Usar o console do S3
<a name="table-bucket-tag-delete-console"></a>

Para excluir tags de um bucket de tabela usando o console do Amazon S3:

1. Faça login no 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. Escolha o nome do bucket de tabela. 

1. Escolha a guia **Properties (Propriedades)**. 

1. Role até a seção **Tags** e marque a caixa de seleção ao lado das tags que você gostaria de excluir. 

1. Escolha **Excluir**. 

1. O pop-up **Excluir etiquetas definidas pelo usuário** é exibido e solicita que você confirme a exclusão das tags selecionadas. 

1. Escolha **Delete** para confirmar.

## Uso da API REST
<a name="table-bucket-tag-delete-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para excluir tags de um bucket de tabela, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [UnTagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_UntagResource.html)

## Como usar o AWS CLI
<a name="table-bucket-tag-delete-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como excluir tags de um bucket de tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação:**

```
aws --region us-west-2 \
s3tables untag-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket \
--tags-keys '["Department"]'
```

# 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.

# Otimização de custos de tabelas com o Intelligent-Tiering
<a name="tables-intelligent-tiering"></a>

É possível otimizar automaticamente os custos de armazenamento das tabelas usando o S3 Intelligent-Tiering. A classe de armazenamento S3 Intelligent-Tiering para tabelas do S3 move automaticamente os dados para o nível de acesso mais econômico quando os padrões de acesso mudam. Com o S3 Intelligent-Tiering, os dados acessados com menor frequência são automaticamente movidos para níveis de menor custo e movidos de volta para o nível Frequent Access sempre que você os acessa novamente.

Todos os dados são movidos entre níveis sem taxas de recuperação, impacto no desempenho ou alterações na disponibilidade. Além disso, as operações de manutenção de tabelas, como compactação, são otimizadas com base em padrões de acesso, processando somente dados acessados ativamente nível Frequent Access e, ao mesmo tempo, reduzindo os custos de manutenção em dados acessados com menor frequência em níveis de menor custo.

**Topics**
+ [

## Níveis de acesso do Intelligent-Tiering para tabelas do S3
](#tables-intelligent-tiering-access-tiers)
+ [

## Comportamento de nivelamento automático com o S3 Intelligent-Tiering
](#tables-intelligent-tiering-auto-tiering-behavior)
+ [

## Especificar o S3 Intelligent-Tiering como classe de armazenamento
](#tables-intelligent-tiering-specifying-storage-class)
+ [

## Monitorar o uso do armazenamento
](#tables-intelligent-tiering-monitoring-storage)

## Níveis de acesso do Intelligent-Tiering para tabelas do S3
<a name="tables-intelligent-tiering-access-tiers"></a>

Quando a tabela é armazenada na classe de armazenamento S3 Intelligent-Tiering, o Amazon S3 monitora continuamente padrões de acesso e move automaticamente os dados de tabela entre níveis de acesso.

A hierarquização ocorre em nível de arquivo, portanto, uma única tabela pode ter arquivos em níveis diferentes com base nos padrões de acesso. Os dados da tabela são movidos automaticamente para um dos seguintes níveis de acesso com base nos padrões de acesso:
+ **Frequent Access**: o nível padrão para todos os arquivos. Os arquivos em outros níveis voltam automaticamente para o nível Frequent Access quando acessados.
+ **Infrequent Access**: se você não acessar um arquivo por trinta dias consecutivos, ele será movido para o nível Infrequent Access.
+ **Archive Instant Access**: se você não acessar um arquivo por noventa dias consecutivos, ele será movido para o nível Archive Instant Access.

Todos os níveis oferecem latência de milissegundos e alto desempenho de throughput e são projetados para oferecer 99,9% de disponibilidade e 99,999999999% de durabilidade.

## Comportamento de nivelamento automático com o S3 Intelligent-Tiering
<a name="tables-intelligent-tiering-auto-tiering-behavior"></a>

As seguintes ações constituem um acesso que automaticamente move os arquivos do nível Infrequent Access ou Archive Instant Access de volta para o nível Frequent Access:
+ Qualquer operação de leitura ou gravação em dados de tabela ou arquivos de metadados usando ações `GetObject`, `PutObject` ou `CompleteMultipartUpload`.
+ Ações `LoadTable` ou `UpdateTable` que usam [operações da API REST do Iceberg](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-tables-integrating-open-source.html#endpoint-supported-api).
+ Operações de replicação de tabelas do S3

Outras ações não constituem um acesso que automaticamente mova os arquivos do nível Infrequent Access ou Archive Instant Access de volta para o nível Frequent Access.

**nota**  
Arquivos abaixo de 128 KB não são elegíveis para nivelamento automático e permanecem no nível Frequent Access. A compactação pode combinar esses arquivos em um número menor de objetos maiores e enviá-los de volta à tabela como um novo snapshot. Os arquivos recém-compactados se tornarão elegíveis para nivelamento automático se o novo arquivo tiver 128 KB ou mais.

### Comportamento de manutenção de tabelas
<a name="tables-intelligent-tiering-table-maintenance"></a>

As operações automáticas de manutenção de tabelas realizadas pelo Amazon S3, como gerenciamento de snapshots, remoção de arquivos sem referência e expiração de registros, continuam sendo executadas em suas tabelas, independentemente do nível. A compactação é executada somente em arquivos no nível Frequent Access, otimizando o desempenho dos dados acessados com frequência e reduzindo os custos de manutenção dos dados em níveis de menor custo.

As operações de manutenção não afetam o nível de acesso dos arquivos em sua tabela. As leituras realizadas pelas operações de manutenção não fazem com que os arquivos mudem de nível. No entanto, se uma operação de manutenção, como compactação ou expiração de registro, gravar um novo arquivo, esse arquivo será criado no nível Frequent Access.

**nota**  
Como a compactação processa somente arquivos no nível Frequent Access, as operações de exclusão em dados em níveis de menor custo criam arquivos de exclusão que não são compactados automaticamente. Esses arquivos excluídos se tornam elegíveis para compactação quando os arquivos de dados associados são acessados e voltam para o nível Frequent Access. No caso de tabelas que não são acessadas com frequência, é possível executar manualmente a compactação usando o Amazon EMR para compactar esses arquivos excluídos com os respectivos arquivos de dados. Para ter mais informações, consulte [Manutenção de tabelas usando compactação](https://docs.aws.amazon.com//prescriptive-guidance/latest/apache-iceberg-on-aws/best-practices-compaction.html#compaction-emr-glue). É possível monitorar o aumento do tamanho dos arquivos em sua tabela usando métricas do Amazon CloudWatch para determinar quando a compactação manual pode ser útil.

## Especificar o S3 Intelligent-Tiering como classe de armazenamento
<a name="tables-intelligent-tiering-specifying-storage-class"></a>

Por padrão, todas as tabelas são criadas na classe de armazenamento S3 Standard e não podem ser movidas para o S3 Intelligent-Tiering. Para usar o S3 Intelligent-Tiering, é necessário especificá-lo ao criar uma tabela. Também é possível definir o S3 Intelligent-Tiering como classe de armazenamento padrão do bucket de tabela para armazenar automaticamente todas as novas tabelas criadas lá na classe de armazenamento S3 Intelligent-Tiering.

### Especificar o S3 Intelligent-Tiering para buckets de tabela
<a name="tables-intelligent-tiering-table-buckets"></a>

É possível especificar o S3 Intelligent-Tiering como a classe de armazenamento padrão ao criar um bucket de tabela usando o cabeçalho `storage-class-configuration` com a operação `CreateTableBucket`.

Para verificar a classe de armazenamento padrão em um bucket de tabela existente, use a operação `GetTableBucketStorageClass`. Para modificar a classe de armazenamento padrão de um bucket de tabela existente, use a operação `PutTableBucketStorageClass`.

**nota**  
Ao modificar a classe de armazenamento padrão em um bucket de tabela, essa configuração se aplica somente às novas tabelas criadas nesse bucket. A classe de armazenamento de tabelas preexistentes não é alterada.

### Especificar o S3 Intelligent-Tiering para tabelas
<a name="tables-intelligent-tiering-tables"></a>

É possível especificar o S3 Intelligent-Tiering como a classe de armazenamento ao criar uma tabela usando o cabeçalho `storage-class-configuration` com a operação `CreateTable`.

Se você não especificar uma classe de armazenamento ao criar a tabela, a tabela será criada na classe de armazenamento padrão configurada no bucket de tabela naquele momento. Depois que a tabela é criada, não é possível mais modificar a respectiva classe de armazenamento.

Para verificar a classe de armazenamento padrão em um bucket de tabela existente, use a operação `GetTableBucketStorageClass`.

## Monitorar o uso do armazenamento
<a name="tables-intelligent-tiering-monitoring-storage"></a>

É possível visualizar o detalhamento do uso do armazenamento por nível de acesso nos Relatórios de Custos e Uso da AWS da sua conta. Para ter mais informações, consulte [Criar relatórios de custos e uso](https://docs.aws.amazon.com//cur/latest/userguide/creating-cur.html) no *Guia do usuário de exportações de dados da AWS*.

Os seguintes tipos de uso estão disponíveis nos relatórios de faturamento:


| Tipo de uso | Unidade | Granularity | Descrição | 
| --- | --- | --- | --- | 
| region-Tables-TimedStorage-INT-FA-ByteHrs | GB por mês | Por dia | O número de GB-meses em que os dados ficaram armazenados no S3 Intelligent-Tiering Frequent Access do armazenamento S3 Intelligent-Tiering. | 
| region-Tables-TimedStorage-INT-IA-ByteHrs | GB por mês | Por dia | O número de GB-meses em que os dados ficaram armazenados no S3 Intelligent-Tiering Infrequent Access do armazenamento S3 Intelligent-Tiering. | 
| region-Tables-TimedStorage-INT-AIA-ByteHrs | GB por mês | Por dia | O número de GB-meses em que os dados ficaram armazenados no S3 Intelligent-Tiering Archive Instant Access do armazenamento S3 Intelligent-Tiering | 
| region-Tables-Requests-INT-Tier1 | Contagem | Por hora | O número de solicitações PUT, COPY ou POST em objetos do S3 Intelligent-Tiering de tabelas do S3. | 
| region-Tables-Requests-INT-Tier2 | Contagem | Por hora | O número de solicitações GET e todas as outras solicitações que não são do nível 1 para objetos do S3 Intelligent-Tiering de tabelas do S3. | 

# Namespaces de tabela
<a name="s3-tables-namespace"></a>

Ao criar tabelas em um bucket de tabela do Amazon S3, elas são organizadas em agrupamentos lógicos chamados *namespaces*. Ao contrário das tabelas e dos buckets de tabela do S3, os namespaces não são recursos. Namespaces são constructos que ajudam a organizar e gerenciar tabelas de forma escalável. Por exemplo, todas as tabelas pertencentes ao departamento de recursos humanos de uma empresa podem ser agrupadas em um valor de namespace comum de `hr`.

Para controlar o acesso a namespaces específicos, é possível usar políticas de recursos de buckets de tabela. Para obter mais informações, consulte [Políticas baseadas em recurso para a funcionalidade Tabelas do S3](s3-tables-resource-based-policies.md).

As seguintes regras se aplicam a namespaces de tabela:
+ Cada namespace deve ser único em um bucket de tabela.
+ É possível criar até 10.000 namespaces por bucket de tabela.
+ Cada nome de tabela deve ser único em um namespace.
+ Cada tabela só pode ter um nível de namespaces. Os namespaces não podem ser aninhados.
+ Cada tabela pertence a um único namespace.
+ Você pode mover as tabelas entre namespaces.

Os namespaces de tabela são chamados de bancos de dados em vários mecanismos de consulta e serviços da AWS. A tabela a seguir associa a terminologia usada para namespaces de tabela do S3 a alguns mecanismos e serviços comuns.


| **Serviço ou mecanismo** | **Terminologia** | 
| --- | --- | 
| AWS Lake Formation | Banco de dados | 
| AWS Glue Data Catalog | Banco de dados | 
| Athena | Banco de dados | 
| Spark | Namespace | 

**Topics**
+ [

# Criar namespaces
](s3-tables-namespace-create.md)
+ [

# Excluir um namespace
](s3-tables-namespace-delete.md)

# Criar namespaces
<a name="s3-tables-namespace-create"></a>

Um namespace de tabela é um constructo lógico que serve para agrupar tabelas em um bucket de tabela do Amazon S3. Cada tabela pertence a um único namespace. Antes de criar uma tabela em um bucket de tabela, é necessário criar um namespace para agrupá-las. É possível criar um namespace usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3, os SDKs da AWS ou mecanismos de consulta integrados.

**Nomes do namespace**

As seguintes regras de nomenclatura se aplicam aos namespaces:
+ Os nomes devem ter entre 1 e 255 caracteres.
+ Os nomes só podem consistir em letras minúsculas, números e sublinhados (`_`). Sublinhados não são permitidos no início ou no final dos nomes de namespace.
+ Os nomes devem começar e terminar com uma letra ou um número.
+ Os nomes não devem conter hifens (`-`) nem pontos (`.`).
+ Um namespace deve ser único dentro de um bucket de tabela.
+ Os nomes de namespaces não devem começar com o prefixo reservado `aws`.

Consulte mais informações sobre nomes válidos de namespace em [Regras de nomenclatura para tabelas e namespaces](s3-tables-buckets-naming.md#naming-rules-table).

## Usar o console do S3 e o Amazon Athena
<a name="create-namespace-console"></a>

O procedimento a seguir usa o fluxo de trabalho **Criar tabela com o Athena** para criar um namespace no console do Amazon S3. Se não quiser usar o Amazon Athena também para criar uma tabela no namespace, você poderá cancelar o fluxo de trabalho depois de criar o namespace. 

**Para criar um namespace**

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 no qual você deseja criar um namespace.

1. Na página de detalhes do bucket, escolha **Criar tabela com o Athena**. 

1. Na caixa de diálogo **Criar tabela com o Athena**, escolha **Criar um namespace** e, depois, **Criar namespace**.

1. Insira um nome no campo **Nome do namespace**. Os nomes de namespace devem ter de 1 a 255 caracteres e ser exclusivos no bucket de tabela. Os caracteres válidos são a–z, 0–9 e sublinhado (`_`). Sublinhados não são permitidos no início ou no final dos nomes de namespace.

1. Escolha **Create namespace (Criar namespace)**.

1. Se você também quiser criar uma tabela, escolha **Criar tabela com o Athena**. Consulte mais informações sobre como criar uma tabela com o Athena em [Usar o console do S3 e o Amazon Athena](s3-tables-create.md#create-table-console). Se não quiser criar uma tabela no momento, escolha **Cancelar**.

## Como usar o AWS CLI
<a name="create-table-namespace-CLI"></a>

Esse exemplo mostra como criar um namespace de tabelas usando a AWS CLI. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables create-namespace \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \ 
    --namespace example_namespace
```

## Usando um mecanismo de consulta
<a name="create-table-namespace-engine"></a>

Você pode criar um namespace em uma sessão do Apache Spark conectada aos buckets de tabela do Amazon S3.

Esse exemplo mostra como criar uma tabela usando instruções `CREATE` em um mecanismo de consulta integrado à funcionalidade Tabelas do S3. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
spark.sql("CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.my_namespace")
```

# Excluir um namespace
<a name="s3-tables-namespace-delete"></a>

Antes de excluir um namespace de tabela de um bucket de tabela do Amazon S3, é necessário excluir todas as tabelas dentro do namespace ou movê-las para outro namespace. É possível excluir um namespace usando a API REST do Amazon S3, os SDKs da AWS, a AWS Command Line Interface (AWS CLI) ou mecanismos de consulta integrados. 

Consulte mais informações sobre as permissões necessárias para excluir um namespace em [https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteNamespace.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteNamespace.html) na *Referência de API do Amazon Simple Storage Service*.

## Como usar o AWS CLI
<a name="delete-table-namespace-CLI"></a>

Esse exemplo mostra como excluir um namespace de tabelas usando a AWS CLI. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables delete-namespace \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \
    --namespace example_namespace
```

# Tabelas em buckets de tabela do S3
<a name="s3-tables-tables"></a>

Uma tabela do S3 representa um conjunto de dados estruturado que consiste nos dados da tabela subjacente e nos metadados relacionados. Esses dados são armazenados em um bucket de tabela como um sub-recurso. Todas as tabelas em um bucket de tabela são armazenadas no formato de tabela [Apache Iceberg](https://iceberg.apache.org/docs/latest/). O Amazon S3 gerencia a manutenção das tabelas por meio da compactação automática de arquivos e do gerenciamento de snapshots. Para obter mais informações, consulte [Manutenção de tabelas](s3-tables-maintenance.md).

Para tornar as tabelas em uma conta acessíveis pelos serviços de analytics da AWS, integre os buckets de tabela do Amazon S3 ao Amazon SageMaker Lakehouse. Essa integração permite que serviços de analytics da AWS, como o Amazon Athena e o Amazon Redshift, descubram e acessem dados de tabela automaticamente. 

Quando você cria uma tabela, o Amazon S3 gera automaticamente um local de warehouse para ela. Trata-se de um local exclusivo do S3 que armazena os objetos associados à tabela. O seguinte exemplo mostra o formato de um local de warehouse: 

```
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
```

Em um bucket de tabela, você pode organizar as tabelas em agrupamentos lógicos chamados namespaces. Para obter mais informações, consulte [Namespaces de tabela](s3-tables-namespace.md).

Você pode renomear as tabelas, mas cada tabela tem um nome do recurso da Amazon (ARN) exclusivo e um ID de tabela exclusivo. Cada tabela também tem uma política de recursos anexada a ela. Você pode usar essa política para gerenciar o acesso à tabela.

Os ARNs das tabelas usam o seguinte formato:

```
arn:aws:s3tables:region:owner-account-id:bucket/bucket-name/table/table-id
```

Por padrão, você pode criar até 10.000 tabelas em um bucket de tabela. Para solicitar um aumento da cota de tabelas e de buckets de tabela, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). 

O Amazon S3 oferece suporte aos seguintes tipos de tabelas em buckets de tabela:

**Tabelas de clientes**  
As tabelas de cliente são tabelas em que você pode ler e gravar. Você pode recuperar dados dessas tabelas usando mecanismos de consulta integrados. Também pode inserir, atualizar ou excluir dados delas usando operações de API do S3 ou mecanismos de consulta integrados. 

**Tabelas da AWS**  
As tabelas da AWS são tabelas somente leitura que são geradas por um AWS service (Serviço da AWS) em seu nome. Essas tabelas são gerenciadas pelo Amazon S3 e não podem ser modificadas por nenhuma entidade principal do IAM fora do próprio Amazon S3. Você pode recuperar informações dessas tabelas, mas não pode modificar os dados nelas. As tabelas da AWS incluem tabelas do S3 Metadata, que contêm metadados capturados dos objetos em um bucket de uso geral do S3. Para obter mais informações, consulte [Descobrir seus dados com tabelas do S3 Metadata](metadata-tables-overview.md).

**Topics**
+ [

# Criar uma tabela do Amazon S3
](s3-tables-create.md)
+ [

# Excluir uma tabela do Amazon S3
](s3-tables-delete.md)
+ [

# Visualizar detalhes sobre uma tabela do Amazon S3
](s3-tables-table-details.md)
+ [

# Gerenciar políticas de tabela
](s3-tables-table-policy.md)
+ [

# Usar tags com tabelas do S3
](table-tagging.md)

# Criar uma tabela do Amazon S3
<a name="s3-tables-create"></a>

Uma tabela do Amazon S3 é um sub-recurso de um bucket de tabela. As tabelas são armazenadas no formato Apache Iceberg para que você possa trabalhar com elas usando mecanismos de consulta e outras aplicações compatíveis com o Apache Iceberg. O Amazon S3 otimiza continuamente as tabelas para ajudar a reduzir os custos de armazenamento e melhorar a performance das consultas de analytics.

Quando você cria uma tabela, o Amazon S3 gera automaticamente um *local de warehouse* para ela. Um local de warehouse é um local exclusivo do S3 onde é possível ler e gravar objetos associados à tabela. O seguinte exemplo mostra o formato de um local de warehouse:

```
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
```

As tabelas têm o seguinte formato de nome do recurso da Amazon (ARN):

```
arn:aws:s3tables:region:owner-account-id:bucket/bucket-name/table/table-id
```

Por padrão, você pode criar até 10.000 tabelas em um bucket de tabela. Para solicitar um aumento da cota de tabelas e de buckets de tabela, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase).

É possível criar uma tabela usando o console do Amazon S3, a API REST do Amazon S3, os SDKs da AWS, a AWS Command Line Interface (AWS CLI) ou mecanismos de consulta conectados com os buckets de tabela.

Ao criar uma tabela, você pode especificar as respectivas configurações de criptografia, a menos que esteja criando a tabela com o Athena. Se você não especificar as configurações de criptografia, a tabela será criptografada com as configurações padrão do bucket de tabela. Para obter mais informações, consulte [Especificar criptografia para tabelas](s3-tables-kms-specify.md#specify-kms-table).

**Pré-requisitos para a criação de tabelas**

Para criar uma tabela, primeiro é necessário fazer o seguinte: 
+ [Criar um bucket de tabela](s3-tables-buckets-create.md).
+ [Crie um namespace ](s3-tables-namespace-create.md) no bucket de tabela.
+ Você deve ter permissões do AWS Identity and Access Management (IAM) para `s3tables:CreateTable` e `s3tables:PutTableData`.
+ 
**nota**  
Se você estiver usando a criptografia SSE-KMS para a tabela, precisará de permissões para `s3tables:PutTableEncryption` e da permissão `DescribeKey` na chave do AWS KMS escolhida. Além disso, a chave AWS KMS que você usa precisa conceder permissão à funcionalidade Tabelas do S3 para que realize a manutenção automática de tabelas. Para obter mais informações, consulte [Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3](s3-tables-kms-permissions.md).

Consulte mais informações sobre nomes válidos de tabela em [Regras de nomenclatura para tabelas e namespaces](s3-tables-buckets-naming.md#naming-rules-table).

**Importante**  
Ao criar tabelas, use apenas letras minúsculas nos nomes e nas definições das tabelas. Por exemplo, os nomes das colunas devem estar todos em minúsculas. Se o nome da tabela ou a definição da tabela contiver letras maiúsculas, a tabela não será compatível com o AWS Lake Formation ou o AWS Glue Data Catalog. Nesse caso, a tabela não estará visível para serviços de analytics da AWS, como o Amazon Athena, mesmo que os buckets de tabela estejam integrados aos serviços de analytics da AWS.   
Se a definição da tabela contiver letras maiúsculas, você receberá a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”.

## Usar o console do S3 e o Amazon Athena
<a name="create-table-console"></a>

O procedimento a seguir usa o console do Amazon S3 para criar uma tabela com o Amazon Athena. Se ainda não criou um namespace no bucket de tabela, você pode fazer isso como parte desse processo. Antes de realizar as etapas a seguir, integre os buckets de tabela aos serviços de analytics da AWS nessa região. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

**nota**  
Quando você cria uma tabela usando o Athena, ela herda as configurações de criptografia padrão do bucket de tabela. Se você quiser usar um tipo de criptografia diferente, precisará criar a tabela usando outro método.

**Para criar uma tabela do**

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 no qual você deseja criar uma tabela.

1. Na página de detalhes do bucket, escolha **Criar tabela com o Athena**. 

1. Na caixa de diálogo **Criar tabela com o Athena**, execute um destes procedimentos:
   + Crie um namespace. Escolha **Criar um namespace** e insira um nome no campo **Nome do namespace**. Os nomes de namespace devem ter de 1 a 255 caracteres e ser exclusivos no bucket de tabela. Os caracteres válidos são a–z, 0–9 e sublinhado (`_`). Sublinhados não são permitidos no início dos nomes de namespace. 
   + Escolha **Create namespace (Criar namespace)**.
   + Especifique um namespace existente. Escolha **Especificar um namespace existente neste bucket de tabela**. Depois, selecione **Escolher entre namespaces existentes** ou **Inserir um nome de namespace existente**. Se você tiver mais de mil namespaces no bucket e ele não aparecer na lista, será necessário inserir o nome do namespace. 

1. Escolha **Criar tabela com o Athena**.

1. O console do Amazon Athena é aberto e o editor de consultas do Athena aparece. O campo **Catálogo** deve ser preenchido com **s3tablescatalog/** seguido do nome do bucket de tabela; por exemplo, **s3tablescatalog/*amzn-s3-demo-bucket***. O campo **Banco de dados** deve ser preenchido com o namespace que você criou ou selecionou anteriormente. 
**nota**  
Caso não veja esses valores nos campos **Catálogo** e **Banco de dados**, verifique se você integrou os buckets de tabela aos serviços de analytics da AWS nessa região. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md). 

1. O editor de consultas é preenchido com uma consulta de exemplo que você pode usar para criar uma tabela. Modifique a consulta para especificar o nome da tabela e as colunas que você deseja que a tabela tenha. 

1. Quando terminar de modificar a consulta, escolha **Executar** para criar a tabela. 
**nota**  
Se você receber o erro “Insufficient permissions to execute the query. Principal does not have any privilege on specified resource” ao tentar executar uma consulta no Athena, você deverá receber as permissões necessárias do Lake Formation na tabela. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](grant-permissions-tables.md#grant-lf-table). 
Se você receber o erro “Iceberg cannot access the requested resource” ao tentar executar uma consulta no Athena, acesse o console do AWS Lake Formation e verifique se você se autoconcedeu permissões no catálogo do bucket de tabela e no banco de dados (namespace) que criou. Não especifique uma tabela ao conceder essas permissões. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](grant-permissions-tables.md#grant-lf-table). 
Se você receber a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena, isso significa que o nome da tabela ou os nomes de coluna na definição da tabela contêm letras maiúsculas: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”. Os nomes de tabela e de coluna devem estar todos em minúsculas. 

Se a criação da tabela tiver sido bem-sucedida, o nome da nova tabela aparecerá na lista de tabelas do Athena. Ao voltar para o console do Amazon S3, a nova tabela aparecerá na lista **Tabelas** na página de detalhes do bucket de tabela depois que você atualizar a lista. 

## Como usar o AWS CLI
<a name="create-table-CLI"></a>

Este exemplo mostra como criar uma tabela com um esquema usando a AWS CLI e especificando os metadados da tabela com JSON. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables create-table --cli-input-json file://mytabledefinition.json
```

Para o arquivo `mytabledefinition.json`, use o exemplo de definição de tabela a seguir. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações. 

```
{
    "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket",
    "namespace": "your_namespace",
    "name": "example_table",
    "format": "ICEBERG",
    "metadata": {
        "iceberg": {
            "schema": {
                "fields": [
                     {"name": "id", "type": "int","required": true},
                     {"name": "name", "type": "string"},
                     {"name": "value", "type": "int"}
                ]
            }
        }
    }
}
```

## Usando um mecanismo de consulta
<a name="create-table-engine"></a>

É possível criar uma tabela em um mecanismo de consulta compatível conectado aos buckets de tabela, como em uma sessão do Apache Spark no Amazon EMR.

O exemplo a seguir mostra como criar uma tabela com o Spark usando instruções `CREATE` e adicionar dados à tabela usando instruções `INSERT` ou lendo dados de um arquivo existente. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
spark.sql( 
" CREATE TABLE IF NOT EXISTS s3tablesbucket.example_namespace.`example_table` ( 
    id INT, 
    name STRING, 
    value INT 
) 
USING iceberg "
)
```

Depois de criar a tabela, você pode carregar dados nela. Escolha entre os seguintes métodos:
+ Adicione dados à tabela usando a instrução `INSERT`.

  ```
  spark.sql(
  """
      INSERT INTO s3tablesbucket.my_namespace.my_table 
      VALUES 
          (1, 'ABC', 100), 
          (2, 'XYZ', 200)
  """)
  ```
+ Carregue um arquivo de dados existente.

  1. Leia os dados no Spark:

     ```
     val data_file_location = "Path such as S3 URI to data file"
     val data_file = spark.read.parquet(data_file_location)
     ```

  1. Grave os dados em uma tabela do Iceberg:

     ```
     data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()
     ```

# Excluir uma tabela do Amazon S3
<a name="s3-tables-delete"></a>

Você pode excluir uma tabela usando a API REST do Amazon S3, SDKs da AWS, a AWS Command Line Interface (AWS CLI) ou mecanismos de consulta integrados.

**nota**  
A funcionalidade Tabelas do S3 não é compatível com a operação `DROP TABLE` com `purge=false`. Algumas versões do Apache Spark sempre definem esse sinalizador como `false`, mesmo ao executar comandos `DROP TABLE PURGE`. Para excluir uma tabela, você pode tentar usar `DROP TABLE` novamente com `purge=true` ou usar a operação de API REST [https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html) da funcionalidade Tabelas do S3.

**Importante**  
 Ao excluir uma tabela, você precisa saber o seguinte:  
A exclusão de uma tabela é permanente e não pode ser desfeita. Antes de excluir uma tabela, verifique se você fez backup ou replicou todos os dados importantes.
Todos os dados e configurações associados à tabela são perdidos definitivamente.

## Como usar o AWS CLI
<a name="delete-table-CLI"></a>

Esse exemplo mostra como excluir uma tabela usando a AWS CLI. Para usar esse comando, substitua os `user input placeholders` por suas informações.

```
aws s3tables delete-table \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
    --namespace example_namespace --name example_table
```

## Usando um mecanismo de consulta
<a name="create-table-namespace-engine"></a>

Você pode excluir uma tabela em uma sessão do Apache Spark conectada aos buckets de tabela do Amazon S3.

Esse exemplo mostra como excluir uma tabela usando o comando `DROP TABLE PURGE`. Para usar o comando, substitua os `user input placeholders` por suas próprias informações.

```
spark.sql( 
" DROP TABLE [IF EXISTS] s3tablesbucket.example_namespace.example_table PURGE")
```

# Visualizar detalhes sobre uma tabela do Amazon S3
<a name="s3-tables-table-details"></a>

Você pode visualizar detalhes gerais de uma tabela em um bucket de tabela, como detalhes de criação, formato e tipo, no console ou programaticamente. É possível visualizar programaticamente as configurações de criptografia de tabelas e as configurações de manutenção usando a API REST do serviço Tabelas do S3, a AWS CLI ou SDKs da AWS.

## Visualizar detalhes de uma tabela
<a name="table-details-view"></a>

### Como usar o AWS CLI
<a name="table-details-CLI"></a>

Este exemplo mostra como obter detalhes sobre uma tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket --namespace my-namespace --name my-table
```

### Usar o console do S3
<a name="table-details-console"></a>

1. 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. Selecione seu bucket de tabela e escolha sua tabela.

1. Escolha a guia **Propriedades**.

1. (Opcional) Para ter informações sobre a política de permissões anexada à tabela, selecione **Permissões**.

## Pré-visualizar dados da tabela
<a name="table-preview-data"></a>

### Usar o console do S3
<a name="table-preview-data-console"></a>

É possível pré-visualizar os dados da tabela diretamente pelo console do Amazon S3 usando o procedimento a seguir.

1. 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 contém a tabela que você deseja consultar.

1. Selecione a tabela que você deseja pré-visualizar e escolha **Prévia**.

**nota**  
A prévia mostra as primeiras 10 linhas e até 25 colunas da tabela. Tabelas com mais de 50 MB não podem ser pré-visualizadas.

## Detalhes de criptografia
<a name="table-encryption-view"></a>

Para ter mais informações sobre criptografia de buckets de tabela, consulte [Usar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de tabela](s3-tables-kms-encryption.md).

### Como usar o AWS CLI
<a name="table-encryption-view-CLI"></a>

Este exemplo mostra como obter detalhes sobre configurações de criptografia de uma tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table-encryption --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket --namespace my-namespace --name my-table
```

## Detalhes de manutenção
<a name="table-maintenance-view"></a>

Para ter mais informações sobre configurações de manutenção, consulte [Manutenção para buckets de tabela](s3-table-buckets-maintenance.md). 

### Como usar o AWS CLI
<a name="table-maintenance-view-CLI"></a>

Este exemplo mostra como obter os detalhes sobre a configuração de manutenção de uma tabela usando a AWS CLI. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-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
```

# Gerenciar políticas de tabela
<a name="s3-tables-table-policy"></a>

Você pode adicionar, excluir, atualizar e visualizar políticas para tabelas usando o console do Amazon S3, a API REST do Amazon S3, o SDK da AWS e a AWS CLI. Para obter mais informações, consulte os tópicos a seguir. Para ter mais informações sobre as chaves de condição e ações do AWS Identity and Access Management (IAM) compatíveis com a funcionalidade Tabelas do Amazon S3, consulte [Gerenciamento de acesso para a funcionalidade Tabelas do S3](s3-tables-setting-up.md). Para conferir exemplos de políticas de tabela, consulte [Políticas baseadas em recurso para a funcionalidade Tabelas do S3](s3-tables-resource-based-policies.md).

## Adicionar uma política de tabela
<a name="table-policy-add"></a>

Para adicionar uma política de tabela a uma tabela, você pode usar a API REST do Amazon S3, o AWS SDK e a AWS CLI. 

### Como usar o AWS CLI
<a name="table-policy-get-CLI"></a>

Esse exemplo mostra como visualizar a política que está anexada a uma tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table-policy \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1/table/tableID \
    --namespace my-namespace \
    --name my-table
```

### Usar o console do S3
<a name="table-policy-add-console"></a>

1. 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 **Amazon S3**.

1. Escolha **Buckets de tabela**, selecione o nome do bucket de tabela que contém sua tabela e, em seguida, escolha sua tabela nesse bucket.

1. Escolha a aba **Permissões**.

1. Em **Política de tabela**, escolha **Editar**.

1. No editor de políticas, insira a política JSON. 

1. (Opcional) Escolha **Exemplos de política** para ver exemplos de política que você pode adaptar às suas necessidades.

1. Depois de inserir a política, escolha **Salvar alterações**.

## Visualizar uma política de tabela
<a name="table-policy-get"></a>

Para visualizar a política de bucket anexada a uma tabela, você pode usar a API REST do Amazon S3, o AWS SDK e a AWS CLI. 

### Como usar o AWS CLI
<a name="table-policy-get-CLI"></a>

Esse exemplo mostra como visualizar a política que está anexada a uma tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables get-table-policy \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket  \
    --namespace my-namespace \
    --name my-table
```

### Usar o console do S3
<a name="get-policy-table-console"></a>

1. 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 **Amazon S3**.

1. Escolha **Buckets de tabela**, selecione o nome do bucket de tabela que contém sua tabela e, em seguida, escolha sua tabela nesse bucket.

1. Escolha a aba **Permissões**.

## Excluir uma política de tabela
<a name="table-policy-delete"></a>

Para excluir uma política que está anexada a uma tabela, você pode usar a API REST do Amazon S3, o SDK da AWS e a AWS CLI. 

### Como usar o AWS CLI
<a name="table-policy-delete-CLI"></a>

Esse exemplo mostra como excluir uma política de tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables delete-table-policy \
    --table-ARN arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
    --namespace your-namespace \
    --name your-table
```

### Usar o console do S3
<a name="table-policy-delete-console"></a>

1. 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 **Amazon S3**.

1. Escolha **Buckets de tabela**, selecione o nome do bucket de tabela que contém sua tabela e, em seguida, escolha sua tabela nesse bucket.

1. Escolha a aba **Permissões**.

1. Em **Política de bucket de tabela**, escolha **Excluir**.

# Usar tags com tabelas do S3
<a name="table-tagging"></a>

Uma tag da AWS é um par de chave-valor que contém metadados sobre recursos, neste caso tabelas do Amazon S3. É possível marcar tabelas do S3 ao criá-las ou gerenciar tags em nas tabelas existentes. Para ter informações gerais sobre tags, consulte [Atribuir tags para alocação de custos ou controle de acesso por atributo (ABAC)](tagging.md).

**nota**  
Não há cobrança adicional para usar tags em tabelas além das taxas de solicitação padrão da API do S3. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

## Maneiras comuns de usar tags com tabelas
<a name="common-ways-to-use-tags-table"></a>

Use tags em tabelas do S3 para:

1. **Alocação de custos**: acompanhe os custos de armazenamento por tag de tabela no Gerenciamento de Faturamento e Custos da AWS. Para ter mais informações, consulte [Usar tags para alocação de custos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-cost-allocation).

1. **Controle de acesso por atributo (ABAC)**: amplie as permissões de acesso e conceda acesso às tabelas do S3 com base nas respectivas tags. Para ter mais informações, consulte [Using tags for ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac).

**nota**  
Você pode usar as mesmas tags para alocação de custos e controle de acesso.

### ABAC para tabelas do S3
<a name="abac-for-tables"></a>

As tabelas do Amazon S3 permitem o controle de acesso por atributo (ABAC) por meio de tags. Use chaves de condição baseadas em tags em políticas de tabela do S3, de suas organizações na AWS e do AWS Identity and Access Management (IAM). O ABAC no Amazon S3 permite a autorização em várias contas da AWS. 

Nas suas políticas do IAM, você pode controlar o acesso às tabelas do S3 com base nas tags da tabela usando a chave de condição `s3tables:TableBucketTag/tag-key` ou as [chaves de condição globais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` ou `aws:TagKeys`. 

#### aws:ResourceTag/key-name
<a name="table-condition-key-resource-tag"></a>

Use essa chave de condição para comparar o par chave-valor da tag especificada na política com o par de chave-valor anexado ao recurso. Por exemplo, é possível exigir que o acesso a uma tabela seja permitido somente se a tabela tiver a chave de tag `Department` com o valor `Marketing`.

Essa chave de condição se aplica às ações de tabela realizadas por meio do console do Amazon S3, da AWS Command Line Interface (CLI), das APIs do S3 ou dos SDKs da AWS.

Para visualizar um exemplo de política, consulte [1.1 Política de tabela para restringir operações na tabela por meio de tags](#example-policy-table-resource-tag).

Para ter mais informações, consulte [Controlar o acesso a recursos da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources) no *Guia do usuário do AWS Identity and Access Management*.

**nota**  
Para ações realizadas em tabelas, essa chave de condição atua nas tags aplicadas à tabela e não nas tags aplicadas ao bucket de tabela que contém a tabela. Em vez disso, use a `s3tables:TableBucketTag/tag-key` se quiser que suas políticas de ABAC atuem nas tags do bucket de tabela ao realizar ações de tabela. 

#### aws:RequestTag/key-name
<a name="table-condition-key-request-tag"></a>

Use essa chave de condição para comparar o par de chave-valor da tag que foi transmitido na solicitação com o par de tags especificado na política. Por exemplo, é possível verificar se a solicitação para marcar uma tabela inclui a chave de tag `Department` e se ela tem o valor `Accounting`. 

Essa chave de condição se aplica quando as chaves de tag são transmitidas em uma solicitação de operação de API `TagResource` ou `CreateTable` ou ao marcar ou criar uma tabela com tags usando o console do Amazon S3, a AWS Command Line Interface (CLI) ou os SDKs da AWS. 

Para visualizar um exemplo de política, consulte [1.2 Política do IAM para criar ou modificar tabelas com tags específicas](#example-policy-table-request-tag).

Para ver exemplos adicionais de política e ter mais informações, consulte [Controlar o acesso durante solicitações da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests) no *Guia do usuário do AWS Identity and Access Management*.

#### aws:TagKeys
<a name="table-condition-key-tag-keys"></a>

Use essa chave de condição para comparar as chaves de tag em uma solicitação com as chaves especificadas na política para definir quais chaves de tag são permitidas para acesso. Por exemplo, para permitir a marcação durante a ação `CreateTable`, é necessário criar uma política que permita as ações `s3tables:CreateTable` e `s3tables:TagResource`. Em seguida, é possível usar a chave de condição `aws:TagKeys` para impor o uso somente de tags específicas na solicitação `CreateTable`. 

Essa chave de condição se aplica quando as chaves de tag são transmitidas em uma solicitação de operação de API `TagResource`, `UntagResource` ou `CreateTable` ou ao marcar, desmarcar ou criar uma tabela com tags usando a AWS Command Line Interface (CLI) ou os SDKs da AWS. 

Para visualizar um exemplo de política, consulte [1.3 Política do IAM para controlar a modificação de tags em recursos existentes, mantendo a governança de marcação](#example-policy-table-tag-keys).

Para ter mais informações e ver outros exemplos de política, consulte [Controlar o acesso com base em chaves de tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys), no *Guia do usuário do AWS Identity and Access Management*.

#### s3tables:TableBucketTag/tag-key
<a name="table-bucket-tag-condition-key"></a>

Use essa chave de condição para conceder permissões a dados específicos em buckets de tabela por meio de tags. Essa chave de condição atua, na maior parte das vezes, nas tags atribuídas ao bucket de tabela para todas as ações de tabela do S3. Mesmo quando você cria uma tabela com tags, essa chave de condição atua nas tags aplicadas ao bucket de tabela que contém essa tabela. As exceções são: 
+ Quando você cria um bucket de tabela com tags, essa chave de condição atua nas tags na solicitação.

Para visualizar um exemplo de política, consulte [1.4 Usar a chave de condição s3tables:TableBucketTag](#example-policy-table-bucket-tag-tables).

#### Exemplos de política de ABAC para tabelas
<a name="example-table-abac-policies"></a>

Veja os exemplos de política de ABAC a seguir para tabelas do Amazon S3.

**nota**  
Se você tiver uma política baseada em recursos do IAM ou da funcionalidade Tabelas do S3 que restrinja usuários do IAM e perfis do IAM com base em tags de entidade principal, será necessário anexar as mesmas tags de entidade principal ao perfil do IAM que o Lake Formation usa para acessar dados do Amazon S3 (por exemplo, LakeFormationDataAccessRole) e conceder a esse perfil as devidas permissões. Isso é necessário para que a política de controle de acesso baseada em tags funcione corretamente com integração de analytics da funcionalidade Tabelas do S3. 

##### 1.1 Política de tabela para restringir operações na tabela por meio de tags
<a name="example-policy-table-resource-tag"></a>

Nessa política de bucket, as entidades principais especificadas do IAM (usuários e perfis) poderão executar a ação `GetTable` somente se o valor da tag `project` da tabela corresponder ao valor da tag `project` da entidade principal.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGetTable",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3tables:GetTable",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/my_example_tab;e",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

##### 1.2 Política do IAM para criar ou modificar tabelas com tags específicas
<a name="example-policy-table-request-tag"></a>

Nessa política do IAM, usuários ou perfis com essa política só poderão criar tabelas do S3 se marcarem a tabela com a chave de tag `project` e o valor de tag `Trinity` na solicitação de criação da tabela. Eles também podem adicionar ou modificar tags em tabelas existentes do S3, desde que a solicitação `TagResource` inclua o par de chave-valor de tag `project:Trinity`. Essa política não concede permissões de leitura, gravação ou exclusão nas tabelas ou nos respectivos objetos. 

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateTableWithTags",
      "Effect": "Allow",
      "Action": [
        "s3tables:CreateTable",
        "s3tables:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

##### 1.3 Política do IAM para controlar a modificação de tags em recursos existentes, mantendo a governança de marcação
<a name="example-policy-table-tag-keys"></a>

Nessa política do IAM, as entidades principais do IAM (usuários e perfis) poderão modificar tags em uma tabela somente se o valor de tag `project` da tabela corresponder ao valor de tag `project` da entidade principal. Somente as quatro tags (`project`, `environment`, `owner` e `cost-center`) especificadas nas chaves de condição `aws:TagKeys` são permitidas para essas tabelas. Isso ajuda a impor a governança de tags, evita modificações não autorizadas nas tags e mantém o esquema de marcação consistente em todas suas tabelas.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3tables:TagResource",
        "s3tables:UntagResource"
      ],
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/my_example_table",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

##### 1.4 Usar a chave de condição s3tables:TableBucketTag
<a name="example-policy-table-bucket-tag-tables"></a>

Nessa política do IAM, a instrução de condição permitirá acesso aos dados do bucket de tabela somente se o bucket tiver a chave de tag `Environment` e o valor de tag `Production`. A `s3tables:TableBucketTag/<tag-key>` é diferente da chave de condição `aws:ResourceTag/<tag-key>` porque, além de controlar o acesso aos buckets de tabela de acordo com as respectivas tags, ela permite controlar o acesso às tabelas com base nas tags do bucket de tabela principal.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificTables",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*",
      "Condition": {
        "StringEquals": {
          "s3tables:TableBucketTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## Gerenciar tags para tabelas
<a name="table-working-with-tags"></a>

É possível adicionar ou gerenciar tags para tabelas do S3 usando o console do Amazon S3, a AWS Command Line Interface (CLI), os SDKs da AWS ou as APIs [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html), [UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html) e [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html) do S3. Para obter mais informações, consulte:

**Topics**
+ [

## Maneiras comuns de usar tags com tabelas
](#common-ways-to-use-tags-table)
+ [

## Gerenciar tags para tabelas
](#table-working-with-tags)
+ [

# Criar tabelas com tags
](table-create-tag.md)
+ [

# Adicionar uma tag a uma tabela
](table-tag-add.md)
+ [

# Visualizar tags de uma tabela
](table-tag-view.md)
+ [

# Excluir uma tag de uma tabela
](table-tag-delete.md)

# Criar tabelas com tags
<a name="table-create-tag"></a>

É possível marcar tabelas do Amazon S3 ao criá-las. Não há cobrança adicional para usar tags em tabelas além das taxas de solicitação padrão da API do S3. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/). Para ter mais informações sobre marcação de tabelas, consulte [Usar tags com tabelas do S3](table-tagging.md).

## Permissões
<a name="table-create-tag-permissions"></a>

Para criar uma tabela com tags, é necessário ter as seguintes permissões:
+ `s3tables:CreateTable`
+ `s3tables:TagResource`

## Solucionar de problemas de erros
<a name="table-create-tag-troubleshooting"></a>

Se você encontrar um erro ao tentar criar uma tabela com tags, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-create-tag-permissions) necessárias para criar a tabela e aplicar uma tag a ela.
+ Confira sua política de usuário do IAM para ver se existe alguma condição de controle de acesso por atributo (ABAC). Sua política pode exigir que você marque as tabelas somente com chaves e valores de tag específicos. Para ter mais informações sobre ABAC e exemplos de política de ABAC de tabela, consulte [ABAC para tabelas do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/table-tagging.html#abac-for-tables).

## Etapas
<a name="table-create-tag-steps"></a>

É possível criar uma tabela com tags aplicadas usando a AWS Command Line Interface (AWS CLI), a API REST da funcionalidade Tabelas do Amazon S3 e os SDKs da AWS.

## Uso da API REST
<a name="table-create-tag-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST da funcionalidade Tabelas do Amazon S3 para criar uma tabela com tags, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [CreateTable](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_CreateTable.html)

## Como usar o AWS CLI
<a name="table-create-tag-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como criar uma tabela com tags usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

Ao criar uma tabela, é necessário fornecer detalhes de configuração. Para obter mais informações, consulte [Criar uma tabela do Amazon S3](s3-tables-create.md). Também é necessário atribuir um nome à tabela que siga a convenção de nomenclatura de tabelas. Para obter mais informações, consulte [Regras de nomenclatura de buckets de tabela, tabelas e namespaces do Amazon S3](s3-tables-buckets-naming.md). 

**Solicitação:**

```
aws --region us-west-2 \
s3tables create-table \
--endpoint https://ufwae60e2k.execute-api.us-west-2.amazonaws.com/personal/ \
--table-bucket-arn arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket
--tags '{"Department":"Engineering"}' \
--name my_table_abc \
--namespace my_namesapce_123a \
--format ICEBERG
```

# Adicionar uma tag a uma tabela
<a name="table-tag-add"></a>



É possível adicionar tags às tabelas do Amazon S3 e modificá-las. Para ter mais informações sobre marcação de tabelas, consulte [Usar tags com tabelas do S3](table-tagging.md).

## Permissões
<a name="table-tag-add-permissions"></a>

Para adicionar uma tag a uma tabela, é necessário ter a seguinte permissão:
+ `s3tables:TagResource`

## Solucionar de problemas de erros
<a name="table-tag-add-troubleshooting"></a>

Se você encontrar um erro ao tentar adicionar uma tag a uma tabela, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-tag-add-permissions) necessárias para adicionar uma tag a uma tabela.
+ Se você tentou adicionar uma chave de tag que começa com o prefixo reservado `aws:` da AWS, altere-a e tente novamente. 
+ A chave de tag é obrigatória. Além disso, a chave e o valor da tag não devem exceder a extensão máxima de caracteres e não devem conter caracteres restritos. Para obter mais informações, consulte [Atribuir tags para alocação de custos ou controle de acesso por atributo (ABAC)](tagging.md).

## Etapas
<a name="table-tag-add-steps"></a>

É possível adicionar tags a tabelas usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST da funcionalidade Tabelas do Amazon S3 e SDKs da AWS.

## Usar o console do S3
<a name="table-tag-add-console"></a>

Adicionar tags a uma tabela usando o console do Amazon S3:

1. Faça login no 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. Escolha o nome do bucket de tabela. 

1. Escolha o nome da tabela. 

1. Escolha a guia **Properties (Propriedades)**. 

1. Role até a seção **Tags** e escolha **Adicionar nova tag**. 

1. Isso abre a página **Adicionar tags**. É possível adicionar até cinquenta pares de chave-valor de tag. 

1. Se você adicionar uma nova tag com a mesma chave de uma tag existente, o valor da nova sobrescreverá o valor da tag existente.

1. Nessa página, também é possível editar os valor das tags existentes.

1. Depois de adicionar as tags, escolha **Salvar alterações**. 

## Uso da API REST
<a name="table-tag-add-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para adicionar tags a uma tabela, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_TagResource.html)

## Como usar o AWS CLI
<a name="table-tag-add-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como adicionar tags a uma tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação:**

```
aws --region us-west-2 \ 
s3tables tag-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/my_example_table \
--tags '{"Department":"engineering"}'
```

# Visualizar tags de uma tabela
<a name="table-tag-view"></a>

É possível visualizar ou listar tags aplicadas às tabela do Amazon S3. Para obter mais informações sobre tags, consulte [Usar tags com tabelas do S3](table-tagging.md).

## Permissões
<a name="table-tag-view-permissions"></a>

Para visualizar as tags aplicadas a uma tabela, é necessário ter a seguinte permissão: 
+ `s3tables:ListTagsForResource`

## Solucionar de problemas de erros
<a name="table-tag-view-troubleshooting"></a>

Se você encontrar um erro ao tentar listar ou visualizar as tags de uma tabela, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-tag-view-permissions) necessárias para visualizar ou listar as tags da tabela.

## Etapas
<a name="table-tag-view-steps"></a>

É possível visualizar as tags aplicadas a tabelas usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3 e SDKs da AWS.

## Usar o console do S3
<a name="table-tag-view-console"></a>

Para adicionar as tags aplicadas a uma tabela usando o console do Amazon S3:

1. Faça login no 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. Escolha o nome do bucket de tabela. 

1. Escolha o nome da tabela no bucket de tabela. 

1. Escolha a guia **Properties (Propriedades)**. 

1. Role até a seção **Tags** para visualizar todas as tags aplicadas à tabela. 

1. Por padrão, a seção **Tags** mostra as **tags definidas elo usuário**. Você pode selecionar a guia **Tags geradas pela AWS** para visualizar as tags aplicadas pelos serviços da AWS à sua tabela.

## Uso da API REST
<a name="table-tag-view-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para visualizar as tags aplicadas a uma tabela, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [ListTagsforResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_ListTagsForResource.html)

## Como usar o AWS CLI
<a name="table-tag-view-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo de CLI a seguir mostra como visualizar as tags aplicadas a uma tabela. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação:**

```
aws --region us-west-2 \ 
s3tables list-tags-for-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/my_example_table
```

# Excluir uma tag de uma tabela
<a name="table-tag-delete"></a>

É possível remover tags de tabelas do Amazon S3. Para ter mais informações sobre marcação de tabelas, consulte [Usar tags com tabelas do S3](table-tagging.md).

**nota**  
Se você excluir uma tag e depois descobrir que ela estava sendo usada para monitorar custos ou controlar o acesso, poderá adicionar a tag novamente à tabela. 

## Permissões
<a name="table-tag-delete-permissions"></a>

Para excluir uma tag de uma tabela, é necessário ter a seguinte permissão: 
+ `s3tables:UntagResource`

## Solucionar de problemas de erros
<a name="table-tag-delete-troubleshooting"></a>

Se você encontrar um erro ao tentar excluir uma tag de uma tabela, é possível fazer o seguinte: 
+ Verifique se você tem as [Permissões](#table-tag-delete-permissions) necessárias para excluir uma tag de uma tabela.

## Etapas
<a name="table-tag-delete-steps"></a>

É possível excluir tags de tabelas de tabela usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST da funcionalidade Tabelas do Amazon S3 e SDKs da AWS.

## Usar o console do S3
<a name="table-tag-delete-console"></a>

Para excluir tags de uma tabela usando o console do Amazon S3:

1. Faça login no 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. Escolha o nome do bucket de tabela. 

1. Escolha o nome da tabela. 

1. Escolha a guia **Properties (Propriedades)**. 

1. Role até a seção **Tags** e marque a caixa de seleção ao lado das tags que você gostaria de excluir. 

1. Escolha **Excluir**. 

1. O pop-up **Excluir etiquetas definidas pelo usuário** é exibido e solicita que você confirme a exclusão das tags selecionadas. 

1. Escolha **Delete** para confirmar.

## Uso da API REST
<a name="table-tag-delete-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para excluir tags de uma tabela, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ [UnTagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_UntagResource.html)

## Como usar o AWS CLI
<a name="table-tag-delete-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como excluir tags de uma tabela usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação:**

```
aws --region us-west-2 \ 
s3tables untag-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/my_example_table \
--tag-keys '["department"]'
```

# Acessar dados da tabela
<a name="s3-tables-access"></a>

Há várias maneiras de acessar tabelas nos buckets de tabela do Amazon S3. É possível integrar tabelas a serviços de analytics da AWS usando o Amazon SageMaker Lakehouse ou acessar tabelas diretamente usando o endpoint Iceberg REST de tabelas do Amazon S3 ou o Catálogo de Tabelas do Amazon S3 para Apache Iceberg. O método de acesso que você usa dependerá da configuração do catálogo, do modelo de governança e das necessidades de controle de acesso. Apresentamos a seguir uma visão geral desses métodos de acesso.

**Integração com o Amazon SageMaker Lakehouse**  
Esse é o método de acesso recomendado para trabalhar com tabelas em buckets de tabela do S3. A integração oferece gerenciamento unificado de tabelas, governança centralizada e controle de acesso refinado em vários serviços de analytics da AWS. Após a integração, você pode consultar tabelas em determinados serviços, como o Athena e o Amazon Redshift.

**Acesso direto**  
Use esse método se precisar trabalhar com implementações de catálogos do AWS Partner Network (APN) e implementações de catálogos personalizados ou se precisar realizar apenas operações básicas de leitura/gravação em tabelas dentro de um único bucket de tabela.

**nota**  
Para acessar tabelas, a identidade do IAM que você usa precisa ter acesso aos seus recursos de tabela e às ações da funcionalidade Tabelas do S3. Para obter mais informações, consulte [Gerenciamento de acesso para a funcionalidade Tabelas do S3](s3-tables-setting-up.md).

## Acessar tabelas por meio da integração com o Amazon SageMaker Lakehouse
<a name="table-access-gdc-integration"></a>

É possível integrar buckets de tabela do S3 ao Amazon SageMaker Lakehouse para acessar tabelas de serviços de analytics da AWS, como o Amazon Athena, o Amazon Redshift e o Quick. O Amazon SageMaker Lakehouse unifica todos os dados nos data lakes do Amazon S3 e nos data warehouses do Amazon Redshift, para que seja possível criar aplicações de analytics, machine learning (ML) e IA generativa em uma única cópia dos dados. A integração preenche o AWS Glue Data Catalog com os recursos da tabela e federa o acesso a esses recursos com o AWS Lake Formation. Consulte mais informações sobre integração em [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

A integração permite o controle de acesso refinado por meio do AWS Lake Formation para oferecer segurança adicional. O Lake Formation usa conjuntamente um modelo de permissões próprio e o modelo de permissões do IAM para controlar o acesso aos recursos de tabela e aos dados subjacentes. Isso significa que uma solicitação para acessar a tabela deve passar por verificações de permissão tanto do IAM quanto do Lake Formation. Consulte mais informações em [Lake Formation permissions overview](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-overview.html) no *Guia do desenvolvedor do AWS Lake Formation*.

Os seguintes serviços de analytics da AWS podem acessar tabelas por meio dessa integração:
+ [Amazon Athena](s3-tables-integrating-athena.md)
+ [Amazon Redshift](s3-tables-integrating-redshift.md)
+ [Amazon EMR](s3-tables-integrating-emr.md)
+ [Quick](s3-tables-integrating-quicksight.md)
+ [Amazon Data Firehose](s3-tables-integrating-firehose.md)
+ [AWS Glue ETL](s3-tables-integrating-glue.md)
+ [Consultar a funcionalidade Tabelas do S3 com o Estúdio Unificado SageMaker](s3-tables-integrating-sagemaker.md)

### Acessar tabelas usando o endpoint Iceberg REST do AWS Glue
<a name="table-access-glue-irc"></a>

Depois que os buckets de tabela do S3 estiverem integrados ao Amazon SageMaker Lakehouse, você também poderá usar o endpoint Iceberg REST do AWS Glue para se conectar às tabelas do S3 por meio de mecanismos de consulta de terceiros compatíveis com o Iceberg. Para obter mais informações, consulte [Acessar tabelas do Amazon S3 usando o endpoint Iceberg REST do AWS Glue](s3-tables-integrating-glue-endpoint.md).

Recomendamos usar o endpoint Iceberg REST do AWS Glue quando você quiser acessar tabelas do Spark, do PyIceberg ou de outros clientes compatíveis com o Iceberg.

Os seguintes clientes podem acessar tabelas diretamente por meio do endpoint Iceberg REST do AWS Glue:
+ Qualquer cliente do Iceberg, incluindo o Spark, o PyIceberg e outros.

## Acessar tabelas diretamente
<a name="table-access-direct"></a>

 É possível acessar tabelas diretamente de mecanismos de consulta de código aberto por meio de métodos que conectam as operações de gerenciamento de Tabelas do S3 às suas aplicações de analytics do Apache Iceberg. Há dois métodos de acesso direto: o endpoint Iceberg REST do serviço Tabelas do Amazon S3 ou o Catálogo de Tabelas do Amazon S3 para Apache Iceberg. O endpoint REST é recomendado. 

Recomendamos o acesso direto se você acessa tabelas em implementações de catálogos autogerenciados ou se precisa realizar apenas operações básicas de leitura/gravação em tabelas em um único bucket de tabela. Com relação a outros cenários de acesso, recomendamos a integração com o Amazon SageMaker Lakehouse.

O acesso direto às tabelas é gerenciado por meio de políticas baseadas em identidade do IAM ou políticas baseadas em recursos anexadas a tabelas e buckets de tabela. Você não precisa gerenciar as permissões do Lake Formation para tabelas ao acessá-las diretamente. 

### Acessar tabelas por meio do endpoint Iceberg REST do serviço Tabelas do Amazon S3
<a name="access-tables-irc"></a>

Você pode usar o endpoint Iceberg REST do serviço Tabelas do Amazon S3 para acessar as tabelas diretamente de qualquer cliente compatível com o Iceberg REST por meio de endpoints HTTP. Consulte mais informações em [Acessar tabelas usando o endpoint Iceberg REST do serviço Tabelas do Amazon S3](s3-tables-integrating-open-source.md). 

Os seguintes mecanismos de consulta e serviços de analytics da AWS podem acessar tabelas diretamente usando o endpoint Iceberg REST do serviço Tabelas do Amazon S3:

**Mecanismos de consulta compatíveis**
+ Qualquer cliente do Iceberg, incluindo o Spark, o PyIceberg e outros.
+ [Amazon EMR](s3-tables-integrating-emr.md)
+ [AWS Glue ETL](s3-tables-integrating-glue.md)

### Acessar tabelas diretamente por meio do Catálogo de Tabelas do Amazon S3 para Apache Iceberg
<a name="access-client-catalog"></a>

Você também pode acessar tabelas diretamente de mecanismos de consulta como o Apache Spark usando o catálogo de clientes de Tabelas do S3. Consulte mais informações em [Acessar tabelas do Amazon S3 com o Catálogo de Tabelas do Amazon S3 para Apache Iceberg](s3-tables-client-catalog.md). No entanto, o S3 recomenda usar o endpoint Iceberg REST de Tabelas do Amazon S3 para acesso direto, pois ele é compatível com mais aplicações e não exige código específico de mecanismo ou linguagem.

Os seguintes mecanismos de consulta podem acessar tabelas diretamente usando o catálogo de cliente:
+ [Apache Spark](s3-tables-client-catalog.md#s3-tables-integrating-open-source-spark)

# Visão geral sobre a integração da funcionalidade Tabelas do Amazon S3 com serviços de analytics da AWS
<a name="s3-tables-integration-overview"></a>

Para tornar as tabelas em uma conta acessíveis pelos serviços de analytics da AWS, integre os buckets de tabela do Amazon S3 ao Amazon SageMaker Lakehouse. Essa integração permite que os serviços de analytics da AWS descubram e acessem dados de tabela automaticamente. Você pode usar essa integração para trabalhar com tabelas nos seguintes serviços:
+ [Amazon Athena](s3-tables-integrating-athena.md) 
+  [Amazon Redshift](s3-tables-integrating-redshift.md)
+  [Amazon EMR](s3-tables-integrating-emr.md)
+  [Quick](s3-tables-integrating-quicksight.md)
+  [Amazon Data Firehose](s3-tables-integrating-firehose.md)

**nota**  
Essa integração usa os serviços AWS Glue e AWS Lake Formation e pode incorrer em custos de solicitação e armazenamento do AWS Glue. Para saber mais, consulte [Preços do AWS Glue](https://aws.amazon.com/glue/pricing/).  
Há preços adicionais para a execução de consultas nas tabelas do S3. Saiba mais nas informações sobre os preços do mecanismo de consulta que você está usando.

## Como funciona a integração
<a name="how-table-integration-works"></a>

Quando você cria um bucket de tabela no console, o Amazon S3 inicializa as seguintes ações para integrar os buckets de tabela na região que você selecionou aos serviços de analytics da AWS: 

1. Cria um [perfil de serviço](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-service.html) do AWS Identity and Access Management (IAM) que concede ao Lake Formation acesso a todos os buckets de tabela.

1. Usando o perfil de serviço, o Lake Formation registra os buckets de tabela na região atual. Isso permite que o Lake Formation gerencie o acesso, as permissões e a governança de todos os buckets de tabela atuais e futuros nessa região.

1. Adiciona o catálogo `s3tablescatalog` ao AWS Glue Data Catalog na região atual. Ao adicionar o catálogo `s3tablescatalog`, todos os buckets de tabela, namespaces e tabelas podem ser preenchidos no Catálogo de Dados.

**nota**  
Essas ações são automatizadas por meio do console do Amazon S3. Se você realizar essa integração de forma programática, deverá executar manualmente todas essas ações.

Você integra os buckets de tabela uma vez por região da AWS. Após a conclusão da integração, todos os buckets de tabela, namespaces e tabelas atuais e futuros serão adicionados ao AWS Glue Data Catalog nessa região.

A ilustração a seguir mostra como o catálogo `s3tablescatalog` preenche automaticamente os buckets de tabela, os namespaces e as tabelas na região atual como objetos correspondentes no Catálogo de Dados. Os buckets de tabela são preenchidos como subcatálogos. Os namespaces em um bucket de tabela são preenchidos como bancos de dados nos respectivos subcatálogos. As tabelas são preenchidas como tabelas nos respectivos bancos de dados.

![\[Formas como os recursos de tabela são representados no AWS Glue Data Catalog.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/S3Tables-glue-catalog.png)


**Como as permissões funcionam**  
Recomendamos integrar os buckets de tabela aos serviços de analytics da AWS para que você possa trabalhar com dados de tabela em vários serviços que usam o AWS Glue Data Catalog como um armazenamento de metadados. A integração permite um controle de acesso detalhado por meio do AWS Lake Formation. Essa abordagem de segurança significa que, para poder trabalhar com suas tabelas, além das permissões do AWS Identity and Access Management (IAM), você deve conceder à entidade principal do IAM permissões do Lake Formation nas tabelas. 

Há dois tipos principais de permissões no AWS Lake Formation: 
+ As permissões de acesso a metadados controlam a capacidade de criar, ler, atualizar e excluir tabelas e bancos de dados de metadados no Catálogo de Dados.
+ As permissões de acesso aos dados subjacentes controlam a capacidade de ler e gravar dados nos locais do Amazon S3 subjacentes para os quais os recursos do Catálogo de Dados apontam.

O Lake Formation usa conjuntamente um modelo de permissões próprio e o modelo de permissões do IAM para controlar o acesso aos recursos do Catálogo de Dados e aos dados subjacentes:
+ Para que uma solicitação de acesso aos recursos do Catálogo de Dados ou os dados subjacentes seja bem-sucedida, ela deve passar pelas verificações de permissão do IAM e do Lake Formation.
+ As permissões do IAM controlam o acesso a APIs e recursos do Lake Formation e do AWS Glue, enquanto as permissões do Lake Formation controlam o acesso aos recursos do Catálogo de Dados, aos locais do Amazon S3 e aos dados subjacentes.

As permissões do Lake Formation se aplicam somente na região em que foram concedidas, e uma entidade principal deve ser autorizada por um administrador do data lake ou por outra entidade principal com as permissões necessárias para receber as permissões do Lake Formation. 

Para obter mais informações, consulte [“Overview of Lake Formation permissions”](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-overview.html) (Visão geral das permissões do Lake Formation) no *Guia do desenvolvedor do AWS Lake Formation*. 

Siga as etapas em [Integrar a funcionalidade Tabelas do S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md) para ter as permissões apropriadas para acessar o AWS Glue Data Catalog e seus recursos de tabela, bem como para trabalhar com serviços de analytics da AWS.

## Próximas etapas
<a name="next-steps-integration-overview"></a>
+ [Integrar a funcionalidade Tabelas do S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md)
+ [Crie um namespace ](s3-tables-namespace-create.md)
+ [Criar uma tabela](s3-tables-create.md)

# Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS
<a name="s3-tables-integrating-aws"></a>

Este tópico aborda os pré-requisitos e os procedimentos necessários para integrar buckets de tabela do Amazon S3 a serviços de analytics da AWS. Para ter uma visão geral de como a integração funciona, consulte [Visão geral da integração da funcionalidade Tabelas do S3](s3-tables-integration-overview.md).

**nota**  
Essa integração usa os serviços AWS Glue e AWS Lake Formation e pode incorrer em custos de solicitação e armazenamento do AWS Glue. Para saber mais, consulte [Preços do AWS Glue](https://aws.amazon.com/glue/pricing/).  
Há preços adicionais para a execução de consultas nas tabelas do S3. Saiba mais nas informações sobre os preços do mecanismo de consulta que você está usando.

## Pré-requisitos da integração
<a name="table-integration-prerequisites"></a>

Os pré-requisitos a seguir se aplicam para integrar buckets de tabela a serviços de analytics da AWS:
+ [Crie um bucket de tabela.](s3-tables-buckets-create.md)
+ Anexe a política [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLakeFormationDataAdmin.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLakeFormationDataAdmin.html) gerenciada pela AWS à entidade principal do AWS Identity and Access Management (IAM) para tornar esse usuário um administrador de data lake. Consulte mais informações sobre como criar um administrador de data lake em [Create a data lake administrator](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin) no *Guia do desenvolvedor do AWS Lake Formation*.
+ Adicione permissões para a operação `glue:PassConnection` à entidade principal do IAM.
+ Adicione permissões para as operações `lakeformation:RegisterResource` e `lakeformation:RegisterResourceWithPrivilegedAccess` à entidade principal do IAM.
+ [Atualize a () para a versão mais recente AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html#getting-started-install-instructions).

**Importante**  
Ao criar tabelas, use apenas letras minúsculas nos nomes e nas definições das tabelas. Por exemplo, os nomes das colunas devem estar todos em minúsculas. Se o nome da tabela ou a definição da tabela contiver letras maiúsculas, a tabela não será compatível com o AWS Lake Formation ou o AWS Glue Data Catalog. Nesse caso, a tabela não estará visível para serviços de analytics da AWS, como o Amazon Athena, mesmo que os buckets de tabela estejam integrados aos serviços de analytics da AWS.   
Se a definição da tabela contiver letras maiúsculas, você receberá a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”.

## Integrar buckets de tabela aos serviços de analytics da AWS
<a name="table-integration-procedures"></a>

A funcionalidade Tabelas do Amazon S3 se integra ao AWS Glue Data Catalog (Catálogo de Dados) e registra o catálogo como um local de dados do Lake Formation. É possível registrá-lo no console do Lake Formation ou usando as APIs do serviço. Ao registrar o local, é necessário especificar um perfil do IAM que concede permissões de leitura/gravação ao perfil registrado do Lake Formation para acessar esse local. O Lake Formation assume essa função ao fornecer credenciais temporárias para serviços integrados da AWS.

Se você tiver uma política baseada em recursos do IAM ou da funcionalidade Tabelas do S3 que restrinja usuários do IAM e perfis do IAM com base em tags de entidade principal, será necessário anexar as mesmas tags de entidade principal ao perfil do IAM que o Lake Formation usa para acessar dados do Amazon S3 (por exemplo, LakeFormationDataAccessRole) e conceder a esse perfil as devidas permissões. Isso é necessário para que a política de controle de acesso baseada em tags funcione corretamente com integração de analytics da funcionalidade Tabelas do S3.

Essa integração deve ser configurada uma vez por região da AWS.

**Importante**  
A integração dos serviços de analytics da AWS agora usa a opção `WithPrivilegedAccess` na operação de API `registerResource` do Lake Formation para registrar buckets de tabela do S3. Agora a integração também cria o catálogo `s3tablescatalog` no AWS Glue Data Catalog usando a opção `AllowFullTableExternalDataAccess` na operação de API `CreateCatalog` do AWS Glue.  
Se você configurou a integração com a versão prévia, pode continuar usando sua integração atual. No entanto, como o processo de integração atualizado oferece melhorias de desempenho, recomendamos a migração. Se quiser migrar para a integração atualizada, consulte [Migrar para o processo de integração atualizado](#migrate-integrate-console). 

### Usar o console do S3
<a name="integrate-console"></a>

1. 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. Escolha **Criar bucket de tabela**.

   A página **Criar bucket de tabela** é aberta.

1. Insira um **Nome do bucket de tabela** e marque a caixa de seleção **Habilitar integração**.

1. Escolha **Criar bucket de tabela**. O Amazon S3 tentará integrar automaticamente os buckets de tabela nessa região.

Na primeira vez que você integra buckets de tabela em qualquer região, o Amazon S3 cria um perfil de serviço do IAM em seu nome. Esse perfil permite que o Lake Formation acesse todos os buckets de tabela na conta e federe o acesso às tabelas no AWS Glue Data Catalog.

### Como usar o AWS CLI
<a name="integrate-cli"></a>

**Como integrar buckets de tabela usando a AWS CLI**

As etapas a seguir mostram como usar a AWS CLI para integrar buckets de tabela. Para usar essas etapas, substitua `user input placeholders` por suas próprias informações.

1. Crie um bucket de tabela.

   ```
   aws s3tables create-table-bucket \
   --region us-east-1 \
   --name amzn-s3-demo-table-bucket
   ```

1. Crie um perfil de serviço do IAM que permita que o Lake Formation acesse os recursos de tabela.

   1. Crie um arquivo chamado `Role-Trust-Policy.json` que contenha a seguinte política de confiança: 

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "LakeFormationDataAccessPolicy",
              "Effect": "Allow",
              "Principal": {
                "Service": "lakeformation.amazonaws.com"
              },
              "Action": [
                  "sts:AssumeRole",
                  "sts:SetContext",
                  "sts:SetSourceIdentity"
              ],
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": "111122223333"
                }
              }
            }
          ]
      }
      ```

------

      Crie um perfil de serviço do IAM usando o seguinte comando: 

      ```
      aws iam create-role \
      --role-name S3TablesRoleForLakeFormation \
      --assume-role-policy-document file://Role-Trust-Policy.json
      ```

   1. Crie um arquivo chamado `LF-GluePolicy.json` que contenha a seguinte política:

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "LakeFormationPermissionsForS3ListTableBucket",
                  "Effect": "Allow",
                  "Action": [
                      "s3tables:ListTableBuckets"
                  ],
                  "Resource": [
                      "*"
                  ]
              },
              {
                  "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket",
                  "Effect": "Allow",
                  "Action": [
                      "s3tables:CreateTableBucket",
                      "s3tables:GetTableBucket",
                      "s3tables:CreateNamespace",
                      "s3tables:GetNamespace",
                      "s3tables:ListNamespaces",
                      "s3tables:DeleteNamespace",
                      "s3tables:DeleteTableBucket",
                      "s3tables:CreateTable",
                      "s3tables:DeleteTable",
                      "s3tables:GetTable",
                      "s3tables:ListTables",
                      "s3tables:RenameTable",
                      "s3tables:UpdateTableMetadataLocation",
                      "s3tables:GetTableMetadataLocation",
                      "s3tables:GetTableData",
                      "s3tables:PutTableData"
                  ],
                  "Resource": [
                      "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
                  ]
              }
          ]
      }
      ```

------

      Anexe a política ao perfil usando o seguinte comando: 

      ```
      aws iam put-role-policy \
      --role-name S3TablesRoleForLakeFormation  \
      --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \
      --policy-document file://LF-GluePolicy.json
      ```

1. Crie um arquivo chamado `input.json` que contenha o seguinte:

   ```
   {
       "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*",
   
       "WithFederation": true,
       "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation"
   }
   ```

   Registre os buckets de tabela no Lake Formation usando o seguinte comando:

   ```
   aws lakeformation register-resource \
   --region us-east-1 \
   --with-privileged-access \
   --cli-input-json file://input.json
   ```

1. Crie um arquivo chamado `catalog.json` que contenha o seguinte catálogo:

   ```
   {
      "Name": "s3tablescatalog",
      "CatalogInput": {
         "FederatedCatalog": {
             "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*",
             "ConnectionName": "aws:s3tables"
          },
          "CreateDatabaseDefaultPermissions":[],
          "CreateTableDefaultPermissions":[],
          "AllowFullTableExternalDataAccess": "True"
      }
   }
   ```

   Crie o catálogo `s3tablescatalog` usando o comando a seguir. Ao criar esse catálogo, o AWS Glue Data Catalog é preenchido com objetos correspondentes a buckets de tabela, namespaces e tabelas.

   ```
   aws glue create-catalog \
   --region us-east-1 \
   --cli-input-json file://catalog.json
   ```

1. Verifique se o catálogo `s3tablescatalog` foi adicionado no AWS Glue usando o seguinte comando:

   ```
   aws glue get-catalog --catalog-id s3tablescatalog
   ```

### Migrar para o processo de integração atualizado
<a name="migrate-integrate-console"></a>

O processo de integração dos serviços de analytics da AWS foi atualizado. Se você configurou a integração com a versão prévia, pode continuar usando sua integração atual. No entanto, como o processo de integração atualizado oferece melhorias de desempenho, recomendamos que realize a migração usando as etapas a seguir. Consulte mais informações sobre o processo de migração ou integração em [Creating an Amazon S3 Tables catalog in the AWS Glue Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) no *Guia do desenvolvedor do AWS Lake Formation*. 

1. Abra o console do AWS Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) e faça login como administrador do data lake. Consulte mais informações sobre como criar um administrador de data lake em [Create a data lake administrator](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin) no *Guia do desenvolvedor do AWS Lake Formation*.

1. Exclua o catálogo `s3tablescatalog` fazendo o seguinte: 
   + No painel de navegação à esquerda, selecione **Catálogos**. 
   + Selecione o botão de opção ao lado do catálogo `s3tablescatalog` na lista **Catálogos**. No menu **Ações**, escolha **Excluir**.

1. Cancele o registro da localização dos dados do catálogo `s3tablescatalog` fazendo o seguinte:
   + No painel de navegação à esquerda, acesse a seção **Administração** e selecione **Locais de data lake**. 
   + Selecione o botão de opção ao lado da localização do data lake `s3tablescatalog`; por exemplo, `s3://tables:region:account-id:bucket/*`. 
   + No menu **Ações**, selecione **Remover**. 
   + Na caixa de diálogo de confirmação exibida, selecione **Remover**. 

1. Agora que você excluiu o catálogo `s3tablescatalog` e a localização do data lake, pode seguir as etapas para [integrar os buckets de tabela aos serviços de analytics da AWS](#table-integration-procedures) usando o processo de integração atualizado. 

**nota**  
Se você quiser trabalhar com tabelas criptografadas com SSE-KMS em serviços integrados de analytics da AWS, o perfil que você utiliza precisa ter permissão para usar sua chave do AWS KMS para operações de criptografia. Para obter mais informações, consulte [Conceder permissões a entidades principais do IAM para trabalhar com tabelas criptografadas em serviços integrados de analytics da AWS](s3-tables-kms-permissions.md#tables-kms-integration-permissions).

Depois de integrar a entidade principal do IAM e receber permissões do Lake Formation para acessar suas tabelas, se quiser permitir que outras entidades principais do IAM acessem as tabelas, você precisará conceder permissões do Lake Formation em suas tabelas a essas entidades principais. Para obter mais informações, consulte [Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation](grant-permissions-tables.md).

**Próximas etapas**
+ [Crie um namespace ](s3-tables-namespace-create.md).
+ [Criar uma tabela](s3-tables-create.md).

# Acessar tabelas do Amazon S3 usando o endpoint Iceberg REST do AWS Glue
<a name="s3-tables-integrating-glue-endpoint"></a>

Depois que os buckets de tabela do S3 estiverem integrados ao AWS Glue Data Catalog, você poderá usar o endpoint Iceberg REST do AWS Glue para se conectar às tabelas do S3 por meio de clientes compatíveis com o Apache Iceberg, como PyIceberg ou Spark. O endpoint Iceberg REST do AWS Glue implementa a [Especificação da API Catalog Open do Iceberg REST](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml), que fornece uma interface padronizada para interagir com tabelas do Iceberg. Para acessar as tabelas do S3 usando o endpoint, você precisa configurar as permissões por meio de uma combinação de políticas do IAM e concessões do AWS Lake Formation. As seções a seguir explicam como configurar o acesso, incluindo instruções sobre como criar o perfil do IAM necessário, definir as políticas essenciais e estabelecer permissões do Lake Formation para acesso em nível de banco de dados e de tabela. 

Consulte uma explicação completa sobre como usar o PyIceberg em [Access data in Amazon S3 Tables using PyIceberg through the AWS Glue Iceberg REST endpoint](https://aws.amazon.com/blogs/storage/access-data-in-amazon-s3-tables-using-pyiceberg-through-the-aws-glue-iceberg-rest-endpoint/).

**Pré-requisitos**
+ [Integrar os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md)
+ [Criar um namespace de tabela](s3-tables-namespace-create.md)
+ [Ter acesso a uma conta de administrador do data lake](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)

## Criar um perfil do IAM para o cliente
<a name="glue-endpoint-create-iam-role"></a>

Para acessar tabelas por meio de endpoints do AWS Glue, você precisa criar um perfil do IAM com permissões para ações do AWS Glue e do Lake Formation. Este procedimento explica como criar esse perfil e configurar suas permissões.

1. Abra o console IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Políticas**.

1. Escolha **Criar uma política** e selecione **JSON** no editor de políticas.

1. Adicione a seguinte política em linha que concede permissões para acessar ações do AWS Glue e do Lake Formation:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "glue:GetCatalog",
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:CreateTable",
                   "glue:UpdateTable"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:catalog",
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog",
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/amzn-s3-demo-table-bucket",
                   "arn:aws:glue:us-east-1:111122223333:table/s3tablescatalog/amzn-s3-demo-table-bucket/<namespace>/*",
                   "arn:aws:glue:us-east-1:111122223333:database/s3tablescatalog/amzn-s3-demo-table-bucket/<namespace>"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Depois de criar a política, crie um perfil do IAM e escolha **Política de confiança personalizada** como **Tipo de entidade confiável**.

1. Insira o seguinte em **Política de confiança personalizada**:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/Admin_role"
               },
               "Action": "sts:AssumeRole",
               "Condition": {}
           }
       ]
   }
   ```

------

## Definir o acesso no Lake Formation
<a name="define-access-lakeformation"></a>

O Lake Formation oferece controles de acesso detalhado para tabelas do data lake. Quando você integrou o bucket do S3 ao AWS Glue Data Catalog, as tabelas foram automaticamente registradas como recursos no Lake Formation. Para acessar essas tabelas, você deve conceder permissões específicas do Lake Formation à sua identidade do IAM, além das permissões de política do IAM.

As etapas a seguir explicam como aplicar os controles de acesso do Lake Formation para permitir que o cliente do Iceberg se conecte às tabelas. Você deve fazer login como administrador do data lake para aplicar essas permissões.

### Permitir que mecanismos externos acessem os dados da tabela
<a name="allow-external-engines"></a>

No Lake Formation, você deve habilitar o acesso total à tabela para que mecanismos externos acessem os dados. Isso permite que aplicações de terceiros obtenham credenciais temporárias do Lake Formation ao usar um perfil do IAM que tenha permissões completas na tabela solicitada.

Abra o console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Abra o console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) e faça login como administrador de data lake.

1. No painel de navegação, em **Administração**, selecione **Configurações de integração de aplicações**.

1. Selecione **Permitir que mecanismos externos acessem dados em locais do Amazon S3 com acesso total à tabela**. Em seguida, escolha **Salvar**.

### Conceder permissões do Lake Formation nos recursos de tabela
<a name="grant-lakeformation-permissions"></a>

Depois, conceda permissões do Lake Formation ao perfil do IAM que você criou para o cliente compatível com o Iceberg. Essas permissões possibilitarão que o perfil crie e gerencie tabelas no namespace. Você precisa fornecer permissões em nível de banco de dados e de tabela. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](grant-permissions-tables.md#grant-lf-table).

## Configurar o ambiente para usar o endpoint
<a name="setup-client-glue-irc"></a>

Depois de configurar o perfil do IAM com as permissões necessárias para o acesso à tabela, você pode usá-lo para executar clientes do Iceberg em sua máquina local configurando a AWS CLI com o perfil por meio do seguinte comando:

```
aws sts assume-role --role-arn "arn:aws:iam::<accountid>:role/<glue-irc-role>" --role-session-name <glue-irc-role>
```

Para acessar tabelas por meio do endpoint REST do AWS Glue, você precisa inicializar um catálogo em seu cliente compatível com o Iceberg. Essa inicialização requer a especificação de propriedades personalizadas, incluindo propriedades do Sigv4, o URI do endpoint e o local do warehouse. Especifique essas propriedades da seguinte forma:
+ Propriedades do Sigv4: o Sigv4 deve estar habilitado e o nome de assinatura é `glue`.
+ Local do warehouse: o bucket de tabela, especificado no formato `<accountid>:s3tablescatalog/<table-bucket-name>`.
+ URI do endpoint: consulte o Guia de referência dos endpoints de serviço do AWS Glue para o endpoint específico da região.

O exemplo a seguir mostra como inicializar um catálogo do pyIceberg.

```
rest_catalog = load_catalog(
        s3tablescatalog,
**{
"type": "rest",
"warehouse": "<accountid>:s3tablescatalog/<table-bucket-name>",
"uri": "https://glue.<region>.amazonaws.com/iceberg",
"rest.sigv4-enabled": "true",
"rest.signing-name": "glue",
"rest.signing-region": region
        }
)
```

Consulte mais informações sobre a implementação do endpoint Iceberg REST do AWS Glue em [Conectar ao Catálogo de Dados usando o endpoint Iceberg REST do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html) no *Guia do usuário do AWS Glue*.

# Acessar tabelas usando o endpoint Iceberg REST do serviço Tabelas do Amazon S3
<a name="s3-tables-integrating-open-source"></a>

É possível conectar o cliente do Iceberg REST ao endpoint Iceberg REST do serviço Tabelas do Amazon S3 e fazer chamadas à REST API para criar, atualizar ou consultar tabelas em buckets de tabela do S3. O endpoint implementa um conjunto de APIs Iceberg REST padronizadas descritas na [especificação da API Catalog Open do Apache Iceberg REST](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml). Ele converte operações da Iceberg REST API em operações correspondentes do serviço Tabelas do S3.

**nota**  
O endpoint Iceberg REST do serviço Tabelas do Amazon S3 pode ser usado para acessar tabelas em implementações de catálogo da AWS Partner Network (APN) ou implementações de catálogo personalizadas. Ele também pode ser usado se você precisar apenas de acesso básico de leitura/gravação a um único bucket de tabela. Em outros cenários de acesso, recomendamos usar o endpoint Iceberg REST do AWS Glue para se conectar às tabelas, que fornece gerenciamento unificado de tabelas, governança centralizada e controle de acesso refinado. Para obter mais informações, consulte . [Acessar tabelas do Amazon S3 usando o endpoint Iceberg REST do AWS Glue](s3-tables-integrating-glue-endpoint.md)

## Configuração do endpoint
<a name="configure-endpoint"></a>

Você se conecta ao endpoint Iceberg REST do serviço Tabelas do Amazon S3 usando o endpoint de serviço. Os endpoints Iceberg REST de Tabelas do S3 têm o seguinte formato:

```
https://s3tables.<REGION>.amazonaws.com/iceberg
```

Consulte os endpoints específicos da região em [Regiões da AWS e endpoints da funcionalidade Tabelas do S3](s3-tables-regions-quotas.md#s3-tables-regions).

**Propriedades de configuração do catálogo**

Ao usar um cliente do Iceberg para conectar um mecanismo de analytics ao endpoint de serviço, é necessário especificar as propriedades de configuração a seguir ao inicializar o catálogo. Substitua os *valores de espaços reservados* por suas informações de região e bucket de tabela.
+ O endpoint específico da região como o URI do endpoint: `https://s3tables.<REGION>.amazonaws.com/iceberg`
+ O ARN do bucket de tabela como localização do warehouse: `arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>`
+ Propriedades do Sigv4 para autenticação. O nome de assinatura do SigV4 para as solicitações do endpoint de serviço é `s3tables`.

Os exemplos a seguir mostram como configurar diferentes clientes para usar o endpoint Iceberg REST do serviço Tabelas do Amazon S3.

------
#### [ PyIceberg ]

Para usar o endpoint Iceberg REST desse serviço com o PyIceberg, especifique as seguintes propriedades de configuração da aplicação:

```
rest_catalog = load_catalog(
  catalog_name,
  **{
    "type": "rest",    
    "warehouse":"arn:aws:s3tables:<Region>:<accountID>:bucket/<bucketname>",
    "uri": "https://s3tables.<Region>.amazonaws.com/iceberg",
    "rest.sigv4-enabled": "true",
    "rest.signing-name": "s3tables",
    "rest.signing-region": "<Region>"
  }
)
```

------
#### [ Apache Spark ]

Para usar o endpoint Iceberg REST do serviço Tabelas do Amazon S3 com o Spark, especifique as propriedades de configuração a seguir da aplicação, substituindo os *valores de espaço reservado* por suas informações de região e bucket de tabela.

```
spark-shell \
  --packages "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160,software.amazon.awssdk:url-connection-client:2.20.160" \
  --master "local[*]" \
  --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
  --conf "spark.sql.defaultCatalog=spark_catalog" \
   --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \
  --conf "spark.sql.catalog.spark_catalog.type=rest" \
  --conf "spark.sql.catalog.spark_catalog.uri=https://s3tables.<Region>.amazonaws.com/iceberg" \
  --conf "spark.sql.catalog.spark_catalog.warehouse=arn:aws:s3tables:<Region>:<accountID>:bucket/<bucketname>" \
  --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \
  --conf "spark.sql.catalog.spark_catalog.rest.signing-name=s3tables" \
  --conf "spark.sql.catalog.spark_catalog.rest.signing-region=<Region>" \
  --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \
  --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider" \
  --conf "spark.sql.catalog.spark_catalog.rest-metrics-reporting-enabled=false"
```

------

## Autenticar e autorizar o acesso ao endpoint
<a name="tables-endpoint-auth"></a>

As solicitações de API aos endpoints de serviço de Tabelas do S3 são autenticadas usando o AWS Signature Version 4 (SigV4). Consulte [AWS Signature Version 4 para solicitações de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) para saber mais sobre o AWS SigV4.

O nome de assinatura do SigV4 para solicitações de endpoint Iceberg REST do serviço Tabelas do Amazon S3 é `s3tables`.

As solicitações ao endpoint Iceberg REST do serviço Tabelas do Amazon S3 são autorizadas usando ações `s3tables` do IAM correspondentes às operações de API REST. Essas permissões podem ser definidas em políticas baseadas em identidade do IAM ou em políticas baseadas em recurso anexadas a tabelas e buckets de tabela. Para obter mais informações, consulte [Gerenciamento de acesso para a funcionalidade Tabelas do S3](s3-tables-setting-up.md).

 Você pode acompanhar as solicitações feitas às tabelas por meio do endpoint REST com o AWS CloudTrail. As solicitações serão registradas como a ação correspondente do IAM no S3. Por exemplo, uma API `LoadTable` gerará um evento de gerenciamento para a operação `GetTableMetadataLocation` e um evento de dados para a operação `GetTableData`. Para obter mais informações, consulte [Registro em log com o AWS CloudTrail para a funcionalidade Tabelas do S3](s3-tables-logging.md). 

## Parâmetros de caminho e prefixo
<a name="endpoint-parameter"></a>

 As APIs do catálogo Iceberg REST têm um prefixo de formato livre nos respectivos URLs de solicitação. Por exemplo, a chamada de API `ListNamespaces` usa o formato de URL `GET/v1/{prefix}/namespaces`. Para tabelas do S3, o `{prefix}` do caminho REST é sempre o ARN do bucket de tabelas codificado em URL. 

Por exemplo, para o ARN do bucket de tabela `arn:aws:s3tables:us-east-1:111122223333:bucket/bucketname`, o prefixo seria `arn%3Aaws%3As3tables%3Aus-east-1%3A111122223333%3Abucket%2Fbucketname`. 

### Parâmetro do caminho do namespace
<a name="endpoint-parameter-namespace"></a>

 Os namespaces no caminho de API do catálogo do Iceberg REST podem ter vários níveis. No entanto, o serviço Tabelas do S3 só é compatível com namespaces de nível único. Para acessar um namespace em uma hierarquia de catálogos de vários níveis, é possível se conectar a um catálogo de vários níveis acima do namespace ao fazer referência ao namespace. Isso possibilita que qualquer mecanismo de consulta que permita a notação em três partes de `catalog.namespace.table` acesse objetos na hierarquia de catálogos do serviço Tabelas do S3 sem problemas de compatibilidade em comparação com o uso do namespace de vários níveis. 

## Operações de API do Iceberg REST compatíveis
<a name="endpoint-supported-api"></a>

A tabela a seguir contém as APIs REST do Iceberg compatíveis e mostra como elas correspondem às ações do serviço Tabelas do S3. 


| Operação REST do Iceberg | Caminho REST | Ação do IAM em Tabelas do S3 | Nome do evento do CloudTrail | 
| --- | --- | --- | --- | 
|  `getConfig`  |  `GET /v1/config`  |  `s3tables:GetTableBucket`  |  `s3tables:GetTableBucket`  | 
|  `listNamespaces`  |  `GET /v1/{prefix}/namespaces`  |  `s3tables:ListNamespaces`  |  `s3tables:ListNamespaces`  | 
|  `createNamespace`  |  `POST /v1/{prefix}/namespaces`  |  `s3tables:CreateNamespace`  |  `s3tables:CreateNamespace`  | 
|  `loadNamespaceMetadata`  |  `GET /v1/{prefix}/namespaces/{namespace}`  |  `s3tables:GetNamespace`  |  `s3tables:GetNamespace`  | 
|  `dropNamespace`  |  `DELETE /v1/{prefix}/namespaces/{namespace}`  |  `s3tables:DeleteNamespace`  |  `s3tables:DeleteNamespace`  | 
|  `listTables`  |  `GET /v1/{prefix}/namespaces/{namespace}/tables`  |  `s3tables:ListTables`  |  `s3tables:ListTables`  | 
|  `createTable`  |  `POST /v1/{prefix}/namespaces/{namespace}/tables`  |  `s3tables:CreateTable`, `s3tables:PutTableData`  |  `s3tables:CreateTable`, `s3tables:PutObject`  | 
|  `loadTable`  |  `GET /v1/{prefix}/namespaces/{namespace}/tables/{table}`  |  `s3tables:GetTableMetadataLocation`, `s3tables:GetTableData`  |  `s3tables:GetTableMetadataLocation`, `s3tables:GetObject`  | 
|  `updateTable`  |  `POST /v1/{prefix}/namespaces/{namespace}/tables/{table}`  |  `s3tables:UpdateTableMetadataLocation`, `s3tables:PutTableData`, `s3tables:GetTableData`  |  `s3tables:UpdateTableMetadataLocation`, `s3tables:PutObject`, `s3tables:GetObject`  | 
|  `dropTable`  |  `DELETE /v1/{prefix}/namespaces/{namespace}/tables/{table}`  |  `s3tables:DeleteTable`  |  `s3tables:DeleteTable`  | 
|  `renameTable`  |  `POST /v1/{prefix}/tables/rename`  |  `s3tables:RenameTable`  |  `s3tables:RenameTable`  | 
|  `tableExists`  |  `HEAD /v1/{prefix}/namespaces/{namespace}/tables/{table}`  |  `s3tables:GetTable`  |  `s3tables:GetTable`  | 
|  `namespaceExists`  |  `HEAD /v1/{prefix}/namespaces/{namespace}`  |  `s3tables:GetNamespace`  |  `s3tables:GetNamespace`  | 

## Considerações e limitações
<a name="endpoint-considerations"></a>

Veja a seguir as considerações e limitações ao usar o endpoint Iceberg REST do serviço Tabelas do Amazon S3.

****Considerações****
+ **Comportamento da API CreateTable**: a opção `stage-create` não é permitida para essa operação e resulta em um erro `400 Bad Request`. Isso significa que não é possível criar uma tabela com base em resultados de consultas usando `CREATE TABLE AS SELECT` (CTAS).
+ **Comportamento da API DeleteTable**: você só pode excluir tabelas com a limpeza habilitada. A exclusão de tabelas com `purge=false` não é permitida e resulta em um erro `400 Bad Request`. Algumas versões do Spark sempre definem esse sinalizador como falso, mesmo ao executar comandos `DROP TABLE PURGE`. Você pode tentar com `DROP TABLE PURGE` ou usar a operação [DeleteTable](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html) de Tabelas do S3 para excluir uma tabela.
+  O endpoint só permite operações de metadados de tabela padrão. Para manutenção de tabelas, como gerenciamento de snapshots e compactação, use as operações de API de manutenção de Tabelas do S3. Para obter mais informações, consulte [Manutenção da funcionalidade Tabelas do S3](s3-tables-maintenance-overview.md). 

****Limitações****
+ Namespaces multinível não são compatíveis.
+ A autenticação baseada em OAuth não é compatível.
+ Somente a propriedade `owner` é compatível com namespaces.
+ As APIs relacionadas à visualização definidas na [especificação da API Open do Apache Iceberg REST](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) não são compatíveis.
+ A execução de operações em uma tabela com um tamanho de arquivo `metadata.json` maior que 50 MB não é permitida e retornará um erro `400 Bad Request`. Para controlar o tamanho dos arquivos `metadata.json`, use as operações de manutenção de tabelas. Para obter mais informações, consulte [Manutenção da funcionalidade Tabelas do S3](s3-tables-maintenance-overview.md).

# Acessar tabelas do Amazon S3 com o Catálogo de Tabelas do Amazon S3 para Apache Iceberg
<a name="s3-tables-client-catalog"></a>

É possível acessar tabelas do S3 por meio de mecanismos de consulta de código aberto, como o Apache Spark, usando o catálogo de cliente do Catálogo de Tabelas do Amazon S3 para Apache Iceberg. O Catálogo de Tabelas do Amazon S3 para Apache Iceberg é uma biblioteca de código aberto hospedada pelo AWS Labs. Ele traduz as operações do Apache Iceberg nos mecanismos de consulta (como descoberta de tabelas, atualizações de metadados e adição ou remoção de tabelas) em operações de API da funcionalidade Tabelas do S3.

O Catálogo de Tabelas do Amazon S3 para Apache Iceberg é distribuído como um Maven JAR chamado `s3-tables-catalog-for-iceberg.jar`. É possível criar o JAR do catálogo de cliente no [Repositório do AWS Labs GitHub](https://github.com/awslabs/s3-tables-catalog) ou baixá-lo no [Maven](https://mvnrepository.com/artifact/software.amazon.s3tables/s3-tables-catalog-for-iceberg). Ao se conectar às tabelas, o JAR do catálogo de cliente é usado como uma dependência quando você inicializa uma sessão do Spark para o Apache Iceberg.

## Usar o Catálogo de Tabelas do Amazon S3 para Apache Iceberg com o Apache Spark
<a name="s3-tables-integrating-open-source-spark"></a>

É possível usar o Catálogo de Tabelas do Amazon S3 para Apache Iceberg como catálogo de cliente para se conectar a tabelas de aplicações de código aberto ao inicializar uma sessão do Spark. Na configuração da sessão, você especifica dependências em relação ao Iceberg e ao Amazon S3, e cria um catálogo personalizado que usa o bucket de tabela como warehouse de metadados.

****Pré-requisitos****
+ Uma identidade do IAM com acesso ao bucket de tabela e a ações da funcionalidade Tabelas do S3. Para obter mais informações, consulte [Gerenciamento de acesso para a funcionalidade Tabelas do S3](s3-tables-setting-up.md).

**Como inicializar uma sessão do Spark usando o Catálogo de Tabelas do Amazon S3 para Apache Iceberg**
+ Inicialize o Spark usando o comando a seguir. Para usar o comando, substitua o *número de versão* do Catálogo de Tabelas do Amazon S3 para Apache Iceberg pela versão mais recente do [Repositório do AWS Labs GitHub](https://github.com/awslabs/s3-tables-catalog) e o *ARN do bucket de tabela* pelo ARN da sua própria tabela.

  ```
  spark-shell \
  --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1,software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.4 \
  --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \
  --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
  ```

### Consultar tabelas do S3 com o Spark SQL
<a name="query-with-spark"></a>

Usando o Spark, você pode executar operações DQL, DML e DDL em tabelas do S3. Ao consultar tabelas, você usa o nome da tabela totalmente qualificado, bem como o nome do catálogo da sessão, seguindo este padrão:

`CatalogName.NamespaceName.TableName`

Os exemplos de consultas a seguir mostram algumas maneiras de interagir com as tabelas do S3. Para usar esses exemplos de consultas no mecanismo de consulta, substitua os valores dos *espaços reservados para entrada do usuário* pelos seus próprios.

**Como consultar tabelas com o Spark**
+ Crie um namespace 

  ```
  spark.sql(" CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.my_namespace")
  ```
+ Criar uma tabela

  ```
  spark.sql(" CREATE TABLE IF NOT EXISTS s3tablesbucket.my_namespace.`my_table` 
  ( id INT, name STRING, value INT ) USING iceberg ")
  ```
+ Consultar uma tabela

  ```
  spark.sql(" SELECT * FROM s3tablesbucket.my_namespace.`my_table` ").show()
  ```
+ Inserir dados em uma tabela

  ```
  spark.sql(
  """
      INSERT INTO s3tablesbucket.my_namespace.my_table 
      VALUES 
          (1, 'ABC', 100), 
          (2, 'XYZ', 200)
  """)
  ```
+ Carregue um arquivo de dados existente em uma tabela.

  1. Leia os dados no Spark.

     ```
     val data_file_location = "Path such as S3 URI to data file"
     val data_file = spark.read.parquet(data_file_location)
     ```

  1. Grave os dados em uma tabela do Iceberg.

     ```
     data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()
     ```

# Consultar tabelas do Amazon S3 com o Amazon Athena
<a name="s3-tables-integrating-athena"></a>

O Amazon Athena é um serviço de consultas interativas que você pode usar para analisar dados no Amazon S3 usando SQL padrão. Para obter mais informações, consulte [O que é o Amazon Athena?](https://docs.aws.amazon.com//athena/latest/ug/what-is.html) no *Guia do usuário do Amazon Athena*.

Depois que os buckets de tabela são integrados aos serviços de analytics da AWS, é possível executar consultas Data Definition Language (DDL), Data Manipulation Language (DML) e Data Query Language (DQL) em tabelas do S3 usando o Athena. Consulte mais informações sobre como consultar tabelas em um bucket de tabela em [Registrar catálogos de buckets de tabela do S3](https://docs.aws.amazon.com//athena/latest/ug/gdc-register-s3-table-bucket-cat.html) no *Guia do usuário do Amazon Athena*.

Também é possível executar consultas no Athena pelo console do Amazon S3. 

**Importante**  
Ao criar tabelas, use apenas letras minúsculas nos nomes e nas definições das tabelas. Por exemplo, os nomes das colunas devem estar todos em minúsculas. Se o nome da tabela ou a definição da tabela contiver letras maiúsculas, a tabela não será compatível com o AWS Lake Formation ou o AWS Glue Data Catalog. Nesse caso, a tabela não estará visível para serviços de analytics da AWS, como o Amazon Athena, mesmo que os buckets de tabela estejam integrados aos serviços de analytics da AWS.   
Se a definição da tabela contiver letras maiúsculas, você receberá a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”.

## Usar o console do S3 e o Amazon Athena
<a name="query-table-console"></a>

O procedimento a seguir usa o console do Amazon S3 para acessar o editor de consultas do Athena e possibilitar que você consulte uma tabela com o Amazon Athena. 

**nota**  
Antes de realizar as etapas a seguir, integre os buckets de tabela aos serviços de analytics da AWS nessa região. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

**Como consultar uma tabela**

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 contém a tabela que você deseja consultar.

1. Na página de detalhes do bucket, escolha o botão de opção ao lado do nome da tabela que você deseja consultar. 

1. Escolha **Consultar tabela com o Athena**.

1. O console do Amazon Athena é aberto e o editor de consultas do Athena aparece com uma amostra de consulta `SELECT` carregada para você. Modifique essa consulta conforme necessário para seu caso de uso.

   No editor de consultas, o campo **Catálogo** deve ser preenchido com **s3tablescatalog/** seguido do nome do bucket de tabela; por exemplo, **s3tablescatalog/*amzn-s3-demo-bucket***. O campo **Banco de dados** deve ser preenchido com o namespace em que a tabela está armazenada. 
**nota**  
Caso não veja esses valores nos campos **Catálogo** e **Banco de dados**, verifique se você integrou os buckets de tabela aos serviços de analytics da AWS nessa região. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md). 

1. Para executar a consulta, escolha **Run** (Executar).
**nota**  
Se você receber o erro “Insufficient permissions to execute the query. Principal does not have any privilege on specified resource” ao tentar executar uma consulta no Athena, você deverá receber as permissões necessárias do Lake Formation na tabela. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](grant-permissions-tables.md#grant-lf-table).
Se você receber o erro “Iceberg cannot access the requested resource” ao tentar executar a consulta, acesse o console do AWS Lake Formation e verifique se você se autoconcedeu permissões no catálogo do bucket de tabela e no banco de dados (namespace) que criou. Não especifique uma tabela ao conceder essas permissões. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](grant-permissions-tables.md#grant-lf-table). 
Se você receber a seguinte mensagem de erro ao executar uma consulta `SELECT` no Athena, isso significa que o nome da tabela ou os nomes de coluna na definição da tabela contêm letras maiúsculas: “GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names”. Os nomes de tabela e de coluna devem estar todos em minúsculas.

# Acessar tabelas do Amazon S3 com o Amazon Redshift
<a name="s3-tables-integrating-redshift"></a>

O Amazon Redshift é um serviço de data warehouse rápido, totalmente gerenciado e em escala de petabytes que torna simples e econômica a análise eficiente de todos os seus dados usando as ferramentas de business intelligence existentes. O Redshift sem servidor permite acessar e analisar dados sem precisar de todas as configurações de um data warehouse provisionado. Para ter mais informações, consulte [Conceitos básicos de data warehouses de tecnologia sem servidor](https://docs.aws.amazon.com//redshift/latest/gsg/new-user-serverless.html) no *Guia de conceitos básicos do Amazon Redshift*.

## Consultar tabelas do Amazon S3 com o Amazon Redshift
<a name="rs-query-table"></a>

**Pré-requisitos**
+ [Integre os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md).
  + [Crie um namespace ](s3-tables-namespace-create.md).
  + [Criar uma tabela](s3-tables-create.md).
+ [Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation](grant-permissions-tables.md).

Depois de concluir os pré-requisitos, você poderá começar a usar o Amazon Redshift para consultar tabelas de uma das seguintes maneiras:
+ [Usando o Editor de Consultas V2 do Amazon Redshift2](https://docs.aws.amazon.com//redshift/latest/mgmt/query-editor-v2.html)
+ [Conectando-se a um data warehouse do Amazon Redshift usando ferramentas de cliente SQL](https://docs.aws.amazon.com//redshift/latest/mgmt/connecting-to-cluster.html)
+ [Usar a API de dados do Amazon Redshift](https://docs.aws.amazon.com//redshift/latest/mgmt/data-api.html)

# Acessar tabelas do Amazon S3 com o Amazon EMR
<a name="s3-tables-integrating-emr"></a>

O Amazon EMR (anteriormente chamado de Amazon Elastic MapReduce) é uma plataforma de cluster gerenciada que simplifica a execução de frameworks de big data, como o Apache Hadoop e Apache Spark, na AWS para processar e analisar grandes quantidades de dados. Ao usar essas estruturas e projetos de código aberto relacionados, é possível processar dados para finalidades de analytics e workloads de inteligência de negócios. O Amazon EMR também permite transformar e mover grandes volumes de dados para dentro e para fora de outros datastores e bancos de dados da AWS.

Você pode usar clusters do Apache Iceberg no Amazon EMR para trabalhar com tabelas do S3, conectando-se a buckets de tabela em uma sessão do Spark. Para se conectar aos buckets de tabela no Amazon EMR, é possível usar a integração de serviços de analytics da AWS por meio do AWS Glue Data Catalog, ou você pode usar o catálogo de cliente de código aberto do Catálogo de Tabelas do Amazon S3 para Apache Iceberg.

**nota**  
A funcionalidade Tabelas do S3 é compatível com o [Amazon EMR versão 7.5](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html) ou superior.

## Conectar-se a buckets de tabela do S3 com o Spark em um cluster do Iceberg no Amazon EMR
<a name="emr-setup-cluster-spark"></a>

Neste procedimento, você configura um cluster do Amazon EMR definido para Apache Iceberg, depois inicializa uma sessão do Spark que se conecta aos buckets de tabela. É possível configurar isso usando os serviços de analytics da AWS por meio do AWS Glue, ou você pode usar o catálogo de cliente de código aberto do Catálogo de Tabelas do Amazon S3 para Apache Iceberg. Para ter mais informações sobre o catálogo de cliente, consulte [Acessar tabelas usando o endpoint Iceberg REST do serviço Tabelas do Amazon S3](s3-tables-integrating-open-source.md). 

Escolha um método de uso de tabelas com o Amazon EMR entre as opções a seguir.

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

Os pré-requisitos a seguir se aplicam para consultar tabelas com o Spark no Amazon EMR usando o Catálogo de Tabelas do Amazon S3 para Apache Iceberg.

Para obter a versão mais recente do JAR do catálogo de cliente, consulte o [repositório s3-tables-catalog do GitHub](https://github.com/awslabs/s3-tables-catalog).

**Pré-requisitos**
+ Anexe a política `AmazonS3TablesFullAccess` ao perfil do IAM que você usa para o Amazon EMR.

**Como configurar um cluster do Amazon EMR para consultar tabelas com o Spark**

1. Crie um cluster com a configuração a seguir. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

   ```
   aws emr create-cluster --release-label emr-7.5.0 \
   --applications Name=Spark \
   --configurations file://configurations.json \
   --region us-east-1 \
   --name My_Spark_Iceberg_Cluster \
   --log-uri s3://amzn-s3-demo-bucket/ \
   --instance-type m5.xlarge \
   --instance-count 2 \
   --service-role EMR_DefaultRole \
   --ec2-attributes \
   
   InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0,KeyName=my-key-pair
   ```

   `configurations.json`:

   ```
   [{
   "Classification":"iceberg-defaults",
   "Properties":{"iceberg.enabled":"true"}
   }]
   ```

1. [Conecte-se ao nó primário do Spark usando SSH.](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-connect-master-node-ssh.html#emr-connect-cli)

1. Para inicializar uma sessão do Spark para o Iceberg que estabelece conexão com o bucket de tabela, insira o comando a seguir. Substitua o `user input placeholders` pelo ARN do bucket de tabela.

   ```
   spark-shell \
   --packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.8 \
   --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog \
   --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \
   --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \
   --conf spark.sql.defaultCatalog=s3tablesbucket \
   --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
   ```

1. Consulte as tabelas com Spark SQL. Para conferir exemplos, consulte [Consultar tabelas do S3 com o Spark SQL](s3-tables-client-catalog.md#query-with-spark).

------
#### [ AWS analytics services integration ]

Os pré-requisitos a seguir se aplicam para consultar tabelas com o Spark no Amazon EMR usando a integração de serviços de analytics da AWS.

**Pré-requisitos**
+ [Integre os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md).
+ Crie o perfil de serviço padrão para o Amazon EMR (`EMR_DefaultRole_V2`). Para conferir detalhes, consulte [Service role for Amazon EMR (EMR role)](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-iam-role.html).
+ Crie o perfil de instância do Amazon EC2 para o Amazon EMR (`EMR_EC2_DefaultRole`). Consulte detalhes em [Service role for cluster EC2 instances (EC2 instance profile)](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-iam-role-ec2.html). 
  + Anexe a política `AmazonS3TablesFullAccess` a `EMR_EC2_DefaultRole`.

**Como configurar um cluster do Amazon EMR para consultar tabelas com o Spark**

1. Crie um cluster com a configuração a seguir. Para usar esse exemplo, substitua os valores de `user input placeholder` por suas próprias informações.

   ```
   aws emr create-cluster --release-label emr-7.5.0 \
   --applications Name=Spark \
   --configurations file://configurations.json \
   --region us-east-1 \
   --name My_Spark_Iceberg_Cluster \
   --log-uri s3://amzn-s3-demo-bucket/ \
   --instance-type m5.xlarge \
   --instance-count 2 \
   --service-role EMR_DefaultRole \
   --ec2-attributes \
   
   InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0,KeyName=my-key-pair
   ```

   `configurations.json`:

   ```
   [{
   "Classification":"iceberg-defaults",
   "Properties":{"iceberg.enabled":"true"}
   }]
   ```

1. [Conecte-se ao nó primário do Spark usando SSH.](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-connect-master-node-ssh.html#emr-connect-cli)

1. Insira o comando a seguir para inicializar uma sessão do Spark para o Iceberg que estabelece conexão com as tabelas. Substitua os `user input placeholders` de região, ID da conta e nome do bucket de tabela por suas próprias informações.

   ```
   spark-shell \
   --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
   --conf spark.sql.defaultCatalog=s3tables \
   --conf spark.sql.catalog.s3tables=org.apache.iceberg.spark.SparkCatalog \
   --conf spark.sql.catalog.s3tables.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog \
   --conf spark.sql.catalog.s3tables.client.region=us-east-1 \
   --conf spark.sql.catalog.s3tables.glue.id=111122223333:s3tablescatalog/amzn-s3-demo-table-bucket
   ```

1. Consulte as tabelas com Spark SQL. Para conferir exemplos, consulte [Consultar tabelas do S3 com o Spark SQL](s3-tables-client-catalog.md#query-with-spark).

------

**nota**  
Se você estiver usando o comando `DROP TABLE PURGE` com o Amazon EMR:  
Amazon EMR versão 7.5  
Defina a configuração `spark.sql.catalog.your-catalog-name.cache-enabled` do Spark como `false`. Se essa configuração estiver definida como `true`, execute o comando em uma nova sessão ou aplicação para que o cache da tabela não seja ativado.
Amazon EMR versões posteriores a 7.5  
`DROP TABLE`Não há suporte ao . É possível usar a API REST `DeleteTable` de Tabelas do S3 para excluir uma tabela.

# Visualizar dados de tabela com o Quick
<a name="s3-tables-integrating-quicksight"></a>

O Quick é um serviço rápido de analytics de negócios para criar visualizações, executar analytics ad hoc e extrair insights dos dados rapidamente. O Quick detecta facilmente fontes de dados da AWS, permite que as organizações escalem para centenas de milhares de usuários e oferece um desempenho de consulta rápido e responsivo por meio do SPICE (mecanismo de cálculo super-rápido, paralelo e na memória) do Quick. Para ter mais informações, consulte [O que é o Quick?](https://docs.aws.amazon.com//quicksight/latest/user/welcome.html) no *Guia do usuário do Quick Suite*.

Depois de [integrar os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md), você pode criar conjuntos de dados com base nas tabelas e trabalhar com eles no Quick usando o SPICE ou consultas SQL diretas do mecanismo de consulta. O Quick permite usar o Athena como fonte de dados para tabelas do S3.

## Configurar permissões para que o Quick acesse tabelas
<a name="quicksight-permissions-tables"></a>

Antes de trabalhar com dados de tabela do S3 no Quick, é necessário conceder permissões ao perfil de serviço e ao usuário administrador do Quick e conceder permissões do Lake Formation nas tabelas que você deseja acessar.

**Conceder permissões ao perfil de serviço do Quick**

Ao configurar o Quick pela primeira vez na conta, a AWS cria um perfil de serviço que permite que o Quick acesse fontes de dados em outros serviços da AWS, como Athena ou Amazon Redshift. O nome de perfil padrão é `aws-quicksight-service-role-v0`.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Escolha **Perfis** e selecione o perfil de serviço do Quick. O nome padrão é `aws-quicksight-service-role-v0`.

1. Selecione **Adicionar permissões** e, em seguida, **Criar política em linha**.

1. Selecione **JSON** para abrir o editor de políticas JSON, depois adicione a política a seguir.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": "glue:GetCatalog",
         "Resource": "*"
       }
     ]
   }
   ```

------

1. Selecione **Próximo**, insira um **Nome da política** e escolha **Criar política**.

**Como configurar permissões para o usuário administrador do Quick**

1. Execute o comando da AWS CLI a seguir para localizar o ARN do usuário administrador do Quick.

   ```
   aws quicksight list-users --aws-account-id 111122223333 --namespace default --region region
   ```

1. Conceda permissões do Lake Formation a esse ARN. Para obter detalhes, consulte [Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation](grant-permissions-tables.md).

## Usar dados de tabela no Quick
<a name="quicksight-connect-tables"></a>

Você pode se conectar aos dados da tabelas usando o Athena como fonte de dados.

**Pré-requisitos**
+ [Integre os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md).
  + [Crie um namespace ](s3-tables-namespace-create.md).
  + [Criar uma tabela](s3-tables-create.md).
  + [Configurar permissões para que o Quick acesse tabelas](#quicksight-permissions-tables).
+ [Inscreva-se no Quick](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html).

1. Faça login na sua conta do Quick em [https://quicksight.aws.amazon.com/](https://quicksight.aws.amazon.com/.).

1. No painel, escolha **Nova análise**.

1. Escolha **Novo conjunto de dados**.

1. Selecione **Athena**.

1. Insira um **Nome da fonte de dados** e escolha **Criar fonte de dados**.

1. Escolha Usar SQL personalizado. Você não poderá selecionar a tabela no painel **Escolher sua tabela**. 

1. Insira uma consulta SQL do Athena que capture as colunas que você deseja visualizar e escolha **Confirmar consulta**. Por exemplo, use a seguinte consulta para selecionar todas as colunas:

   ```
   SELECT * FROM "s3tablescatalog/table-bucket-name".namespace.table-name
   ```

1. Escolha **Visualizar** para analisar os dados e começar a criar painéis. Para ter mais informações, consulte [Visualizar dados no Quick](https://docs.aws.amazon.com//quicksight/latest/user/working-with-visuals.html) e [Explorar painéis interativos no Quick](https://docs.aws.amazon.com//quicksight/latest/user/using-dashboards.html).

# Fazer streaming de dados para tabelas com o Amazon Data Firehose
<a name="s3-tables-integrating-firehose"></a>

O Amazon Data Firehose é um serviço totalmente gerenciado para entrega de [dados de streaming](https://aws.amazon.com//streaming-data/) em tempo real a determinados destinos, como Amazon S3, Amazon Redshift, Amazon OpenSearch Service, Splunk, Tabelas do Apache Iceberg e endpoints HTTP personalizados ou endpoints HTTP pertencentes a provedores de serviços de terceiros compatíveis. Com o Amazon Data Firehose, você não precisa escrever aplicações nem gerenciar recursos. Configure os produtores de dados para enviar dados ao Firehose e ele entregará automaticamente os dados ao destino especificado. Você também pode configurar o Firehose para transformar os dados antes de entregá-los. Consulte mais informações sobre o Amazon Data Firehose em [What is Amazon Data Firehose?](https://docs.aws.amazon.com//firehose/latest/dev/what-is-this-service.html).

Esse é o método de acesso para trabalhar com o serviço Tabelas do S3.

1.  [Integre os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md). 

1. Configure o Firehose para entregar dados nas tabelas do S3. Para fazer isso, [crie um perfil de serviço do AWS Identity and Access Management (IAM) que permita que o Firehose acesse suas tabelas](#firehose-role-s3tables).

1. Conceda ao perfil de serviço do Firehose permissões explícitas referentes á tabela ou ao namespace da tabela. Para ter mais informações, consulte [Conceder permissões do Lake Formation nos recursos de tabela](grant-permissions-tables.md).

1. [Crie um fluxo do Firehose que encaminhe os dados para a tabela.](#firehose-stream-tables)

## Criar um perfil para o Firehose usar tabelas do S3 como destino
<a name="firehose-role-s3tables"></a>

O Firehose precisa de um [perfil de serviço](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-service.html) do IAM com permissões específicas para acessar tabelas do AWS Glue e gravar dados nas tabelas do S3. É necessário fornecer esse perfil do IAM ao criar um fluxo do Firehose.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Políticas**.

1. Escolha **Criar uma política** e selecione **JSON** no editor de políticas.

1. Adicione a seguinte política em linha que concede permissões a todos os bancos de dados e tabelas no catálogo de dados. Se você quiser, poderá conceder permissões somente para tabelas e bancos de dados específicos. Para usar essa política, substitua os `user input placeholders` por suas próprias informações.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3TableAccessViaGlueFederation",
               "Effect": "Allow",
               "Action": [
                   "glue:GetTable",
                   "glue:GetDatabase",
                   "glue:UpdateTable"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/*",
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog",
                   "arn:aws:glue:us-east-1:111122223333:catalog",
                   "arn:aws:glue:us-east-1:111122223333:database/*",
                   "arn:aws:glue:us-east-1:111122223333:table/*/*"
               ]
           },
           {
               "Sid": "S3DeliveryErrorBucketPermission",
               "Effect": "Allow",
               "Action": [
                   "s3:AbortMultipartUpload",
                   "s3:GetBucketLocation",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:ListBucketMultipartUploads",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::error delivery bucket",
                   "arn:aws:s3:::error delivery bucket/*"
               ]
           },
           {
               "Sid": "RequiredWhenUsingKinesisDataStreamsAsSource",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStream",
                   "kinesis:GetShardIterator",
                   "kinesis:GetRecords",
                   "kinesis:ListShards"
               ],
               "Resource": "arn:aws:kinesis:us-east-1:111122223333:stream/stream-name"
           },
           {
               "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation",
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           },
           {
               "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery",
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": [
                   "arn:aws:kms:us-east-1:111122223333:key/KMS-key-id"
               ],
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "s3.us-east-1.amazonaws.com"
                   },
                   "StringLike": {
                       "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::error delivery bucket/prefix*"
                   }
               }
           },
           {
               "Sid": "LoggingInCloudWatch",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:log-group-name:log-stream:log-stream-name"
               ]
           },
           {
               "Sid": "RequiredWhenAttachingLambdaToFirehose",
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction",
                   "lambda:GetFunctionConfiguration"
               ],
               "Resource": [
                   "arn:aws:lambda:us-east-1:111122223333:function:function-name:function-version"
               ]
           }
       ]
   }
   ```

------

   A política tem uma instrução que permite acesso ao Kinesis Data Streams, invocando funções do Lambda e acesso a chaves do AWS KMS. Se você não usar nenhum desses recursos, poderá remover as respectivas declarações.

   Se o registro de erros em log estiver habilitado, o Firehose também enviará erros de entrega de dados para seu grupo de logs e fluxos do CloudWatch. Para isso, é necessário configurar os nomes do grupo de logs e do fluxo de logs. Para os nomes do grupo de logs e do fluxo de logs, consulte [Monitor Amazon Data Firehose Using CloudWatch Logs](https://docs.aws.amazon.com//firehose/latest/dev/controlling-access.html#using-iam-iceberg).

1. Depois de criar a política, crie um perfil do IAM com a opção **Serviço da AWS** como **Tipo de entidade confiável**.

1. Em **Serviço ou Caso de Uso**, escolha **Kinesis**. Em **Caso de uso**, escolha **Kinesis Firehose**.

1. Selecione **Próximo** e escolha a política que você criou anteriormente.

1. Dê um nome à sua função. Revise os detalhes do perfil e escolha **Criar perfil**. O perfil terá a política de confiança a seguir.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Principal": {
                   "Service": [
                       "firehose.amazonaws.com"
                   ]
               }
           }
       ]
   }
   ```

------

## Configurar um fluxo do Firehose para tabelas do S3
<a name="firehose-stream-tables"></a>

O procedimento a seguir mostra como criar um fluxo do Firehose para entregar dados às tabelas do S3 usando o console. Os pré-requisitos a seguir são necessários para configurar um fluxo do Firehose para tabelas do S3.

**Pré-requisitos**
+ [Integre os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md).
  + [Crie um namespace ](s3-tables-namespace-create.md).
  + [Criar uma tabela](s3-tables-create.md).
+ Crie o [perfil para que o Firehose acesse as tabelas do S3](#firehose-role-s3tables).
+ [Conceda permissões do Lake Formation](grant-permissions-tables.md) ao perfil de serviço do Firehose que você criou para acessar tabelas.

Para fornecer informações de roteamento ao Firehose ao configurar um fluxo, use namespace como o nome do banco de dados e o nome de uma tabela nesse namespace. Você pode usar esses valores na seção “Chave exclusiva” de uma configuração de fluxo do Firehose a fim de rotear dados para uma única tabela. Você também pode usar esses valores a fim de rotear para uma tabela usando expressões de consulta JSON. Para ter mais informações, consulte [Route incoming records to a single Iceberg table](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-format-input-record.html). 

**Como configurar um fluxo do Firehose para tabelas do S3 (console)**

1. Abra o console do Firehose em [https://console.aws.amazon.com/firehose/](https://console.aws.amazon.com/firehose/).

1. Escolha **Criar fluxo do Firehose**.

1. Em **Origem**, escolha uma das seguinte opções:
   + Amazon Kinesis Data Streams
   + Amazon MSK
   + PUT direto

1. Em **Destino**, selecione **Tabelas do Apache Iceberg**.

1. Insira um **Nome do fluxo do Firehose**.

1. Defina as **Configurações da origem**.

1. Em **Configurações de destino**, escolha **Conta atual** para transmitir para tabelas em sua conta ou **Entre contas** para tabelas em outra conta.
   + Para tabelas na **Conta atual**, selecione o Catálogo de Tabelas do S3 no menu suspenso **Catálogo**.
   + Para tabelas **Entre contas**, insira o **ARN do catálogo** para o qual você deseja transmitir em outra conta.

1. Configure os nomes do banco de dados e da tabela usando a **Configuração de chave exclusiva**, expressões JSONQuery ou em uma função do Lambda. Consulte mais informações em [Route incoming records to a single Iceberg table](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-format-input-record.html) e [Route incoming records to different Iceberg tables](https://docs.aws.amazon.com//firehose/latest/dev/apache-iceberg-format-input-record-different.html) no *Guia do desenvolvedor do Amazon Data Firehose*.

1. Em **Configurações de backup**, especifique um **Bucket de backup do S3**.

1. Em **Funções do IAM existentes** na seção **Configurações avançadas**, selecione o perfil do IAM que você criou para o Firehose.

1. Escolha **Criar fluxo do Firehose**.

Consulte mais informações sobre as outras configurações que você pode definir para um fluxo em [Set up the Firehose stream](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-stream.html) no *Guia do desenvolvedor do Amazon Data Firehose*.

# Executar trabalhos de ETL em tabelas do Amazon S3 com o AWS Glue
<a name="s3-tables-integrating-glue"></a>

AWS GlueO é um serviço de integração de dados com tecnologia sem servidor que facilita aos usuários de analytics a descoberta, preparação, transferência e integração de dados de várias fontes. Você pode usar os trabalhos do AWS Glue para executar pipelines de extração, transformação e carregamento (ETL) a fim de carregar dados em data lakes. Para obter mais informações sobre o AWS Glue, consulte [O que é o AWS Glue?](https://docs.aws.amazon.com//glue/latest/dg/what-is-glue.html) no *Guia do desenvolvedor do AWS Glue*.

Um trabalho do AWS Glue encapsula um script que se conecta aos dados de origem, os processa e, depois, os grava no destino de dados. Normalmente, um trabalho executa scripts de extração, transformação e carga (ETL). Os trabalhos podem executar scripts projetados para os ambientes de runtime do Apache Spark. É possível monitorar trabalhos para entender as métricas do runtime, status de conclusão, duração e hora de início.

Você pode usar trabalhos do AWS Glue para processar dados em nas tabelas do S3 conectando-se às suas tabelas por meio da integração com serviços de analytics da AWS ou conectando-se diretamente por meio do endpoint Iceberg REST da funcionalidade Tabelas do Amazon S3 ou do Catálogo de Tabelas do Amazon S3 para Apache Iceberg. Este guia aborda as etapas básicas para começar a usar o AWS Glue com a funcionalidade Tabelas do S3, incluindo:

**Topics**
+ [

## Etapa 1: pré-requisitos
](#glue-etl-prereqs)
+ [

## Etapa 2: criar um script para se conectar a buckets de tabela
](#glue-etl-script)
+ [

## Etapa 3: criar um trabalho do AWS Glue que consulte tabelas
](#glue-etl-job)

Escolha o método de acesso com base em seus requisitos específicos de trabalho de ETL do AWS Glue:
+ **Integração de serviços de analytics da AWS (recomendado)**: recomendado quando você precisa de gerenciamento centralizado de metadados em vários serviços de analytics da AWS, precisa usar as permissões existentes do Catálogo de Dados do AWS Glue e de um controle de acesso refinado com o Lake Formation ou está criando pipelines de ETL de produção que se integram a outros serviços da AWS, como o Athena ou o Amazon EMR.
+ **Endpoint Iceberg REST da funcionalidade Tabelas do Amazon S3**: recomendado quando você precisa se conectar a tabelas do S3 por meio de mecanismos de consulta de terceiros compatíveis com o Apache Iceberg, criar aplicações de ETL personalizadas que necessitem de acesso direto à API REST ou controlar operações de catálogo que não tenham dependências em relação ao Catálogo de Dados do AWS Glue.
+ **Catálogo de Tabelas do Amazon S3 para o Apache Iceberg**: use somente para aplicações legadas ou cenários programáticos específicos que exijam a biblioteca de cliente Java. Esse método não é recomendado para novas implementações de trabalhos de ETL do AWS Glue devido à maior complexidade e ao gerenciamento adicional de dependências do `JAR`.

**nota**  
A funcionalidade Tabelas do S3 é compatível com o [AWS Glue versão 5.0 ou superior](https://docs.aws.amazon.com//glue/latest/dg/release-notes.html).

## Etapa 1: pré-requisitos
<a name="glue-etl-prereqs"></a>

Antes de consultar tabelas de um trabalho do AWS Glue, configure um perfil do IAM que o AWS Glue possa usar para executar o trabalho. Escolha seu método de acesso para ver os pré-requisitos específicos desse método.

------
#### [ AWS analytics services integration (Recommended) ]

Pré-requisitos para usar a integração de analytics da AWS à funcionalidade Tabelas do S3 e executar trabalhos do AWS Glue.
+ [Integre os buckets de tabela aos serviços de analytics da AWS](s3-tables-integrating-aws.md).
+ [Crie um perfil do IAM para o AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/create-an-iam-role.html).
  + Anexe a política gerenciada `AmazonS3TablesFullAccess` à função.
  + Anexe a política gerenciada `AmazonS3FullAccess` à função.

------
#### [ Amazon S3 Tables REST do Iceberg endpoint ]

Pré-requisitos para usar o endpoint Iceberg REST da funcionalidade Tabelas do Amazon S3 e executar trabalhos de ETL do AWS Glue.
+ [Crie um perfil do IAM para o AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/create-an-iam-role.html).
  + Anexe a política gerenciada `AmazonS3TablesFullAccess` à função.
  + Anexe a política gerenciada `AmazonS3FullAccess` à função.

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

Pré-requisitos para usar o Catálogo de Tabelas do Amazon S3 para o Apache Iceberg e executar trabalhos de ETL do AWS Glue.
+ [Crie um perfil do IAM para o AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/create-an-iam-role.html).
  + Anexe a política gerenciada `AmazonS3TablesFullAccess` à função.
  + Anexe a política gerenciada `AmazonS3FullAccess` à função.
  + Para usar o Catálogo de Tabelas do Amazon S3 para o Apache Iceberg, você precisa baixar o JAR do catálogo de cliente e carregá-lo em um bucket do S3.

****Baixar o do catálogo JAR****

    1. Verifique a versão mais recente no [Maven Central](https://mvnrepository.com/artifact/software.amazon.s3tables/s3-tables-catalog-for-iceberg-runtime). Você pode fazer download do JAR pelo Maven Central usando um navegador ou o comando a seguir. Substitua o *número da versão* pela versão mais recente.

       ```
       wget https://repo1.maven.org/maven2/software/amazon/s3tables/s3-tables-catalog-for-iceberg-runtime/0.1.5/s3-tables-catalog-for-iceberg-runtime-0.1.5.jar                       
       ```

    1. Faça upload do JAR baixado para um bucket do S3 que o perfil do IAM do AWS Glue possa acessar. Você pode usar o comando da AWS CLI a seguir para fazer upload do JAR. Substitua o *número da versão* pela versão mais recente e o *nome do bucket* e o *caminho* por suas próprias informações.

       ```
       aws s3 cp s3-tables-catalog-for-iceberg-runtime-0.1.5.jar s3://amzn-s3-demo-bucket/jars/
       ```

------

## Etapa 2: criar um script para se conectar a buckets de tabela
<a name="glue-etl-script"></a>

Para acessar os dados da tabela ao executar um trabalho de ETL do AWS Glue, configure uma sessão do Spark para o Apache Iceberg que estabeleça conexão com o bucket de tabela do S3. Você pode modificar um script existente para se conectar ao bucket de tabela ou criar um script. Para ter mais informações sobre como criar scripts do AWS Glue, consulte [Tutorial: gravar um script do AWS Glue para Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) no *Guia do desenvolvedor do AWS Glue*.

Também é possível configurar a sessão para se conectar aos buckets de tabela por meio de qualquer um dos seguintes métodos de acesso à funcionalidade Tabelas do S3:
+ Integração entre a funcionalidade Tabelas do S3 e serviços de analytics da AWS (recomendado)
+ Endpoint Iceberg REST da funcionalidade Tabelas do Amazon S3
+ Catálogo de Tabelas do Amazon S3 para Apache Iceberg

Escolha um dos métodos de acesso a seguir para ver instruções de configuração e exemplos de configuração.

------
#### [ AWS analytics services integration (Recommended) ]

Um dos pré-requisitos para consultar tabelas com o Spark no AWS Glue usando a integração de serviços de analytics da AWS é [integrar os buckets de tabela a serviços de analytics da AWS](s3-tables-integrating-aws.md)

Você pode configurar a conexão com seu bucket de tabela por meio de uma sessão do Spark em um trabalho ou com mágicas do AWS Glue Studio em uma sessão interativa. Para usar os exemplos a seguir, substitua os *valores de espaço reservado* pelas informações do seu bucket de tabela.

**Usar um script do PySpark**  
Use o trecho de código a seguir em um script do PySpark para configurar um trabalho do AWS Glue e se conectar ao seu bucket de tabela usando a integração.  

```
spark = SparkSession.builder.appName("SparkIcebergSQL") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog","s3tables") \
    .config("spark.sql.catalog.s3tables", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tables.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \
    .config("spark.sql.catalog.s3tables.glue.id", "111122223333:s3tablescatalog/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3tables.warehouse", "s3://amzn-s3-demo-table-bucket/warehouse/") \
    .getOrCreate()
```

**Usar de uma sessão interativa do AWS Glue**  
Se você estiver usando uma sessão interativa de caderno com o AWS Glue 5.0, especifique as mesmas configurações usando a mágica do `%%configure` em uma célula antes da execução do código.  

```
%%configure
{"conf": "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.defaultCatalog=s3tables --conf spark.sql.catalog.s3tables=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.s3tables.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.s3tables.glue.id=111122223333:s3tablescatalog/amzn-s3-demo-table-bucket --conf spark.sql.catalog.s3tables.warehouse=s3://amzn-s3-demo-table-bucket/warehouse/"}
```

------
#### [ Amazon S3 Tables REST do Iceberg endpoint ]

Você pode configurar a conexão com seu bucket de tabela por meio de uma sessão do Spark em um trabalho ou com mágicas do AWS Glue Studio em uma sessão interativa. Para usar os exemplos a seguir, substitua os *valores de espaço reservado* pelas informações do seu bucket de tabela.

**Usar um script do PySpark**  
Use o trecho de código a seguir em um script do PySpark para configurar um trabalho do AWS Glue e se conectar ao seu bucket de tabela usando o endpoint.   

```
spark = SparkSession.builder.appName("glue-s3-tables-rest") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3_rest_catalog") \
    .config("spark.sql.catalog.s3_rest_catalog", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3_rest_catalog.type", "rest") \
    .config("spark.sql.catalog.s3_rest_catalog.uri", "https://s3tables.Region.amazonaws.com/iceberg") \
    .config("spark.sql.catalog.s3_rest_catalog.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.sigv4-enabled", "true") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-name", "s3tables") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-region", "Region") \
    .config('spark.sql.catalog.s3_rest_catalog.io-impl','org.apache.iceberg.aws.s3.S3FileIO') \
    .config('spark.sql.catalog.s3_rest_catalog.rest-metrics-reporting-enabled','false') \
    .getOrCreate()
```

**Usar de uma sessão interativa do AWS Glue**  
Se você estiver usando uma sessão interativa de caderno com o AWS Glue 5.0, especifique as mesmas configurações usando a mágica do `%%configure` em uma célula antes da execução do código. Substitua os valores de espaços reservados pelas informações do seu próprio bucket de tabela.  

```
%%configure
{"conf": "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.defaultCatalog=s3_rest_catalog --conf spark.sql.catalog.s3_rest_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.s3_rest_catalog.type=rest --conf spark.sql.catalog.s3_rest_catalog.uri=https://s3tables.Region.amazonaws.com/iceberg --conf spark.sql.catalog.s3_rest_catalog.warehouse=arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket --conf spark.sql.catalog.s3_rest_catalog.rest.sigv4-enabled=true --conf spark.sql.catalog.s3_rest_catalog.rest.signing-name=s3tables --conf spark.sql.catalog.s3_rest_catalog.rest.signing-region=Region --conf spark.sql.catalog.s3_rest_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.catalog.s3_rest_catalog.rest-metrics-reporting-enabled=false"}
```

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

Um pré-requisito para se conectar a tabelas usando o Catálogo de Tabelas do Amazon S3 para Apache Iceberg é primeiro baixar o JAR do catálogo mais recente e carregá-lo em um bucket do S3. Em seguida, ao criar seu trabalho, adicione o caminho para o JAR do catálogo de cliente como um parâmetro especial. Para ter mais informações sobre parâmetros de trabalho no AWS Glue, consulte [Special parameters used in AWS Glue jobs](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html) no *Guia do desenvolvedor do AWS Glue*.

Você pode configurar a conexão com seu bucket de tabela por meio de uma sessão do Spark em um trabalho ou com mágicas do AWS Glue Studio em uma sessão interativa. Para usar os exemplos a seguir, substitua os *valores de espaço reservado* pelas informações do seu bucket de tabela.

**Usar um script do PySpark**  
Use o trecho de código a seguir em um script do PySpark para configurar um trabalho do AWS Glue e se conectar ao seu bucket de tabela usando o JAR. Substitua os valores de espaços reservados pelas informações do seu próprio bucket de tabela.  

```
spark = SparkSession.builder.appName("glue-s3-tables") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3tablesbucket") \
    .config("spark.sql.catalog.s3tablesbucket", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.catalog-impl", "software.amazon.s3tables.iceberg.S3TablesCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .getOrCreate()
```

**Usar de uma sessão interativa do AWS Glue**  
Se você estiver usando uma sessão interativa de caderno com o AWS Glue 5.0, especifique as mesmas configurações usando a mágica do `%%configure` em uma célula antes da execução do código. Substitua os valores de espaços reservados pelas informações do seu próprio bucket de tabela.  

```
%%configure
{"conf": "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.defaultCatalog=s3tablesbucket --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket", "extra-jars": "s3://amzn-s3-demo-bucket/jars/s3-tables-catalog-for-iceberg-runtime-0.1.5.jar"}
```

------

### Scripts de amostra
<a name="w2aac20c25c31c19c13"></a>

Os scripts de exemplo do PySpark a seguir podem usados para testar a consulta de tabelas do S3 com um trabalho do AWS Glue. Esses scripts se conectam ao bucket de tabela e executam consultas para: criar um namespace, criar uma tabela de exemplo, inserir dados na tabela e retornar os dados da tabela. Para usar os script, substitua os *valores de espaço reservado* pelas informações do seu próprio bucket de tabela.

Escolha entre os scripts a seguir com base no seu método de acesso à funcionalidade Tabelas do S3.

------
#### [ S3 Tables integration with AWS analytics services ]

```
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("SparkIcebergSQL") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog","s3tables")
    .config("spark.sql.catalog.s3tables", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tables.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \
    .config("spark.sql.catalog.s3tables.glue.id", "111122223333:s3tablescatalog/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3tables.warehouse", "s3://amzn-s3-demo-table-bucket/bucket/amzn-s3-demo-table-bucket") \
    .getOrCreate()

namespace = "new_namespace"
table = "new_table"

spark.sql("SHOW DATABASES").show()

spark.sql(f"DESCRIBE NAMESPACE {namespace}").show()

spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {namespace}.{table} (
       id INT,
       name STRING,
       value INT
    )
""")

spark.sql(f"""
    INSERT INTO {namespace}.{table}
    VALUES 
       (1, 'ABC', 100),
       (2, 'XYZ', 200)
""")

spark.sql(f"SELECT * FROM {namespace}.{table} LIMIT 10").show()
```

------
#### [ Amazon S3 Tables REST do Iceberg endpoint ]

```
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("glue-s3-tables-rest") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3_rest_catalog") \
    .config("spark.sql.catalog.s3_rest_catalog", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3_rest_catalog.type", "rest") \
    .config("spark.sql.catalog.s3_rest_catalog.uri", "https://s3tables.Region.amazonaws.com/iceberg") \
    .config("spark.sql.catalog.s3_rest_catalog.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.sigv4-enabled", "true") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-name", "s3tables") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-region", "Region") \
    .config('spark.sql.catalog.s3_rest_catalog.io-impl','org.apache.iceberg.aws.s3.S3FileIO') \
    .config('spark.sql.catalog.s3_rest_catalog.rest-metrics-reporting-enabled','false') \
    .getOrCreate()

namespace = "s3_tables_rest_namespace"
table = "new_table_s3_rest"

spark.sql("SHOW DATABASES").show()

spark.sql(f"DESCRIBE NAMESPACE {namespace}").show()

spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {namespace}.{table} (
       id INT,
       name STRING,
       value INT
    )
""")

spark.sql(f"""
    INSERT INTO {namespace}.{table}
    VALUES 
       (1, 'ABC', 100),
       (2, 'XYZ', 200)
""")

spark.sql(f"SELECT * FROM {namespace}.{table} LIMIT 10").show()
```

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

```
from pyspark.sql import SparkSession

#Spark session configurations
spark = SparkSession.builder.appName("glue-s3-tables") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3tablesbucket") \
    .config("spark.sql.catalog.s3tablesbucket", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.catalog-impl", "software.amazon.s3tables.iceberg.S3TablesCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .getOrCreate()

#Script
namespace = "new_namespace"
table = "new_table"

spark.sql(f"CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.{namespace}")
spark.sql(f"DESCRIBE NAMESPACE {namespace}").show()

spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {namespace}.{table} (
       id INT,
       name STRING,
       value INT
    )
""")

spark.sql(f"""
    INSERT INTO {namespace}.{table}
    VALUES 
       (1, 'ABC', 100),
       (2, 'XYZ', 200)
""")

spark.sql(f"SELECT * FROM {namespace}.{table} LIMIT 10").show()
```

------

## Etapa 3: criar um trabalho do AWS Glue que consulte tabelas
<a name="glue-etl-job"></a>

Os procedimentos a seguir mostram como configurar trabalhos do AWS Glue que se conectam aos buckets de tabela do S3. Você pode fazer isso usando a AWS CLI ou usando o console com o editor de script do AWS Glue Studio. Para ter mais informações, consulte [Criar trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) no *Guia do usuário do AWS Glue*.

### Usar o editor de script do AWS Glue Studio
<a name="tables-glue-studio-job"></a>

O procedimento a seguir mostra como usar o editor de scripts do AWS Glue Studio para criar um trabalho de ETL que consulta as tabelas do S3.

**Pré-requisitos**
+ [Etapa 1: pré-requisitos](#glue-etl-prereqs)
+ [Etapa 2: criar um script para se conectar a buckets de tabela](#glue-etl-script)

1. Abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. No painel de navegação, escolha **Trabalhos de ETL**.

1. Escolha **Editor de scripts**, depois selecione **Fazer upload de script** e faça upload do script PySpark que você criou para consultar tabelas do S3.

1. Selecione a guia **Detalhes do trabalho** e insira as informações a seguir em **Propriedades básicas**.
   + Em **Nome**, insira um nome para o trabalho.
   + Em **Perfil do IAM**, selecione o perfil que você criou para o AWS Glue.

1. (Opcional) Se estiver usando o Catálogo de Tabelas do Amazon S3 para o método de acesso Apache Iceberg, expanda **Propriedades avançadas** e, em **Caminho de JARs dependentes**, insira o URI do S3 do JAR do catalogo de cliente client catalog jar que você carregou em um bucket do S3 como pré-requisito. Por exemplo, s3://*amzn-s3-demo-bucket1*/*jars*/s3-tables-catalog-for-iceberg-runtime-*0.1.5*.jar.

1. Selecione **Salvar** para criar o trabalho.

1. Escolha **Executar** para iniciar o trabalho e revise o status do trabalho na guia **Execuções**.

### Como usar o AWS CLI
<a name="tables-glue-cli-job"></a>

O procedimento a seguir mostra como usar a AWS CLI para criar um trabalho de ETL que consulta as tabelas do S3. Para usar os comandos, substitua os *valores de espaços reservados* por suas próprias informações.

**Pré-requisitos**
+ [Etapa 1: pré-requisitos](#glue-etl-prereqs)
+ [Etapa 2: criar um script para se conectar a buckets de tabela](#glue-etl-script) e faça upload dele em um bucket do S3.

1. Crie um trabalho do AWS Glue.

   ```
   aws glue create-job \
   --name etl-tables-job \
   --role arn:aws:iam::111122223333:role/AWSGlueServiceRole \
   --command '{
       "Name": "glueetl",
       "ScriptLocation": "s3://amzn-s3-demo-bucket1/scripts/glue-etl-query.py",
       "PythonVersion": "3"
   }' \
   --default-arguments '{
       "--job-language": "python",
       "--class": "GlueApp"
   }' \
   --glue-version "5.0"
   ```
**nota**  
(Opcional) Se você estiver usando o Catálogo de Tabelas do Amazon S3 para o método de acesso Apache Iceberg, adicione o JAR do catálogo de cliente a `--default-arguments` usando o parâmetro `--extra-jars`. Substitua os *espaços reservados de entrada* por suas próprias informações ao adicionar o parâmetro.  

   ```
                               "--extra-jars": "s3://amzn-s3-demo-bucket/jar-path/s3-tables-catalog-for-iceberg-runtime-0.1.5.jar" 
   ```

1. Inicie o trabalho.

   ```
   aws glue start-job-run \
   --job-name etl-tables-job
   ```

1. Para revisar o status do trabalho, copie o ID de execução do comando anterior e insira-o no comando a seguir.

   ```
   aws glue get-job-run --job-name etl-tables-job \
   --run-id jr_ec9a8a302e71f8483060f87b6c309601ea9ee9c1ffc2db56706dfcceb3d0e1ad
   ```

# Noções básicas sobre consultas à funcionalidade Tabelas do S3 com o Estúdio Unificado Amazon SageMaker
<a name="s3-tables-integrating-sagemaker"></a>

O Estúdio Unificado Amazon SageMaker é um abrangente serviço de analytics que permite consultar e extrair insights dos dados usando SQL, linguagem natural e cadernos interativos. Ele permite fluxos de trabalho de colaboração e análise em equipe em repositórios de dados da AWS e fontes de terceiros em uma interface unificada. O Estúdio Unificado SageMaker se integra diretamente à funcionalidade Tabelas do S3, fornecendo uma transição perfeita entre o armazenamento de dados e a análise no console do Amazon S3.

É possível integrar a funcionalidade Tabelas do S3 ao Estúdio Unificado SageMaker por meio do console do Amazon S3 ou do console do Estúdio Unificado SageMaker.

Para se informar sobre a configuração por meio do console do Estúdio Unificado SageMaker, consulte a [documentação do Estúdio Unificado SageMaker](https://docs.aws.amazon.com/next-generation-sagemaker/latest/userguide/s3-tables-integration.html).

## Requisitos para consultar a funcionalidade Tabelas do S3 com o Estúdio Unificado SageMaker
<a name="sagemaker-unified-studio-requirements"></a>

Para usar o Estúdio Unificado SageMaker com a funcionalidade Tabelas do S3, é necessário o seguinte:
+ Integrar os buckets de tabela aos serviços de analytics da AWS na região atual. Para obter mais informações, consulte [Integrar a funcionalidade Tabelas do S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).
+ Usar um perfil do IAM com permissões para criar e visualizar recursos no Estúdio Unificado SageMaker. Para ter mais informações, consulte [Configurar domínios baseados no IAM no Estúdio Unificado Amazon SageMaker](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/adminguide/setup-iam-based-domains.html).
+ Ter um domínio e um projeto do SageMaker. Para ter mais informações, consulte [Domínios](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/adminguide/working-with-domains.html) no *Guia do administrador do Estúdio Unificado Amazon SageMaker* e [Projetos](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/projects.html) no *Guia do usuário do Estúdio Unificado Amazon SageMaker*.

Se ainda não realizou essas ações ou criou esses recursos, a funcionalidade Tabelas do S3 pode concluir automaticamente essa configuração para a usar o Estúdio Unificado SageMaker para começar a consultar.

## Noções básicas sobre consultas à funcionalidade Tabelas do S3 com o Estúdio Unificado SageMaker
<a name="sagemaker-unified-studio-getting-started"></a>

1. 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 contém a tabela que você deseja consultar.

1. Na página de detalhes do bucket, selecione a tabela que você deseja consultar.

1. Selecione **Query** (Consultar). 

1. Em seguida, escolha **Tabela de consulta no SageMaker Unified Studio**.

   1. Se você já configurou o Estúdio Unificado SageMaker para suas tabelas, o console do Estúdio Unificado SageMaker será aberto para o Editor de Consultas com uma consulta `SELECT` de exemplo já carregada. Modifique essa consulta conforme necessário para seu caso de uso.

   1. Se você ainda não configurou o Estúdio Unificado SageMaker para a funcionalidade Tabelas do S3, uma página de configuração será exibida com uma única etapa para permitir a integração com serviços de analytics da AWS que integra suas tabelas a serviços como o Estúdio Unificado SageMaker. Essa etapa será executada automaticamente e uma página no console do Estúdio Unificado SageMaker será aberta com as seguintes opções para configurar sua conta para consultar a funcionalidade Tabelas do S3:

      1. Em **Configurar-se como administrador**, seu perfil do IAM federado atual é selecionado. Se seu perfil atual ainda não tiver as permissões necessárias, será necessário [configurar um domínio baseado no IAM no Estúdio Unificado SageMaker](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/adminguide/setup-iam-based-domains.html) e atribuir permissões ao perfil para poder fazer login no Estúdio Unificado SageMaker.

      1. Em **Dados do projeto e controle administrativo**, selecione **Criar automaticamente um perfil com as permissões necessárias** para criar automaticamente um perfil com as permissões necessárias ou selecione **Usar um perfil existente** e escolha um perfil. Se o perfil escolhido ainda não tiver as permissões necessárias, será necessário [configurar um domínio baseado no IAM no Estúdio Unificado SageMaker](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/adminguide/setup-iam-based-domains.html) e atribuir permissões ao perfil de execução de administrador para poder acessar dados no Estúdio Unificado SageMaker.

      1. Em **Criptografia de dados**, selecione **Usar chave de propriedade da AWS** para permitir que a AWS tenha propriedade sobre a chave e a gerencie em seu nome ou **Escolher outra chave do AWS AWS KMS (avançado)** para usar uma chave existente ou criar outra.

      1. Selecione **Configurar Estúdio Unificado SageMaker**.

      1. Em seguida, o console do Estúdio Unificado SageMaker é aberto para o Editor de Consultas com uma consulta `SELECT` de exemplo já carregada. Modifique essa consulta conforme necessário para seu caso de uso.

         No Editor de Consultas, o campo **Catálogo** deve ser preenchido com `s3tablescatalog/` seguido do nome do bucket de tabela; por exemplo `s3tablescatalog/amzn-s3-demo-table-bucket`. O campo **Banco de dados** é preenchido com o namespace em que a tabela está armazenada.

# Trabalhar com o Apache Iceberg V3
<a name="working-with-apache-iceberg-v3"></a>

O Apache Iceberg Versão 3 (V3), a versão mais recente da especificação de formato de tabela Apache Iceberg, introduz recursos avançados para criar data lakes em escala de petabytes com desempenho aprimorado e custos operacionais indiretos reduzidos. A V3 aborda gargalos de desempenho comuns encontrados na V2, principalmente em relação a atualizações em lote e exclusões de conformidade.

A AWS permite o uso de vetores de exclusão e linhagem de linha, conforme definido na especificação do Apache Iceberg Versão 3 (V3). Esses recursos estão disponíveis com o Apache Spark no [Amazon EMR 7.12](https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/iceberg-emr.html), no [ Glue ETL](https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/iceberg-glue.html), em [cadernos do Estúdio Unificado Amazon SageMaker](https://docs.aws.amazon.com/next-generation-sagemaker/) e em tabelas Apache Iceberg no [Catálogo de Dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html), inclusive na funcionalidade [Tabelas do Amazon S3](https://aws.amazon.com/s3/features/tables/).

## Recursos principais na V3
<a name="key-features-v3"></a>

Vetores de exclusão  
Substituem os arquivos de exclusão posicional da V2 por um formato binário eficiente armazenado como arquivos Puffin. Isso elimina a amplificação da gravação de atualizações aleatórias em lote e exclusões de conformidade segundo o RGPD, reduzindo significativamente os custos indiretos de manter os dados atualizados. As organizações que processam atualizações de alta frequência verão melhorias imediatas no desempenho de gravação e custos reduzidos de armazenamento com a diminuição do número de arquivos pequenos.

Linhagem de linha  
Permite o rastreamento preciso de alterações em nível de linha. Os sistemas subsequentes podem processar alterações de forma incremental, acelerando os pipelines de dados e reduzindo os custos de computação para fluxos de trabalho de captura de dados de alteração (CDC). Esse recurso integrado elimina a necessidade de implementações personalizadas de rastreamento de alterações.

## Compatibilidade da versão
<a name="version-compatibility"></a>

A V3 mantém a compatibilidade com versões anteriores de tabelas da V2. Os serviços da AWS aceitam tabelas da V2 e da V3 simultaneamente, permitindo que você:
+ Execute consultas em tabelas da V2 e da V3.
+ Atualize as tabelas existentes da V2 para a V3 sem reescrever dados.
+ Execute consultas de viagem no tempo que abrangem snapshots da V2 e da V3.
+ Use a evolução do esquema e o particionamento oculto nas versões de tabela.

**Importante**  
A V3 é uma atualização unidirecional. Depois que uma tabela é atualizada da V2 para a V3, não é possível fazer downgrade para a V2 por meio de operações padrão.

## Conceitos básicos da V3
<a name="getting-started-v3"></a>

### Pré-requisitos
<a name="prerequisites"></a>

Antes de trabalhar com tabelas da V3, verifique se você tem:
+ Uma conta da AWS com permissões apropriadas do IAM.
+ Acesso a um ou mais serviços de analytics da AWS (EMR, Glue, cadernos do Estúdio Unificado Amazon SageMaker ou Tabelas do S3).
+ Um bucket do S3 para armazenar dados e metadados de tabela.
+ Um bucket de tabela para começar a usar a funcionalidade Tabelas do S3 ou um bucket do S3 de uso geral se estiver criando sua própria infraestrutura Iceberg.
+ Catálogo do AWS Glue configurado.

### Criar tabelas da V3
<a name="creating-v3-tables"></a>

#### Criar outras tabelas da V3
<a name="creating-new-v3-tables"></a>

Para criar uma tabela do Iceberg V3, defina a propriedade de tabela format-version como 3.

**Usar o Spark SQL:**

```
CREATE TABLE IF NOT EXISTS myns.orders_v3 (  
    order_id bigint,  
    customer_id string,  
    order_date date,  
    total_amount decimal(10,2),  
    status string,  
    created_at timestamp  
)  
USING iceberg  
TBLPROPERTIES (  
    'format-version' = '3'  
)
```

#### Atualizar tabelas da V2 para a V3
<a name="upgrading-v2-to-v3"></a>

É possível atualizar tabelas existentes da V2 para a V3 atomicamente sem reescrever dados.

**Usar o Spark SQL:**

```
ALTER TABLE myns.existing_table  
SET TBLPROPERTIES ('format-version' = '3')
```

**Importante**  
A V3 é uma atualização unidirecional. Depois que uma tabela é atualizada da V2 para a V3, não é possível fazer downgrade para a V2 por meio de operações padrão.

**O que ocorre durante a atualização:**
+ Um novo snapshot de metadados é criado atomicamente.
+ Os arquivos de dados Parquet existentes são reutilizados.
+ Campos de linhagem de linha são adicionados aos metadados da tabela.
+ A compactação seguinte remove os arquivos de exclusão antigos da V2.
+ As novas modificações usam os arquivos de vetor de exclusão do V3.
+ A atualização não realiza um preenchimento histórico dos registros de rastreamento de alterações de linhagem de linha.

### Habilitar vetores de exclusão
<a name="enabling-deletion-vectors"></a>

Para utilizar vetores de exclusão para atualizações, exclusões e mesclagens, configure o modo de gravação.

**Usar o Spark SQL:**

```
ALTER TABLE myns.orders_v3  
SET TBLPROPERTIES ('format-version' = '3',  
                   'write.delete.mode' = 'merge-on-read',  
                   'write.update.mode' = 'merge-on-read',  
                   'write.merge.mode' = 'merge-on-read'  
                  )
```

Essas configurações garantem que as operações de atualização, exclusão e mesclagem criem arquivos de vetores de exclusão em vez de reescrever arquivos de dados inteiros.

### Utilizar a linhagem de linha para rastreamento de alterações
<a name="leveraging-row-lineage"></a>

A V3 adiciona automaticamente campos de metadados de linhagem de linha para rastrear alterações.

**Usar o Spark SQL:**

```
# Query with parameter value provided  
last_processed_sequence = 47  
  
SELECT   
    id,  
    data,  
    _row_id,  
    _last_updated_sequence_number  
FROM myns.orders_v3  
WHERE _last_updated_sequence_number > :last_processed_sequence
```

O campo \$1row\$1id identifica exclusivamente cada linha, enquanto \$1last\$1updated\$1sequence\$1number rastreia quando a linha foi modificada pela última vez. Use esses campos para:
+ Identificar as linhas alteradas para processamento incremental.
+ Rastrear a linhagem de dados para fins de conformidade.
+ Otimizar pipelines de CDC.
+ Reduzir os custos de computação processando somente as alterações.

## Práticas recomendadas para a V3
<a name="best-practices-v3"></a>

### Quando usar a V3
<a name="when-to-use-v3"></a>

Considere a possibilidade de fazer a atualização ou começar com a V3 quando:
+ Executar atualizações ou exclusões frequentes em lote.
+ Precisar atender a requisitos do RGPD ou de exclusão de conformidade.
+ Suas workloads envolverem atualizações e inserções de alta frequência.
+ Precisar de fluxos de trabalho de CDC eficientes.
+ Quiser reduzir os custos de armazenamento de arquivos pequenos.
+ Precisar de melhores recursos de rastreamento de alterações.

### Otimizar o desempenho de gravação
<a name="optimizing-write-performance"></a>
+ Habilite os vetores de exclusão para workloads que requerem muitas atualizações:

  ```
  SET TBLPROPERTIES (  
  'write.delete.mode' = 'merge-on-read',  
  'write.update.mode' = 'merge-on-read',  
  'write.merge.mode' = 'merge-on-read'  
  )
  ```
+ Configure tamanhos de arquivo apropriados:

  ```
  SET TBLPROPERTIES (  
  'write.target-file-size-bytes' = '536870912'  — 512 MB  
  )
  ```

### Otimizar o desempenho de leitura
<a name="optimizing-read-performance"></a>
+ Utilize a linhagem de linha para processamento incrementa.
+ Use a viagem no tempo para acessar dados históricos sem precisar copiar.
+ Habilite a coleta de estatísticas para melhorar o planejamento de consultas.

## Estratégia de migração
<a name="migration-strategy"></a>

Quando migrar da V2 para a V3:
+ Primeiro teste fora da produção: valide o processo de atualização e o desempenho.
+ Atualize durante períodos de baixa atividade: minimize o impacto nas operações simultâneas.
+ Monitore o desempenho inicial: acompanhe as métricas após a atualização.
+ Execute a compactação: consolide os arquivos excluídos após a atualização.
+ Atualize a documentação: evidencie os recursos da V3 na documentação da equipe.

## Considerações sobre compatibilidade
<a name="compatibility-considerations"></a>
+ Versões de mecanismo: garanta que todos os mecanismos que acessam a tabela sejam compatíveis com a V3.
+ Ferramentas de terceiros: verifique a compatibilidade com a V3 antes de atualizar.
+ Estratégia de backup: teste os procedimentos de recuperação baseados em snapshots.
+ Monitoramento: atualize os painéis de monitoramento para métricas específicas da V3.

## Solução de problemas
<a name="troubleshooting"></a>

### Problemas comuns
<a name="common-issues"></a>

Erro: “"format-version 3 is not supported”  
+ Verifique se a versão do mecanismo é compatível com a V3.

  O suporte à V3 para serviços da AWS é o seguinte:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/working-with-apache-iceberg-v3.html)
+ Verifique a compatibilidade do catálogo.
+ Garanta as versões mais recentes do serviço da AWS.

Degradação do desempenho após a atualização  
+ Verifique se não há falhas de compactação. Consulte [Registro e monitoramento para Tabelas do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-monitoring-overview.html) para ver mais detalhes.
+ Verifique se os vetores de exclusão estão habilitados. As seguintes propriedades devem estar definidas:

  ```
  SET TBLPROPERTIES (  
  'write.delete.mode' = 'merge-on-read',  
  'write.update.mode' = 'merge-on-read',  
  'write.merge.mode' = 'merge-on-read'  
  )
  ```
+ É possível verificar as propriedades da tabela com o seguinte código:

  ```
  DESCRIBE FORMATTED myns.orders_v3
  ```
+ Analise a estratégia de partição. O particionamento excessivo pode gerar arquivos pequenos. Execute a consulta abaixo para saber qual é o tamanho médio do arquivo para sua tabela:

  ```
  SELECT avg(file_size_in_bytes) as avg_file_size_bytes   
  FROM myns.orders_v3.files
  ```

Incompatibilidade com ferramentas de terceiros  
+ Verifique se a ferramenta é compatível com a especificação da V3.
+ Considere a possibilidade de manter tabelas da V2 para ferramentas não compatíveis.
+ Entre em contato com o fornecedor da ferramenta para se informar sobre o cronograma de suporte da V3.

### Receber ajuda
<a name="getting-help"></a>
+ AWS Support: entre em contato com o AWS Support para solução de problemas específicos do serviço.
+ Comunidade Apache Iceberg: Iceberg Slack.
+ Documentação da AWS: documentação de analytics da AWS.

## Preços
<a name="pricing"></a>
+ Amazon EMR: [preços de computação e armazenamento](https://aws.amazon.com/emr/pricing/).
+ [Preço do Amazon SageMaker](https://aws.amazon.com/sagemaker/pricing/)
+ AWS Glue: [preços de execução de trabalhos e do Catálogo de Dados](https://aws.amazon.com/glue/pricing/)
+ Tabelas do S3: [preços de armazenamento e solicitações](https://aws.amazon.com/s3/pricing/)

## Disponibilidade
<a name="availability"></a>

O suporte ao Apache Iceberg V3 está disponível em todas as regiões da AWS em que o Amazon EMR, o Catálogo de Dados do AWS Glue, o AWS Glue ETL e a funcionalidade Tabelas do S3 operam.

## Recursos adicionais
<a name="additional-resources"></a>
+ [Documentação do Apache Iceberg V3](https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/introduction.html)
+ [Práticas recomendadas de migração](https://aws.amazon.com/solutions/guidance/migrating-tabular-data-from-amazon-s3-to-s3-tables/)
+ [Guia de conceitos básicos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-getting-started.html)

# Replicar tabelas do S3
<a name="s3-tables-replication-tables"></a>

A funcionalidade Tabelas do Amazon S3 permite a replicação automática de tabelas Apache Iceberg armazenadas em buckets de tabela do Amazon S3. Os destinos de replicação podem estar na mesma região da AWS, em várias regiões da AWS, na mesma conta ou em outras contas da AWS. Ao configurar a replicação de tabelas, é possível manter réplicas somente leitura dos dados em vários locais. Você pode usar réplicas para aprimorar a disponibilidade dos dados, atender aos requisitos de conformidade e aumentar o desempenho do acesso para aplicações distribuídas.

A replicação de tabelas do S3 mantém a consistência de dados confirmando todas as atualizações da tabela, inclusive snapshots, metadados e arquivos de dados, na tabela de destino na mesma ordem da tabela de origem.

## Quando usar a replicação de tabelas do S3
<a name="s3-tables-replication-tables-when-to-use"></a>

É possível usar a replicação de tabelas do S3 para as seguintes finalidades:
+ **Minimizar a latência**: se seus clientes estiverem em duas localizações geográficas diferentes, é possível minimizar a latência ao acessar tabelas mantendo cópias as réplicas de leitura nas regiões da AWS geograficamente mais próximas dos usuários.
+ **Conformidade regulatória**: é possível manter réplicas de leitura em localizações geográficas ou contas da AWS específicas, o que pode ajudar a atender a determinados requisitos regulatórios ou de conformidade. É possível configurar o bucket de tabela de destino da replicação para criptografar tabelas com chaves do AWS KMS diferentes das de origem.
+ **Analytics centralizada**: se você tiver dados distribuídos em várias regiões da AWS, poderá replicar conjuntos de dados específicos da região em uma região centralizada para gerar relatórios unificados, análises entre regiões e treinamento de modelo de machine learning. Isso elimina a necessidade de consultar várias regiões ou criar pipelines personalizados de agregação de dados.
+ **Ambientes de teste e desenvolvimento**: é possível criar réplicas de leitura de tabelas de produção em Contas da AWS ou buckets de tabela separados para fornecer dados de teste realistas a equipes de desenvolvimento e controle de qualidade. Esse procedimento isola as workloads de teste dos sistemas de produção e, ao mesmo tempo, garante que os ambientes de teste tenham dados atuais semelhantes aos de produção, sem exportações manuais ou processos de sincronização de dados.

## Recursos
<a name="s3-tables-replication-tables-features"></a>

A Replicação de Tabelas do S3 oferece os recursos a seguir.

**Réplicas somente leitura para tabelas do S3**  
A replicação de tabelas do S3 cria réplicas somente leitura de tabelas Apache Iceberg em todas os buckets de tabela. É possível consultar réplicas de forma independente usando qualquer mecanismo compatível com o Iceberg.

**Réplicas mantidas automaticamente**  
O serviço Replicação de Tabelas do S3 mantém automaticamente as tabelas de réplica. A replicação normalmente atualiza as réplicas em poucos minutos após as atualizações na origem. A funcionalidade Tabelas do S3 confirma todas as atualizações na mesma ordem da tabela de origem para manter a consistência.

**Replicação para vários destinos**  
É possível replicar a mesma tabela em vários buckets de tabela de destino. Os destinos de replicação podem estar na mesma Região da AWS, em várias Regiões da AWS, na mesma conta da AWS ou em outras contas da AWS.

**Retenção independente de snapshots**  
A expiração de snapshots para tabelas de réplica é independente da tabela de origem, o que permite definir diferentes períodos de retenção nas tabelas de réplica, se necessário. Por exemplo, é possível configurar uma tabela de origem para reter snapshots por trintas dias e definir um período de retenção de noventa dias para tabelas de réplica. Se você configurar um período de retenção mais longo nas réplicas, os snapshots que expiram na origem permanecerão disponíveis e poderão ser consultados nas réplicas. Essa configuração oferece recursos estendidos de viagem no tempo para análise histórica.

**Manter tabelas de réplica em níveis de armazenamento de menor custo**  
É possível configurar buckets de tabela de destino para usar a classe de armazenamento S3 Intelligent-Tiering, que automaticamente otimiza os custos de armazenamento com base nos padrões de acesso, sem impacto no desempenho ou custos operacionais indiretos. O S3 Intelligent-Tiering é adequado para tabelas de réplica que acessadas com menor frequência.

Para ter mais informações sobre a replicação de tabelas do S3, consulte os tópicos a seguir.

**Topics**
+ [

## Quando usar a replicação de tabelas do S3
](#s3-tables-replication-tables-when-to-use)
+ [

## Recursos
](#s3-tables-replication-tables-features)
+ [

# Como funciona a replicação de tabelas do S3
](s3-tables-replication-how-replication-works.md)
+ [

# Configurar a replicação de tabelas do S3
](s3-tables-replication-setting-up.md)
+ [

# Gerenciar a replicação de tabelas do S3
](s3-tables-replication-managing.md)

# Como funciona a replicação de tabelas do S3
<a name="s3-tables-replication-how-replication-works"></a>

A replicação de tabelas do S3 cria réplicas somente leitura de tabelas Apache Iceberg em todas as regiões e Contas da AWS. As tabelas de réplica são mantidas automaticamente pelo serviço Tabelas do S3 e contêm todos os dados e metadados e o histórico completo de snapshots da tabela de origem, o que os torna consultáveis por meio de qualquer mecanismo compatível com o Iceberg para analytics e operações de viagem no tempo.

Ao configurar a replicação para uma tabela, o serviço Tabelas do S3:
+ Cria uma tabela de réplica somente leitura em cada bucket de tabela de destino com o mesmo nome e namespace da tabela de origem.
+ Preenche a réplica com o estado mais recente da tabela de origem.
+ Monitora a tabela de origem em busca de novas atualizações.
+ Confirma todas as atualizações nas réplicas na mesma ordem da origem para manter a consistência.

Para obter mais informações, consulte as seções a seguir.

**Topics**
+ [

## O que é replicado
](#s3-tables-replication-what-is-replicated)
+ [

## Como os dados são replicados
](#s3-tables-replication-how-data-replicated)
+ [

## Replicação de snapshots
](#s3-tables-replication-snapshot-replication)
+ [

## Considerações e limitações
](#s3-tables-replication-considerations-limitations)

## O que é replicado
<a name="s3-tables-replication-what-is-replicated"></a>

Os seguintes componentes da tabela são replicados:
+ **Snapshots da tabela**: todos os snapshots, inclusive os compactados, são replicados em ordem cronológica, mantendo as relações entre primário e secundário e números de sequência da tabela de origem. Isso garante que as tabelas de réplica forneçam os mesmos recursos de viagem no tempo que as tabelas de origem.
+ **Dados da tabela**: todos os arquivos de dados referidos pelos snapshots da tabela são replicados para a região de destino. Isso inclui:
  + **Arquivos de metadados**: arquivos metadata.json da tabela, manifestos, listas de manifestos, estatísticas de partições e estatísticas de tabelas.
  + **Arquivos excluídos**: todos os arquivos excluídos são replicados para manter a precisão dos dados nas tabelas de réplica.
  + **Arquivos de dados**: todos os arquivos de dados referidos pelos manifestos são replicados.
+ **Metadados da tabela**: replicação completa de metadados, inclusive de informações do esquema (atual e histórico), especificações de partição, ordens de classificação e propriedades da tabela.
  + **Informações do esquema**: todos os esquemas de tabela são replicados, inclusive o esquema atual e as versões históricas do esquema. Isso garante que as consultas em tabelas de réplica usem as definições de coluna, os tipos de dados e os mapeamentos de campos corretos. O processo de replicação mantém o histórico de evolução do esquema, permitindo que as consultas de viagem no tempo funcionem corretamente nas tabelas de réplica.
  + **Especificações de partição**: as especificações de partição atuais e históricas são replicadas, garantindo que as tabelas de réplica mantenham a mesma estratégia de particionamento das tabelas de origem.
  + **Ordens de classificação**: as ordens de classificação das tabelas são replicadas para manter a otimização do desempenho das consultas.

## Como os dados são replicados
<a name="s3-tables-replication-how-data-replicated"></a>

A replicação determina um estado válido para tabelas de réplica comparando os metadados da tabela Apache Iceberg entre as tabelas de origem e de réplica. A replicação processa metadados em três categorias para atualizar a tabela de réplica.

### Para metadados de tabela
<a name="s3-tables-replication-table-metadata"></a>

Para campos de metadados versionados, a replicação mescla valores da tabela de origem nas matrizes da tabela de réplica para os seguintes campos:
+ `snapshots`: mescla todos os snapshots da tabela de origem na matriz de snapshots da tabela de réplica por snapshot-id.
+ `snapshot-log`: mescla todos os logs de snapshot da tabela de origem na matriz snapshot-log da tabela de réplica, classificados por carimbo de data/hora e snapshot-id.
+ `sort-orders`: mescla as definições de ordem de classificação da tabela de origem na matriz sort-orders da tabela de réplica por order-id.
+ `partition-specs`: mescla as especificações de partição da tabela de origem na matriz partition-specs da tabela de réplica por spec-id.

### Para configuração da tabela
<a name="s3-tables-replication-table-configuration"></a>

Para campos que representam a configuração da tabela, a replicação copia os valores diretamente da tabela de origem:
+ `properties`
+ `partition-statistics`
+ `statistics`

O estado atual da tabela também é transferido da tabela de origem:
+ `current-snapshot-id`
+ `current-schema-id`
+ `last-column-id`
+ `last-partition-id`
+ `last-sequence-number`
+ `default-sort-order-id`
+ `next-row-id` (Iceberg V3)
+ `encryption-keys` (Iceberg V3)

### Estado específico da réplica
<a name="s3-tables-replication-replica-specific-state"></a>

Os seguintes campos são calculados de dados mesclados e atualizados para a tabela de réplica:
+ `location` é atualizado durante a replicação para apontar para o local correto do arquivo no bucket de tabela de réplica, garantindo que todas as referências de arquivo sejam válidas no ambiente de destino.
+ `metadata-log` contém todos os nomes de arquivo de metadados de destino e é atualizado após cada replicação bem-sucedida com o nome do arquivo de metadados atual.
+ Todos os caminhos de arquivo são modificados para apontar para os locais da tabela de réplica.

## Replicação de snapshots
<a name="s3-tables-replication-snapshot-replication"></a>

A replicação de tabelas do S3 mantém o histórico completo de snapshots em todas as regiões, replicando todos os snapshots da tabela na mesma ordem de confirmação da tabela de origem. As relações entre primário e secundário da tabela de origem são preservadas na tabela de réplica.

### Retenção de snapshots
<a name="s3-tables-replication-snapshot-retention"></a>

É possível configurar um período de retenção de snapshots personalizado para as tabelas replicadas diferente do período de retenção da origem. Isso significa que, mesmo que os snapshots expirem e não estejam mais disponíveis na tabela de origem, eles podem ser preservados em réplicas.

Por exemplo, se a tabela de origem tiver um período de retenção de snapshots de trinta dias, mas a tabela de réplica estiver configurada com um período de retenção de noventa dias, a réplica manterá snapshots dos dois meses anteriores que não estão mais disponíveis na tabela de origem.

Os snapshots encerrados manualmente na tabela de origem também são preservados na tabela de réplica. Por exemplo, se você encerrou os snapshots de fevereiro na tabela de origem usando um procedimento do Spark, ainda poderá viajar no tempo até os snapshots na tabela de réplica.

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

As seguintes considerações se aplicam a tabelas replicadas:
+ A funcionalidade Tabelas do S3 replica tabelas Iceberg V2 e V3. No entanto, não é possível replicar tabelas atualizadas (V2 → V3).
+ Os arquivos de metadados não podem ultrapassar 500 MB.
+ Embora as atualizações de tabela geralmente sejam replicadas em questão de minutos, a replicação pode levar mais tempo, dependendo do tamanho da atualização da tabela a ser replicada; por exemplo, quando a replicação começa a ser preenchida.
+ Não é possível usar tabelas com tags ou ramificações.
+ Não é possível usar a replicação com tabelas de metadados do Amazon S3 ou outras tabelas de sistema geradas pela AWS.
+ Todos os snapshots da tabela, inclusive os compactados, são replicados da tabela de origem. Por isso, não é possível usar a compactação em tabelas de réplica.

# Configurar a replicação de tabelas do S3
<a name="s3-tables-replication-setting-up"></a>

É possível configurar a replicação para criar automaticamente réplicas de tabela de uma tabela de origem para até cinco buckets de tabela de destino. A replicação pode ser configurada em nível de bucket (aplicada a todas as tabelas no bucket) ou em nível de tabela (para tabelas específicas). Este tópico explica como configurar a replicação usando o console do Amazon S3 ou AWS Command Line Interface (AWS CLI).

Para ter mais informações sobre como configurar a replicação, consulte os tópicos a seguir.

**Topics**
+ [

## Pré-requisitos para configurar a replicação
](#s3-tables-replication-prerequisites)
+ [

## Noções básicas sobre as configurações de replicação
](#s3-tables-replication-understanding-configurations)
+ [

## Escolher entre replicação em nível de bucket e em nível de tabela
](#s3-tables-replication-choosing-configuration)
+ [

## Configurar a replicação usando o console do Amazon S3
](#s3-tables-replication-console)
+ [

## Configurar a replicação usando a AWS CLI
](#s3-tables-replication-cli)

## Pré-requisitos para configurar a replicação
<a name="s3-tables-replication-prerequisites"></a>

Antes de configurar a replicação, é necessário ter o seguinte:

### Recursos necessários
<a name="s3-tables-replication-required-resources"></a>
+ **Bucket de tabela de origem**: o bucket de tabela que contém uma ou mais tabelas que você deseja replicar.
+ **Buckets de tabela de destino**: um ou mais buckets de tabela nos quais você deseja replicar suas tabelas (até cinco buckets de tabela de destino).
+ **Tabelas de origem**: tabelas existentes no bucket de tabela de origem para replicação.
+ **Perfis do IAM**: perfis do IAM que concedem ao Amazon S3 permissões para replicar tabelas em seu nome.

### Permissões obrigatórias
<a name="s3-tables-replication-required-permissions"></a>

A identidade do IAM que usada para configurar a replicação precisa ter as seguintes permissões:

**Para replicação em nível de bucket:**
+ `s3tables:PutTableBucketReplication` no bucket de tabela de origem.
+ `s3tables:GetTableBucketReplication` no bucket de tabela de origem.
+ `iam:PassRole` para o perfil do IAM de replicação.

**Para replicação em nível de tabela:**
+ `s3tables:PutTableReplication` na tabela de origem.
+ `s3tables:GetTableReplication` na tabela de origem.
+ `iam:PassRole` para o perfil do IAM de replicação.

**Para replicação entre contas:**
+ Permissões da política de bucket da conta de destino.

### Requisitos adicionais para replicação entre contas
<a name="s3-tables-replication-cross-account-requirements"></a>

Se os buckets de tabela de origem e destino estiverem em contas diferentes da AWS, você também precisará:
+ De uma política de bucket no bucket de tabela de destino que conceda à conta de origem permissões para replicar tabelas.
+ Do ID da conta de destino e do nome do recurso da Amazon (ARN) do bucket de tabela.

### Requisitos adicionais para tabelas criptografadas
<a name="s3-tables-replication-encrypted-requirements"></a>

Se você quiser criptografar tabelas de réplica com o AWS KMS:
+ Uma chave do KMS na região de destino.
+ Permissões para usar a chave do KMS em seu perfil de replicação do IAM.
+ Uma política de chave do KMS que permita que o perfil de replicação criptografe dados.

## Noções básicas sobre as configurações de replicação
<a name="s3-tables-replication-understanding-configurations"></a>

Uma configuração de replicação define como o Amazon S3 replica tabelas do bucket de tabela de origem. A replicação pode ser configurada em dois níveis:

### Para replicação em nível de bucket
<a name="s3-tables-replication-bucket-level"></a>

Uma configuração de replicação em nível de bucket se aplica a todas as tabelas no bucket de tabela de origem. Quando a replicação é configurada em nível de bucket, o Amazon S3 replica automaticamente qualquer tabela existente e qualquer tabela nova criada no bucket.

Use a replicação em nível de bucket quando:
+ Quiser replicar todas as tabelas em um bucket.
+ Quiser um comportamento de replicação consistente em todas as tabelas.
+ Quiser simplificar o gerenciamento com uma única configuração.

### Replicação em nível de tabela
<a name="s3-tables-replication-table-level"></a>

Uma configuração de replicação em nível de tabela se aplica a uma tabela específica. As configurações em nível de tabela substituem as configurações em nível de bucket para essa tabela específica.

Use a replicação em nível de tabela quando:
+ Quiser replicar apenas tabelas específicas.
+ Precisar de destinos de replicação diferentes para tabelas diferentes.
+ Quiser substituir uma configuração em nível de bucket para determinadas tabelas.

### Elementos da configuração de replicação
<a name="s3-tables-replication-configuration-elements"></a>

Cada configuração de replicação contém:
+ **Perfil do IAM**: o perfil que o Amazon S3 assume para realizar operações de replicação.
+ **Regras**: uma ou mais regras de replicação (com o limite de uma regra na execução). Cada regra contém:
  + **Destinos**: lista de ARNs de bucket de tabela de destino (até cinco destinos).
  + **Status**: se a regra está habilitada ou desabilitada.
+ **Token de versão**: um token usado para evitar conflitos de gravação ao atualizar as configurações.

## Escolher entre replicação em nível de bucket e em nível de tabela
<a name="s3-tables-replication-choosing-configuration"></a>

### Precedência de configuração
<a name="s3-tables-replication-configuration-precedence"></a>

Quando existem configurações em nível de bucket e em nível de tabela:
+ A configuração em nível de tabela tem precedência para essa tabela específica.
+ Outras tabelas seguem a configuração em nível de bucket.

## Configurar a replicação usando o console do Amazon S3
<a name="s3-tables-replication-console"></a>

Este procedimento mostra como configurar a replicação usando o console do Amazon S3.

### Como configurar a replicação em nível de bucket
<a name="s3-tables-replication-bucket-level-console"></a>

Este procedimento mostra como criar uma replicação de bucket de tabela usando o console do Amazon S3. Uma configuração de replicação de bucket de tabela se aplica a todas as tabelas no bucket de tabela de origem.

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, escolha **Buckets de tabela**.

1. Na lista **Buckets de tabela**, escolha o nome do bucket de tabela para o qual deseja configurar a replicação.

1. Escolha a guia **Gerenciamento**.

1. Na seção **Configuração de replicação do bucket de tabela**, escolha **Criar configuração de replicação de bucket de tabela**.

1. Na seção **Destino**, configure os destinos da replicação:

   1. No campo **ARN do bucket de tabela**, insira o ARN do bucket de tabela de destino. O formato de é: `arn:aws:s3tables:region:account-id:bucket/table-bucket-name`

      Também é possível escolher **Procurar no S3** para selecionar um bucket de tabela de sua conta.

   1. (Opcional) Para adicionar outros destinos, escolha **Adicionar destino**. É possível adicionar mais quatro buckets de tabela, no máximo, para um total de cinco destinos.

1. Na seção **Perfil do IAM**, configure o perfil de replicação:

   1. Em **Método de seleção de perfil do IAM**, escolha uma das seguintes opções:
      + **Criar um perfil do IAM**: o Amazon S3 cria um perfil com as permissões necessárias para replicação.
      + **Escolher entre perfis do IAM existentes**: selecione um perfil existente que tenha as permissões de replicação necessárias.
      + **Inserir ARN do perfil do IAM**: insira manualmente o ARN de um perfil do IAM existente.

   1. Se você optou por **Escolher entre perfis do IAM existentes**, selecione um perfil na lista suspensa **Perfil do IAM**.

   1. (Opcional) Escolha **Visualizar** para analisar as permissões do perfil selecionado no console do IAM.

1. Escolha **Criar configuração de replicação**.

   Após a criação da configuração de replicação, o Amazon S3 inicia o processo de preenchimento inicial. É possível monitorar o status da replicação na seção **Status de replicação da tabela**, que exibe informações sobre cada destino, como status da replicação, ARN da tabela de destino e última vez em que os metadados foram replicados.

### Como configurar a replicação em nível de tabela
<a name="s3-tables-replication-table-level-console"></a>

Este procedimento mostra como criar uma replicação de tabela usando o console do Amazon S3. Uma configuração de replicação de tabela se aplica a uma tabela específica e substitui qualquer configuração de replicação em nível de bucket para essa tabela.

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, escolha **Buckets de tabela**.

1. Na lista **Buckets de tabela**, escolha o nome do bucket de tabela que contém a tabela que você deseja replicar.

1. Escolha a guia **Tabelas**.

1. Na lista **Tabelas**, escolha o nome da tabela que você deseja replicar.

1. Escolha a guia **Gerenciamento**.

1. Na seção **Configuração de replicação de tabelas**, escolha **Criar configuração de replicação de tabela**.

1. Na seção **Destino**, configure os destinos da replicação:

   1. No campo **ARN do bucket de tabela**, insira o ARN do bucket de tabela de destino. O formato de é: `arn:aws:s3tables:region:account-id:bucket/table-bucket-name`

      Também é possível escolher **Procurar no S3** para selecionar um bucket de tabela de sua conta.

   1. (Opcional) Para adicionar outros destinos, escolha **Adicionar destino**. É possível adicionar mais quatro buckets de tabela, no máximo, para um total de cinco destinos.

1. Na seção **Perfil do IAM**, configure o perfil de replicação:

   1. Em **Método de seleção de perfil do IAM**, escolha uma das seguintes opções:
      + **Criar um perfil do IAM**: o Amazon S3 cria um perfil com as permissões necessárias para replicação.
      + **Escolher entre perfis do IAM existentes**: selecione um perfil existente que tenha as permissões de replicação necessárias.
      + **Inserir ARN do perfil do IAM**: insira manualmente o ARN de um perfil do IAM existente.

   1. Se você optou por **Escolher entre perfis do IAM existentes**, selecione um perfil na lista **Perfil do IAM**.

   1. (Opcional) Escolha **Visualizar** para analisar as permissões do perfil selecionado no console do IAM.

1. Escolha **Criar configuração de replicação**.

### O que ocorre em seguida?
<a name="s3-tables-replication-what-happens-next"></a>

Após a criação da configuração de replicação:
+ O Amazon S3 inicia o processo inicial de preenchimento, criando tabelas de réplica em cada bucket de destino.
+ O status da replicação muda para **Replicando** depois que o preenchimento é iniciado.
+ É possível monitorar o andamento da replicação na guia **Gerenciamento**.
+ O tempo de replicação inicial depende do tamanho da tabela de origem.

## Configurar a replicação usando a AWS CLI
<a name="s3-tables-replication-cli"></a>

Este procedimento mostra como configurar a replicação usando a AWS CLI. Substitua os IDs de conta, as regiões e os nomes de bucket por seus valores reais. Adicione todos os buckets de destino às permissões.

### Etapa 1: criar um perfil do IAM para replicação
<a name="s3-tables-replication-create-iam-role"></a>

Primeiro, crie um perfil do IAM que o Amazon S3 possa assumir para replicar tabelas.

1. Crie um documento de política de confiança que permita que a funcionalidade Tabelas do S3 assuma o perfil. Salve-o como `trust-policy.json`:

   ```
   {
     "Version": "2012-10-17"		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "replication.s3tables.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Crie o perfil do IAM:

   ```
   aws iam create-role \
       --role-name S3TablesReplicationRole \
       --assume-role-policy-document file://trust-policy.json \
       --description "Role for S3 Tables replication"
   ```

1. Crie uma política de permissões que conceda permissões de replicação. Salve-a como `replication-permissions.json`:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3tables:GetTable",
                   "s3tables:GetTableMetadataLocation",
                   "s3tables:GetTableMaintenanceConfiguration",
                   "s3tables:GetTableData"
               ],
               "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-source/table/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3tables:ListTables"
               ],
               "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-source"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3tables:CreateTable",
                   "s3tables:CreateNamespace"
               ],
               "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-destination"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3tables:PutTableData",
                   "s3tables:GetTableData",
                   "s3tables:UpdateTableMetadataLocation",
                   "s3tables:PutTableMaintenanceConfiguration"
               ],
               "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-destination/table/*"
           }
       ]
   }
   ```

1. Anexe a política de permissões ao perfil:

   ```
   aws iam put-role-policy \
       --role-name S3TablesReplicationRole \
       --policy-name S3TablesReplicationPermissions \
       --policy-document file://replication-permissions.json
   ```

1. (Opcional) Se estiver usando a criptografia do KMS, adicione permissões do KMS à política:

   ```
   {
     "Effect": "Allow",		 	 	 
     "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:Encrypt"
   
     ],
     "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID"
   },
   {
     "Effect": "Allow",
     "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKey"
     ],
     "Resource": [
       "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1"
     ]
   }
   ```

### (Somente entre contas) Etapa 2: configurar uma política de bucket de destino
<a name="s3-tables-replication-cross-account-policy"></a>

Se você estiver replicando para uma conta da AWS diferente, a conta de destino deverá conceder permissões à conta de origem.

1. Na conta de destino, crie uma política de bucket para o bucket de tabela de destino. Salve-a como `destination-bucket-policy.json`:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::444455556666:role/cross-account-test"
               },
               "Action": [
                   "s3tables:PutTableData",
                   "s3tables:GetTableData",
                   "s3tables:UpdateTableMetadataLocation",
                   "s3tables:PutTableMaintenanceConfiguration"
               ],
               "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-cross-account-destination/table/*"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::444455556666:role/cross-account-test"
               },
               "Action": [
                   "s3tables:CreateTable",
                   "s3tables:CreateNamespace"
               ],
               "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-cross-account-destination"
           }
       ]
   }
   ```

1. Aplique a política usando a API da funcionalidade Tabelas do S3:

   ```
   aws s3tables put-table-bucket-policy \
       --table-bucket-arn arn:aws:s3tables:us-west-2:444455556666:bucket/amzn-s3-demo-table-bucket-cross-account-destination \
       --policy file://destination-bucket-policy.json \
       --profile destination-account
   ```

1. Modifique a chave do KMS de origem para permitir a replicação e a manutenção de tabelas do S3:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Id": "key-consolepolicy-3",
     "Statement": [
           {
               "Sid": "allow replication to decrypt",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "replication_role_arn"
               },
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID"
           },
           {
               "Sid": "allow maintenance",
               "Effect": "Allow",
               "Principal": {
                   "Service": "maintenance.s3tables.amazonaws.com"
               },
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID"
           }
     ]
   }
   ```

1. Da mesma forma, adicione permissões em sua política de chave do KMS de destino.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Id": "key-policy-3",
       "Statement": [
           {
               "Sid": "allow maintenance",
               "Effect": "Allow",
               "Principal": {
                   "Service": "maintenance.s3tables.amazonaws.com"
               },
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1"
           },
           {
               "Sid": "allow replication to encrypt/decrypt",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "replication_role_arn"
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1"
           }
       ]
   ```

### Etapa 3: criar uma configuração de replicação
<a name="s3-tabales-replication-cli"></a>

É possível a AWS CLI para criar uma configuração de replicação em nível de bucket de tabela ou em nível de tabela. Para ter mais informações, consulte os procedimentos a seguir.

#### Criar uma configuração de replicação em nível de bucket
<a name="s3-tables-replication-bucket-level-cli"></a>

Use essa abordagem para replicar todas as tabelas em um bucket.

1. Crie um arquivo de configuração de replicação. Salve-o como `bucket-replication-config.json`:  
**Example : destino único na mesma conta**  

   ```
   {
     "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole",
     "rules": [
       {
         "destinations": [
           {
             "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr"
           }
         ]
       }
     ]
   }
   ```  
**Example : vários destinos em todas as regiões**  

   ```
   {
     "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole",
     "rules": [
       {
         "destinations": [
           {
             "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr"
           },
           {
             "destinationTableBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu"
           },
           {
             "destinationTableBucketARN": "arn:aws:s3tables:ap-south-1:111122223333:bucket/amzn-s3-demo-table-bucket-apac"
           }
         ]
       }
     ]
   }
   ```  
**Example : replicação entre contas**  

   ```
   {
     "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole",
     "rules": [
       {
         "destinations": [
           {
             "destinationTableBucketARN": "arn:aws:s3tables:us-east-1:444455556666:bucket/amzn-s3-demo-table-bucket-partner"
           }
         ]
       }
     ]
   }
   ```

1. Aplique uma configuração de replicação em nível de bucket:

   ```
   aws s3tables put-table-bucket-replication \
       --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
       --configuration file://bucket-replication-config.json
   ```

   Saída esperada:

   ```
   {
     "versionToken": "3HL4kqtJl40Nr8X8gdRQBpUMLUo",
     "status": "Success"
   }
   ```

#### Criar uma configuração de replicação em nível de tabela
<a name="s3-tables-replication-table-level-cli"></a>

Use essa abordagem para replicar tabelas específicas ou substituir a replicação em nível de bucket.

1. Crie um arquivo de configuração de replicação. Salve-o como `table-replication-config.json`:  
**Example : replicação de tabela única**  

   ```
   {
     "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole",
     "rules": [
       {
         "destinations": [
           {
             "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-analytics-bucket"
           }
         ]
       }
     ]
   }
   ```  
**Example : tabela com vários destinos**  

   ```
   {
     "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole",
     "rules": [
       {
         "destinations": [
           {
             "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr"
           },
           {
             "destinationTableBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu"
           }
         ]
       }
     ]
   }
   ```

1. Aplique uma configuração de replicação em nível de tabela:

   ```
   aws s3tables put-table-replication \
       --table-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table-bucket-sales-data \
       --configuration file://table-replication-config.json
   ```

   Saída esperada:

   ```
   {
     "versionToken": "xT2LZkFZ0UuTC2h8XqtGLx2Ak6M",
     "status": "Success"
   }
   ```

# Gerenciar a replicação de tabelas do S3
<a name="s3-tables-replication-managing"></a>

Após a configuração da replicação de tabelas do S3, é possível monitorar o status da réplica para verificar o que foi replicado. Você pode verificar o status da replicação no console do Amazon S3 na guia **Gerenciamento** da tabela de origem ou usando a AWS CLI. Para ter mais informações, consulte [Configurar a replicação de tabelas do S3](s3-tables-replication-setting-up.md). Esse tópico explica como monitorar a replicação e entender os diferentes valores de status que indicam se a replicação foi concluída, está em andamento ou falhou.

## Monitorar os estados de replicação
<a name="s3-tables-replication-monitoring-status"></a>

Os trabalhos de replicação são executados continuamente para as tabelas replicadas. É possível consultar o status da replicação com a API GetTableReplicationStatus ou visualizá-lo no console do Amazon S3.

### Como obter o status da replicação usando a AWS CLI
<a name="s3-tables-replication-status-cli"></a>

O exemplo a seguir obtém o status de replicação usando a API GetTableReplicationStatus.

```
aws s3tables get-table-replication-status \
    --table-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/sales-data
```

Saída esperada:

```
{
  "sourceTableARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/sales-data",
  "destinations": [
    {
      "replicationStatus": "COMPLETED",
      "destinationBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket",
      "destinationTableARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/sales-data",
      "lastSuccessfulReplicatedUpdate": {
        "metadataLocation": "latest_table_metadata.json",
        "timestamp": "2025-11-15T14:30:00Z"
      }
    },
    {
      "replicationStatus": "PENDING",
      "destinationBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu-bucket",
      "destinationTableARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu-bucket/table/sales-data",
      "lastSuccessfulReplicatedUpdate": {
        "metadataLocation": "latest_table_metadata.json",
        "timestamp": "2025-11-15T14:25:00Z"
      }
    }
  ]
}
```

Para ter mais informações, consulte [get-table-replication-status](https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-replication-status.html) na *Referência de comandos da AWS CLI*.

### Como interpretar a resposta
<a name="s3-tables-replication-understanding-response"></a>

A resposta contém os seguintes elementos:
+ **sourceTableARN**: o ARN da tabela de origem que está sendo replicada.
+ **destinations**: uma matriz de objetos de status de destino, um para cada destino de replicação configurado. Cada objeto de destino contém:
  + **replicationStatus**: o status atual da replicação desse destino (COMPLETED, PENDING ou FAILED).
  + **destinationBucketARN**: o ARN do bucket da tabela de destino.
  + **destinationTableARN**: o ARN do bucket da tabela de réplica no bucket de destino.
  + **lastSuccessfulReplicatedUpdate**: informações sobre a replicação bem-sucedida mais recente:
    + **metadataLocation**: o nome do arquivo de metadados do Iceberg que foi replicado com êxito pela última vez. Compare isso com o local atual dos metadados da tabela de origem para determinar se a replicação está atualizada.
    + **timestamp**: a hora em que esse arquivo de metadados foi replicado para o destino.
  + **failureMessage** (presente somente quando o status é FAILED): uma mensagem de erro detalhada descrevendo por que a replicação falhou.

### Valores de status da replicação
<a name="s3-tables-replication-status-values"></a>

A replicação pode ter três status possíveis para cada destino:
+ **COMPLETED**: todos os snapshots da tabela de origem foram replicados com êxito no destino. O local mais recente dos metadados da tabela de origem corresponde ao local dos metadados da última replicação.
+ **PENDING**: a replicação está em andamento ou novas replicações confirmadas estão aguardando para serem replicadas. O local mais recente dos metadados da tabela de origem difere do local dos metadados da última replicação.
+ **FAILED**: a última tarefa de replicação dessa tabela falhou. Nenhuma nova atualização está sendo replicada.

# Regiões da AWS, endpoints e cotas de serviço da funcionalidade Tabelas do S3
<a name="s3-tables-regions-quotas"></a>

As seções a seguir incluem as Regiões da AWS compatíveis e as cotas de serviço da funcionalidade Tabelas do S3.

**Topics**
+ [

## Regiões da AWS e endpoints da funcionalidade Tabelas do S3
](#s3-tables-regions)
+ [

## Cotas da funcionalidade Tabelas do S3
](#s3-tables-quotas)

## Regiões da AWS e endpoints da funcionalidade Tabelas do S3
<a name="s3-tables-regions"></a>

Para obter uma lista das regiões em que o serviço Tabelas do S3 está disponível no momento, consulte [Amazon S3 endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region). Para se conectar a um serviço da AWS de forma programática, use um endpoint. Para obter mais informações, consulte [Endpoints de serviço da AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html).

A funcionalidade Tabelas do S3 aceita endpoints de pilha dupla para acesso público e o AWS PrivateLink. Os endpoints de pilha dupla permitem o acesso a buckets de tabela do S3 usando o protocolo de internet versão 6 (IPv6), além do protocolo IPv4, dependendo do que sua rede permite.

Os endpoints de pilha dupla da funcionalidade Tabelas do S3 usam a seguinte convenção de nomenclatura: `s3tables.aws-region.api.aws` 

Para ver uma lista completa de endpoints da funcionalidade Tabelas do S3, consulte [Amazon S3 endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region).

## Cotas da funcionalidade Tabelas do S3
<a name="s3-tables-quotas"></a>

As cotas, também chamadas de limites, correspondem ao número máximo de recursos ou operações de serviço para uma Conta da AWS. Veja a seguir as cotas para os recursos da funcionalidade Tabelas do S3. Para ter mais informações sobre as cotas do Amazon S3, consulte [Amazon S3 quotas](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3).


| Nome | Padrão | Ajustável | Descrição | 
| --- | --- | --- | --- | 
| Buckets de tabela | 10 | Para solicitar um aumento na cota, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). | O número de buckets de tabela do Amazon S3 que você pode criar por Região da AWS em uma conta. | 
| Namespaces | 10.000 | Para solicitar um aumento na cota, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). | O número de namespaces de tabelas do Amazon S3 que você pode criar por bucket de tabela. | 
| Tabelas | 10.000 | Para solicitar um aumento na cota, entre em contato com o [Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). | O número de tabelas do Amazon S3 que você pode criar por bucket de tabela. | 

# Fazer solicitações para a funcionalidade Tabelas do S3 por meio do IPv6
<a name="s3-tables-ipv6"></a>

Além do protocolo IPv4, o Amazon S3 permite que os buckets do S3 sejam acessados por meio do protocolo de internet versão 6 (IPv6) usando endpoints de pilha dupla. Os endpoints de pilha dupla se transformam em um endpoint IPv6 ou IPv4, dependendo do que sua rede permite.

Essas são algumas questões das quais você deve estar ciente antes de tentar acessar a funcionalidade Tabelas do S3 por IPv6:
+ O cliente e a rede que estão acessando o bucket de tabela devem ter permissão para usar IPv6.
+ Seu cliente de tabelas e seu cliente do S3 devem ter a opção pilha dupla habilitada.
+ Se você usa políticas do IAM de filtragem de endereços IP, elas devem ser atualizadas para lidar com endereços IPv6. Para ter mais informações sobre como gerenciar permissões de acesso com o IAM, consulte . [Gerenciamento de identidade e acesso para o Amazon S3](security-iam.md).
+ Ao usar o IPv6, os arquivos de log de acesso ao servidor fornecem endereços IP em um formato do IPv6. Você precisa atualizar as ferramentas, os scripts e o software existentes que usa para analisar os arquivos de log do Amazon S3 para que eles possam analisar os endereços `Remote IP` formatados para IPv6. Para obter mais informações, consulte [Registrar em log as solicitações com registro em log de acesso ao servidor](ServerLogs.md).

## Como começar a fazer solicitações por meio da funcionalidade Tabelas do S3 por IPv6
<a name="s3-tables-ipv6-getting-started"></a>

Quando você faz uma solicitação a um endpoint de pilha dupla, o URL do bucket de tabela resolve para um endereço IPv6 ou IPv4, dependendo do que sua rede permite. Se sua rede preferir IPv4, as solicitações usarão automaticamente IPv4. Se sua rede preferir IPv6, as solicitações usarão automaticamente IPv6. Nenhuma alteração na configuração é necessária, exceto atualizar seu cliente ou aplicação para habilitar o endpoint de pilha dupla.

Ao usar a API REST, você acessa diretamente um endpoint do Amazon S3 usando o nome do endpoint (URI). Você pode acessar a funcionalidade Tabelas do S3 e buckets de tabela por meio de um endpoint de pilha dupla usando a seguinte convenção de nomenclatura:

`s3tables.<region>.api.aws`

Para ver uma lista completa de endpoints da funcionalidade Tabelas do S3, consulte [Amazon Simple Storage Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/s3.html).

Ao usar a AWS CLI, SDKs da AWS e clientes do Iceberg, você pode utilizar um parâmetro ou um sinalizador para mudar para um endpoint de pilha dupla. Você também pode especificar o endpoint de pilha dupla diretamente como uma substituição do endpoint do Amazon S3 no arquivo de configuração.

É possível habilitar a resolução de endpoint de pilha dupla em SDKs ou clientes definindo o sinalizador de pilha dupla por meio do seguinte comando:

```
S3TablesClient client = S3TablesClient.builder()
    .region(Region.US_EAST_1)
    .dualstackEnabled(true)
    .build();
```

Para usar o endpoint de pilha dupla na AWS CLI, consulte [Using dual-stack endpoints from the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/dual-stack-endpoints.html#dual-stack-endpoints-cli).

Para ter informações ou usar endpoints de pilha dupla para o AWS PrivateLink, consulte [Usar os endpoints de pilha dupla para acessar tabelas e buckets de tabela](s3-tables-VPC.md#s3-tables-dual-stack-endpoints).

# Segurança para a funcionalidade Tabelas do S3
<a name="s3-tables-security-overview"></a>

 O Amazon S3 fornece uma variedade de recursos e ferramentas de segurança. A lista a seguir apresenta os recursos e as ferramentas compatíveis com a funcionalidade Tabelas do S3. A aplicação adequada dessas ferramentas pode ajudar a garantir que os recursos permaneçam protegidos e só possam ser acessados pelos usuários pretendidos. 

**Políticas baseadas em identidade**  
As [políticas baseadas em identidade](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) são anexadas a um usuário, grupo ou função do IAM. Você pode usar políticas baseadas em identidade para conceder a uma identidade do IAM acesso a tabelas ou buckets de tabela. Por padrão, usuários e perfis não têm permissão para criar nem modificar tabelas e buckets de tabela. Eles também não podem executar tarefas usando o console do S3, a AWS CLI ou as APIs REST do Amazon S3. É possível criar usuários, grupos e perfis do IAM em sua conta e anexar políticas de acesso a eles. Depois, você pode conceder acesso aos recursos. Para criar e acessar tabelas e buckets de tabela, um administrador do IAM deve conceder as permissões necessárias aos usuários ou ao perfil do AWS Identity and Access Management (IAM). Para ter mais informações, consulte [Access management for S3 Tables](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-setting-up.html). 

**Políticas baseadas em recursos**  
[Políticas baseadas em recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) são anexadas a um recurso. Você pode criar políticas baseadas em recurso para as tabelas e os buckets de tabela. Você pode usar uma política de bucket de tabela para controlar as permissões de acesso à API ao nível do bucket de tabela e do namespace. Você também pode usar uma política de bucket de tabela para controlar as permissões de API ao nível da tabela em várias tabelas de um bucket. Dependendo da definição da política, as permissões anexadas ao bucket podem ser aplicadas a todas as tabelas ou a tabelas específicas no bucket. Você também pode usar uma política de tabela para conceder permissões de acesso à API ao nível da tabela a tabelas individuais do bucket.

Quando a funcionalidade Tabelas do S3 recebe uma solicitação para executar uma operação de tabela ou de bucket de tabela, primeiro ela verifica se o solicitante tem as permissões necessárias. Ela avalia todas as políticas de acesso, políticas de usuário e políticas baseadas em recurso relevantes para decidir se autoriza a solicitação (política de usuário do IAM, política de perfil do IAM, política de bucket de tabela e política de tabela). Com as políticas de bucket de tabela e as políticas de tabela, é possível personalizar o acesso aos recursos para garantir que somente as identidades que você aprovou possam acessar os recursos e executar ações neles. Para ter mais informações, consulte [Access management for S3 Tables](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-setting-up.html). 

**Políticas de controle de serviços (SCPs) do AWS Organizations para a funcionalidade Tabelas do S3**  
Você pode usar a funcionalidade Tabelas do Amazon S3 em políticas de controle de serviços (SCPs) para gerenciar as permissões dos usuários na sua organização. De maneira semelhante às políticas do IAM e de recursos, todas as ações ao nível da tabela e do bucket são referenciadas como parte do namespace `s3tables` nas políticas. Para obter mais informações, consulte [Políticas de controle de serviços (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) no *Guia do usuário do AWS Organizations*.

**Topics**
+ [

# Proteger os dados de tabela do S3 com criptografia
](s3-tables-encryption.md)
+ [

# Gerenciamento de acesso para a funcionalidade Tabelas do S3
](s3-tables-setting-up.md)
+ [

# Conectividade de VPC para a funcionalidade Tabelas do S3
](s3-tables-VPC.md)
+ [

# Considerações e limitações de segurança para a funcionalidade Tabelas do S3
](s3-tables-restrictions.md)

# Proteger os dados de tabela do S3 com criptografia
<a name="s3-tables-encryption"></a>

# Usar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de tabela
<a name="s3-tables-kms-encryption"></a>

**Topics**
+ [

## Como o SSE-KMS funciona para tabelas e buckets de tabela
](#kms-tables-how)
+ [

# Impor e definir o escopo de uso do SSE-KMS para tabelas e buckets de tabela
](tables-require-kms.md)
+ [

## Monitorar e auditor da criptografia SSE-KMS para tabelas e buckets de tabela
](#kms-tables-audit)
+ [

# Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3
](s3-tables-kms-permissions.md)
+ [

# Especificar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de tabela
](s3-tables-kms-specify.md)

Os buckets de tabela têm uma configuração de criptografia padrão que automaticamente criptografa tabelas usando criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3). Essa criptografia se aplica a todas as tabelas nos buckets de tabela do S3 e não tem custo para você.

Se precisar de maior controle sobre suas chaves de criptografia, como gerenciar a alternância de chaves e as concessões de política de acesso, poderá configurar os buckets de tabela para usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Os controles de segurança do AWS KMS podem ajudá-lo a satisfazer os requisitos de conformidade relacionados à criptografia. Para obter mais informações sobre SSE-KMS, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

## Como o SSE-KMS funciona para tabelas e buckets de tabela
<a name="kms-tables-how"></a>

O SSE-KMS com buckets de tabela difere do SSE-KMS em buckets de uso geral nos seguintes aspectos:
+ Você pode especificar configurações de criptografia para buckets de tabela e tabelas individuais.
+ Você só pode usar chaves gerenciadas pelo cliente com o SSE-KMS. Não são permitidas chaves gerenciadas pela AWS.
+ Você deve conceder permissões a determinados perfis e entidades principais de serviço da AWS para acessarem sua chave do AWS KMS. Para obter mais informações, consulte [Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3](s3-tables-kms-permissions.md). Isso inclui conceder acesso a:
  + Entidade principal de manutenção do S3: para realizar a manutenção em tabelas criptografadas.
  + Perfil de integração da funcionalidade Tabelas do S3: para trabalhar com tabelas criptografadas em serviços de analytics da AWS.
  + Perfil de acesso ao cliente: para acesso direto a tabelas criptografadas de clientes Apache Iceberg.
  + Entidade principal do S3 Metadata: para atualizar tabelas de metadados criptografadas do S3.
+ As tabelas criptografadas usam chaves em nível de tabela que minimizam o número de solicitações feitas ao AWS KMS para tornar o trabalho com tabelas criptografadas com SSE-KMS mais econômico. 

**Criptografia SSE-KMS para buckets de tabela**  
Ao criar um bucket de tabela, você pode escolher o SSE-KMS como o tipo de criptografia padrão e selecionar uma chave do KMS específica para ser usada na criptografia. Todas as tabelas criadas nesse bucket herdarão automaticamente essas configurações de criptografia do bucket de tabela. A qualquer momento, você pode usar o AWS CLI, a API do S3 ou os SDKs da AWS para modificar ou remover as configurações de criptografia padrão em um bucket de tabela. Ao modificar as configurações de criptografia em um bucket de tabela, essas configurações se aplicam somente às novas tabelas criadas nesse bucket. As configurações de criptografia para tabelas preexistentes não são alteradas. Para obter mais informações, consulte [Especificar criptografia para buckets de tabela](s3-tables-kms-specify.md#specify-kms-table-bucket).

**Criptografia SSE-KMS para tabelas**  
Você também tem a opção de criptografar uma tabela individual com uma chave do KMS diferente, independentemente da configuração de criptografia padrão do bucket. Para definir a criptografia para uma tabela individual, você deve especificar a chave de criptografia desejada ao criar a tabela. Se quiser alterar a criptografia de uma tabela existente, precisará criar uma tabela com a chave desejada e copiar os dados da tabela antiga para a nova. Para obter mais informações, consulte [Especificar criptografia para tabelas](s3-tables-kms-specify.md#specify-kms-table).

Ao usar a criptografia do AWS KMS, a funcionalidade Tabelas do S3 cria automaticamente chaves de dados exclusivas em nível de tabela que criptografam novos objetos associados a cada tabela. Essas chaves são usadas por um período limitado, minimizando a necessidade de solicitações adicionais ao AWS KMS durante as operações de criptografia e reduzindo o custo da criptografia. Isso é semelhante a [Chaves de bucket S3 para SSE-KMS](bucket-key.md#bucket-key-overview).

# Impor e definir o escopo de uso do SSE-KMS para tabelas e buckets de tabela
<a name="tables-require-kms"></a>

Você pode usar políticas baseadas em recursos da funcionalidade Tabelas do S3, políticas de chave do KMS, políticas baseadas em identidade do IAM ou qualquer combinação delas para impor o uso do SSE-KMS a tabelas e buckets de tabela do S3. Para ter mais informações sobre políticas de identidade e recursos destinados a tabelas, consulte [Gerenciamento de acesso para a funcionalidade Tabelas do S3](s3-tables-setting-up.md). Para ter mais informações sobre políticas de chave, consulte [Key policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) no *Guia do desenvolvedor do AWS Key Management Service*. Os exemplos a seguir mostram como você pode usar políticas para impor o uso do SSE-KMS.

## Impor o uso do SSE-KMS para todas as tabelas com uma política de bucket de tabela
<a name="w2aac20c35c15b3c11b5b1"></a>

Este é um exemplo de política de bucket de tabela que impede que os usuários criem tabelas em um bucket de tabela específico, a menos que criptografem tabelas com uma chave do AWS KMS específica. Para usar essa política, substitua os *espaços reservados para entrada do usuário* por suas próprias informações: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceKMSEncryption",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3tables:CreateTable"
      ],
      "Resource": [
        "arn:aws:s3tables:us-west-2:111122223333:bucket/example-table-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "s3tables:sseAlgorithm": "aws:kms",
          "s3tables:kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
      }
    }
  ]
}
```

------

## Exigir que os usuários usem a criptografia SSE-KMS com uma política do IAM
<a name="w2aac20c35c15b3c11b7b1"></a>

Essa política de identidade do IAM exige que os usuários usem uma chave do AWS KMS específica para criptografia ao criar ou configurar recursos da funcionalidade Tabelas do S3. Para usar essa política, substitua os *espaços reservados para entrada do usuário* por suas próprias informações:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RequireKMSKeyOnTables",
      "Action": [
          "s3tables:CreateTableBucket",
          "s3tables:PutTableBucketEncryption",
          "s3tables:CreateTable"
      ]
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "s3tables:sseAlgorithm": "aws:kms",
            "s3tables:kmsKeyArn": "<key_arn>"
        }
      }
    }
  ]
}
```

## Restringir o uso de uma chave a um bucket de tabela específico com uma política de chave do KMS
<a name="w2aac20c35c15b3c11b9b1"></a>

Este exemplo de política de chave do KMS permite que a chave seja usada por um usuário específico somente para operações de criptografia em um bucket de tabela específico. Esse tipo de política é útil para limitar o acesso a uma chave em cenários entre contas. Para usar essa política, substitua os *espaços reservados para entrada do usuário* por suas próprias informações: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Id",
  "Statement": [
    {
      "Sid": "AllowPermissionsToKMS",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:s3:arn": "<table-bucket-arn>/*"
        }
      }
    }
  ]
}
```

------

## Monitorar e auditor da criptografia SSE-KMS para tabelas e buckets de tabela
<a name="kms-tables-audit"></a>

Para auditar o uso das chaves do AWS KMS para seus dados criptografados por SSE-KMS, você pode usar logs do AWS CloudTrail. Você pode obter informações sobre suas [operações criptográficas](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), como `GenerateDataKey` e `Decrypt`. O CloudTrail oferece suporte a vários [valores de atributos](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html) para filtrar a pesquisa, como nome do evento, nome de usuário e origem do evento.

Você pode rastrear solicitações de configuração de criptografia para tabelas e buckets de tabela do Amazon S3 usando eventos do CloudTrail. Os seguintes nomes de eventos de API são usados nos logs do CloudTrail:
+ `s3tables:PutTableBucketEncryption`
+ `s3tables:GetTableBucketEncryption`
+ `s3tables:DeleteTableBucketEncryption`
+ `s3tables:GetTableEncryption`
+ `s3tables:CreateTable`
+ `s3tables:CreateTableBucket`

**nota**  
Não é possível usar buckets de tabela no EventBridge.

# Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3
<a name="s3-tables-kms-permissions"></a>

Ao usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) para tabelas nos buckets de tabela do S3, é necessário conceder permissões a diferentes identidades em sua conta. No mínimo, sua identidade de acesso e a entidade principal de manutenção da funcionalidade Tabelas do S3 precisam acessar sua chave. As outras permissões necessárias dependem do seu caso de uso.

**Permissões obrigatórias**   
Para acessar uma tabela criptografada com uma chave do KMS, você precisa destas permissões nessa chave:  
+ `kms:GenerateDataKey`
+ `kms:Decrypt`
Para usar o SSE-KMS em tabelas, a entidade principal do serviço de manutenção da funcionalidade Tabelas do Amazon S3 (`maintenance.s3tables.amazonaws.com`) precisa das permissões `kms:GenerateDataKey` e `kms:Decrypt` na chave.

**Permissões adicionais**  
Estas permissões adicionais são necessárias dependendo do seu caso de uso:  
+ **Permissões para a integração de serviços de analytics da AWS**: se você trabalha com tabelas criptografadas com SSE-KMS em serviços de analytics da AWS, seu perfil de integração precisa de permissão para usar sua chave do KMS.
+ **Permissões para acesso direto**: se você trabalha diretamente com tabelas criptografadas com SSE-KMS, por meio de métodos como o endpoint de Tabelas do Amazon S3 Iceberg REST ou o Catálogo de Tabelas do Amazon S3 para Apache Iceberg, será necessário permitir que o perfil do IAM que seu cliente usa acesse sua chave.
+ **Permissões para tabelas do S3 Metadata**: se você usa a criptografia SSE-KMS para tabelas de metadados do S3, precisará fornecer à entidade principal do serviço de metadados do S3 (`metadata.s3.amazonaws.com`) acesso à sua chave do KMS. Isso permite que o S3 Metadata atualize tabelas criptografadas para que elas reflitam as alterações mais recentes nos dados.

**nota**  
Para chaves do KMS entre contas, seu perfil do IAM precisa de permissão de acesso à chave e autorização explícita na política de chave. Para ter mais informações sobre permissões entre contas referentes a chaves do KMS, consulte [Allowing external AWS accounts to use a KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) no *Guia do desenvolvedor do AWS Key Management Service*.

**Topics**
+ [

## Conceder à entidade principal do serviço de manutenção da funcionalidade Tabelas do S3 permissões para sua chave do KMS
](#tables-kms-maintenance-permissions)
+ [

## Conceder permissões a entidades principais do IAM para trabalhar com tabelas criptografadas em serviços integrados de analytics da AWS
](#tables-kms-integration-permissions)
+ [

## Conceder às entidades principais do IAM permissões para trabalhar diretamente com tabelas criptografadas
](#tables-kms-direct-permissions)
+ [

## Conceder permissões à entidade principal do serviço S3 Metadata para usar sua chave do KMS
](#tables-kms-metadata-permissions)

## Conceder à entidade principal do serviço de manutenção da funcionalidade Tabelas do S3 permissões para sua chave do KMS
<a name="tables-kms-maintenance-permissions"></a>

Essa permissão é necessária para criar tabelas criptografadas com SSE-KMS e permitir a manutenção automática de tabelas, como compactação, gerenciamento de snapshots e remoção de arquivos sem referência nas tabelas criptografadas.

**nota**  
Sempre que você faz uma solicitação para criar uma tabela criptografada com SSE-KMS, a funcionalidade Tabelas do S3 verifica se a entidade principal `maintenance.s3tables.amazonaws.com` tem acesso à sua chave do KMS. Para realizar essa verificação, um objeto de zero byte é criado temporariamente no bucket de tabela. Esse objeto será removido automaticamente pelas operações de manutenção de [remoção de arquivos sem referência](s3-table-buckets-maintenance.md#s3-table-bucket-maintenance-unreferenced). Se a chave do KMS especificada para criptografia não tiver acesso de manutenção, a operação createTable falhará.

Para conceder acesso de manutenção em tabelas criptografadas com SSE-KMS, você pode usar o exemplo de política de chave a seguir. Nessa política, a entidade principal de serviço `maintenance.s3tables.amazonaws.com` recebe permissão para usar uma chave do KMS específica para criptografar e descriptografar tabelas em um bucket de tabela específico. Para usar essa política, substitua os *espaços reservados para entrada do usuário* por suas próprias informações:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableKeyUsage",
            "Effect": "Allow",
            "Principal": {
                "Service": "maintenance.s3tables.amazonaws.com"            
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*"
                }
            }
        }
    ]
}
```

------

## Conceder permissões a entidades principais do IAM para trabalhar com tabelas criptografadas em serviços integrados de analytics da AWS
<a name="tables-kms-integration-permissions"></a>

Para trabalhar com tabelas do S3 em serviços de analytics da AWS, integre os buckets de tabela ao Amazon SageMaker Lakehouse. Essa integração permite que os serviços de analytics da AWS descubram e acessem dados de tabela automaticamente. Para ter mais informações sobre integração, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](s3-tables-integrating-aws.md).

Quando você trabalha com tabelas criptografadas com SSE-KMS nesses serviços, o perfil que você usa precisa ter permissão para usar sua chave do AWS KMS para operações de criptografia. Você pode aplicar essas permissões ao perfil `S3TablesRoleForLakeFormation` criado durante a integração ou ao seu próprio perfil do IAM.

O exemplo de política do IAM em linha a seguir pode ser usado para permitir que o perfil de serviço `S3TablesRoleForLakeFormation` use uma chave do KMS específica em sua conta para operações de criptografia. Para usar os comandos, substitua os *valores de espaço reservado para entrada* por suas próprias informações.

```
{
  "Sid": "AllowTableRoleAccess",
  "Effect": "Allow",
  "Principal": {
	"AWS": "arn:aws:iam::111122223333:role/service-role/S3TablesRoleForLakeFormation"
  },
  "Action": [
      "kms:GenerateDataKey", 
      "kms:Decrypt"
  ],
  "Resource": "<kms-key-arn>"
}
```

## Conceder às entidades principais do IAM permissões para trabalhar diretamente com tabelas criptografadas
<a name="tables-kms-direct-permissions"></a>

Ao trabalhar com tabelas criptografadas usando métodos de acesso direto ou de terceiros, você deve conceder ao perfil que você usa acesso à sua chave do KMS. Os exemplos a seguir mostram como conceder acesso por meio de uma política do IAM ou de uma política de chave do KMS.

------
#### [ IAM policy ]

Anexe essa política em linha ao perfil do IAM para permitir acesso à chave do KMS. Para usar essa política, substitua os *valores de espaço reservado para entrada* pelo ARN de sua chave do KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowKMSKeyUsage",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

------
#### [ KMS key policy ]

Anexe essa política em linha a uma chave do KMS para permitir que o perfil do AWS KMS especificado use a chave. Para usar os essa política, substitua os *valores de espaço reservado para entrada* por seu perfil do IAM.

```
{
    "Sid": "Allow use of the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::<catalog-account-id>:role/<role-name>"
        ]
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
    ],
    "Resource": "*"
}
```

------

## Conceder permissões à entidade principal do serviço S3 Metadata para usar sua chave do KMS
<a name="tables-kms-metadata-permissions"></a>

Para permitir que o Amazon S3 atualize tabelas de metadados criptografadas com SSE-KMS e realize a manutenção dessas tabelas de metadados, você pode usar o exemplo de política de chave a seguir. Nessa política, você permite que as entidades principais de serviço `metadata.s3.amazonaws.com` e `maintenance.s3tables.amazonaws.com` criptografem e descriptografem tabelas em um bucket de tabela específico usando uma chave específica. Para usar essa política, substitua os *espaços reservados para entrada do usuário* por suas próprias informações:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableKeyUsage",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "maintenance.s3tables.amazonaws.com",
                    "metadata.s3.amazonaws.com"
                ]           
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*"
                }
            }
        }
    ]
}
```

------

# Especificar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de tabela
<a name="s3-tables-kms-specify"></a>

Todos os buckets da funcionalidade Tabelas do Amazon S3 têm criptografia configurada por padrão e todas as novas tabelas criadas em um bucket de tabela são automaticamente criptografadas em repouso. A criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) é a configuração de criptografia padrão para todos os buckets de diretório. Se você quiser especificar um tipo de criptografia diferente, é possível usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS).

 Você pode especificar a criptografia SSE-KMS em solicitações `CreateTableBucket` ou `CreateTable` ou definir a configuração de criptografia padrão no bucket de tabela em uma solicitação `PutTableBucketEncryption`.

**Importante**  
Para permitir a manutenção automática em tabelas e buckets de tabela criptografados com SSE-KMS, você deve conceder permissão à entidade principal de serviço maintenance.s3tables.amazonaws.com para usar sua chave do KMS. Para obter mais informações, consulte [Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3](s3-tables-kms-permissions.md).

## Especificar criptografia para buckets de tabela
<a name="specify-kms-table-bucket"></a>

Você pode especificar o SSE-KMS como o tipo de criptografia padrão ao criar um bucket de tabela. Para ter exemplos, consulte [Criar um bucket de tabela](s3-tables-buckets-create.md). Depois de criar um bucket de tabela, você pode especificar o uso do SSE-KMS como a configuração de criptografia padrão usando operações da API REST, SDKs da AWS e a AWS Command Line Interface (AWS CLI).

**nota**  
 Quando você especifica o SSE-KMS como o tipo de criptografia padrão, a chave usada para criptografia deve permitir acesso à entidade principal do serviço de manutenção da funcionalidade Tabelas do S3. Se a entidade principal do serviço de manutenção não tiver acesso, você não conseguirá criar tabelas nesse bucket de tabela. Para obter mais informações, consulte [Conceder à entidade principal do serviço de manutenção da funcionalidade Tabelas do S3 permissões para sua chave do KMS](s3-tables-kms-permissions.md#tables-kms-maintenance-permissions).

### Usar a AWS CLI
<a name="w2aac20c35c15b3c17b9b9b1"></a>

Para usar o exemplo de comando a seguir da AWS CLI, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables put-table-bucket-encryption \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket; \
    --encryption-configuration '{
        "sseAlgorithm": "aws:kms",
        "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }' \
    --region us-east-1
```

Você pode remover a configuração de criptografia padrão de um bucket de tabela usando a operação de API [DeleteTableBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTableBucketEncryption.html). Ao remover as configurações de criptografia, as novas tabelas criadas no bucket de tabela usarão a criptografia SSE-S3 padrão.

## Especificar criptografia para tabelas
<a name="specify-kms-table"></a>

Você pode aplicar a criptografia SSE-KMS ao criar uma tabela usando mecanismos de consulta, operações da API REST, SDKs da AWS e a AWS Command Line Interface (AWS CLI). As configurações de criptografia que você especifica ao criar uma tabela têm precedência sobre a configuração de criptografia padrão do bucket de tabela.

**nota**  
Ao usar a criptografia SSE-KMS para uma tabela, a chave utilizada para criptografia deve permitir que a entidade principal do serviço de manutenção da funcionalidade Tabelas do S3 a acesse. Se a entidade principal do serviço de manutenção não tiver acesso, você não conseguirá criar a tabela. Para obter mais informações, consulte [Conceder à entidade principal do serviço de manutenção da funcionalidade Tabelas do S3 permissões para sua chave do KMS](s3-tables-kms-permissions.md#tables-kms-maintenance-permissions).

****Permissões obrigatórias****

As seguintes permissões são necessárias para criar tabelas criptografadas:
+ `s3tables:CreateTable`
+ `s3tables:PutTableEncryption`

## Como usar o AWS CLI
<a name="w2aac20c35c15b3c17c13b1"></a>

O exemplo a seguir da AWS CLI cria uma tabela com um esquema básico e a criptografa com uma chave do AWS KMS gerenciada pelo cliente. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
aws s3tables create-table \
  --table-bucket-arn "arn:aws:s3tables:Region:ownerAccountId:bucket/amzn-s3-demo-table-bucket" \
  --namespace "mydataset" \
  --name "orders" \
  --format "ICEBERG" \
  --encryption-configuration '{
    "sseAlgorithm": "aws:kms",
    "kmsKeyArn": "arn:aws:kms:Region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }' \
  --metadata '{
    "iceberg": {
      "schema": {
        "fields": [
          {
            "name": "order_id",
            "type": "string",
            "required": true
          },
          {
            "name": "order_date",
            "type": "timestamp",
            "required": true
          },
          {
            "name": "total_amount",
            "type": "decimal(10,2)",
            "required": true
          }
        ]
      }
    }
  }'
```

A proteção de dados refere-se à proteção enquanto eles estão em trânsito (à medida que são transferidos para e do Amazon S3) e em repouso (enquanto estão armazenados em discos em data centers do Amazon S3). A funcionalidade Tabelas do S3 sempre protege os dados em trânsito usando Transport Layer Security (1.2 e posterior) por meio de HTTPS. Para proteger dados em repouso em buckets de tabela do S3, você tem as seguintes opções:

**Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)**  
Todos os buckets de tabela do Amazon S3 têm criptografia configurada por padrão. A opção padrão para a criptografia do lado do servidor é com as chaves gerenciadas pelo Amazon S3 (SSE-S3). Essa criptografia não tem custo e se aplica a todas as tabelas nos buckets de tabela do S3, a menos que você especifique outra forma de criptografia. Cada objeto é criptografado com uma chave exclusiva. Como uma proteção adicional, a SSE-S3 criptografa a própria chave com uma chave-raiz que alterna regularmente. A SSE-S3 usa uma das cifras de bloco mais fortes disponíveis, o padrão de criptografia avançada de 256 bits (AES-256), para criptografar os dados.

**Criptografia no lado do servidor com chaves do AWS KMS (SSE-KMS)**  
Você pode optar por configurar buckets de tabela ou tabelas para usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Os controles de segurança do AWS KMS podem ajudá-lo a satisfazer os requisitos de conformidade relacionados à criptografia. O SSE-KMS oferece maior controle sobre as chaves de criptografia, permitindo que você faça o seguinte:   
+ Crie, visualize, edite, monitore, habilite ou desabilite, alterne e programe a exclusão de chaves do KMS.
+ Definir políticas que controlam como e por quem as chaves do KMS podem ser usadas.
+ Rastreie o uso de chaves no AWS CloudTrail para verificar se as chaves do KMS estão sendo usadas corretamente.
A funcionalidade Tabelas do S3 permite o uso de chaves gerenciadas pelo cliente no SSE-KMS para criptografar tabelas. Não é possível usar chaves gerenciadas pela AWS. Para ter mais informações sobre o uso do SSE-KMS para tabelas e buckets de tabela do S3, consulte [Usar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de tabela](s3-tables-kms-encryption.md).

# Gerenciamento de acesso para a funcionalidade Tabelas do S3
<a name="s3-tables-setting-up"></a>

Na funcionalidade Tabelas do S3, os recursos incluem buckets de tabela e as tabelas contidas neles. O usuário-raiz da Conta da AWS que criou o recurso (proprietário do recurso) e os usuários do AWS Identity and Access Management (IAM) dentro dessa conta que têm as permissões necessárias podem acessar um recurso que eles criaram. O proprietário do recurso especifica quem mais pode acessar o recurso e as ações que podem realizar no recurso. O Amazon S3 tem várias ferramentas de gerenciamento de acesso que você pode usar para conceder a outros usuários acesso aos recursos do S3. Se você integrou suas tabelas ao AWS Amazon SageMaker Lakehouse, também será possível gerenciar o acesso refinado aos seus namespaces e tabelas com o Lake Formation. Os tópicos a seguir fornecem uma visão geral dos recursos, das ações do IAM e das chaves de condição para a funcionalidade Tabelas do S3. Também apresentam exemplos de políticas baseadas em recurso e em identidade para a funcionalidade Tabelas do S3.

**Topics**
+ [

## Recursos
](#s3-tables-resources)
+ [

## Ações para a funcionalidade Tabelas do S3
](#s3-tables-actions)
+ [

## Chaves de condição para a funcionalidade Tabelas do S3
](#s3-tables-conditionkeys)
+ [

# Políticas baseadas em identidade do IAM para a funcionalidade Tabelas do S3
](s3-tables-identity-based-policies.md)
+ [

# Políticas baseadas em recurso para a funcionalidade Tabelas do S3
](s3-tables-resource-based-policies.md)
+ [

# Políticas gerenciadas pela AWS para o serviço Tabelas do S3
](s3-tables-security-iam-awsmanpol.md)
+ [

# Conceder acesso com semântica SQL
](s3-tables-sql.md)
+ [

# Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation
](grant-permissions-tables.md)

## Recursos
<a name="s3-tables-resources"></a>

Os recursos da funcionalidade Tabelas do S3 incluem buckets de tabela e as tabelas contidas neles.
+ Buckets de tabela: os buckets de tabela são projetados especificamente para tabelas e fornecem quantidades mais altas de transações por segundo (TPS) e melhor throughput de consultas em comparação com as tabelas autogerenciadas em buckets de uso geral do S3. Os buckets de tabela oferecem as mesmas características de durabilidade, disponibilidade, escalabilidade e performance dos buckets de uso geral do Amazon S3. 
+ Tabelas: as tabelas nos buckets de tabela são armazenadas no formato Apache Iceberg. Você pode consultar essas tabelas usando SQL padrão em mecanismos de consulta compatíveis com Iceberg.

Os nomes de recursos da Amazon (ARNs) para tabelas e buckets de tabela contêm o namespace `s3tables`, a Região da AWS, o ID da Conta da AWS e o nome do bucket. Para acessar e executar ações nas tabelas e nos buckets de tabela, você deve usar os seguintes formatos de ARN:
+ Formato do ARN de tabela:

  `arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-bucket/table/demo-tableID`

## Ações para a funcionalidade Tabelas do S3
<a name="s3-tables-actions"></a>

Em uma política baseada em identidade ou em recurso, defina quais ações da funcionalidade Tabelas do S3 são permitidas ou negadas para entidades principais do IAM específicas. As ações de tabelas correspondem às operações de API ao nível do bucket e da tabela. Todas as ações fazem parte de um namespace do IAM exclusivo: `s3tables`.

Ao usar uma ação em uma política, você geralmente permite ou nega acesso à operação de API com o mesmo nome. No entanto, em alguns casos, uma única ação controla o acesso a mais de uma operação de API. Por exemplo, as ações `s3tables:GetTableData` incluem permissões para as operações de API `GetObject`, `ListParts` e `ListMultiparts`. 

Veja a seguir as ações compatíveis com buckets de tabela. Você pode especificar as ações a seguir no elemento `Action` de uma política do IAM ou de recurso.


| Ação | Descrição | Nível de acesso | Acesso entre contas | 
| --- | --- | --- | --- | 
| s3tables:CreateTableBucket | Concede permissões para criar um bucket de tabela. | Write | Não | 
| s3tables:GetTableBucket | Concede permissão para recuperar o ARN do bucket de tabela, o nome do bucket de tabela e a data de criação. | Write | Sim | 
| s3tables:ListTableBuckets | Concede permissão para listar todos os buckets de tabela da conta. | Read | Não | 
| s3tables:CreateNamespace | Concede permissão para criar um namespace em um bucket de tabela. | Write | Sim | 
| s3tables:GetNamespace | Concede permissão para recuperar os detalhes de um namespace. | Read | Sim | 
| s3tables:ListNamespaces | Concede permissão para listar todos os namespaces no bucket de tabela. | Read | Sim | 
| s3tables:DeleteNamespace | Concede permissão para excluir um namespace em um bucket de tabela. | Write | Sim | 
| s3tables:DeleteTableBucket | Concede permissão para excluir o bucket.  | Write | Sim  | 
| s3tables:PutTableBucketPolicy | Concede permissão para adicionar ou substituir uma política de bucket. | Permissions Management | Não | 
| s3tables:GetTableBucketPolicy | Concede permissão para recuperar a política de bucket. | Read | Não | 
| s3tables:DeleteTableBucketPolicy | Concede permissão para excluir a política do bucket. | Permissions Management | Não | 
| s3tables:GetTableBucketMaintenanceConfiguration | Concede permissão para recuperar a configuração de manutenção de um bucket de tabela. | Read | Sim  | 
| s3tables:PutTableBucketMaintenanceConfiguration | Concede permissão para adicionar ou substituir a configuração de manutenção de um bucket de tabela. | Write | Sim | 
| s3tables:PutTableBucketEncryption | Concede permissão para adicionar ou substituir a configuração de criptografia de um bucket de tabela. | Write | Não | 
| s3tables:GetTableBucketEncryption | Concede permissão para recuperar a configuração de criptografia de um bucket de tabela. | Read | Não | 
| s3tables:DeleteTableBucketEncryption | Concede permissão para excluir a configuração de criptografia de um bucket de tabela. | Write | Não | 

As ações a seguir são compatíveis com tabelas:


| Ação | Descrição | Nível de acesso | Acesso entre contas | 
| --- | --- | --- | --- | 
| s3tables:GetTableMaintenanceConfiguration | Concede permissão para recuperar a configuração de manutenção de uma tabela. | Read | Sim | 
| s3tables:PutTableMaintenanceConfiguration |  Concede permissão para adicionar ou substituir a configuração de manutenção de uma tabela. | Write | Sim | 
| s3tables:PutTablePolicy | Concede permissão para adicionar ou substituir uma política de tabela. | Permissions Management | Não | 
| s3tables:GetTablePolicy | Concede permissão para recuperar a política da tabela. | Read | Não | 
| s3tables:DeleteTablePolicy | Concede permissão para excluir a política da tabela. | Permissions management | Não | 
| s3tables:CreateTable | Concede permissão para criar uma tabela em um bucket de tabela. | Write | Sim | 
| s3tables:GetTable | Concede permissão para recuperar as informações de uma tabela. | Read | Sim | 
| s3tables:GetTableMetadataLocation | Concede permissão para recuperar o ponteiro-raiz da tabela (arquivo de metadados). | Read | Sim  | 
| s3tables:ListTables | Concede permissão para listar todas as tabelas em um bucket de tabela. | Read | Sim  | 
| s3tables:RenameTable | Concede permissões para alterar o nome de uma tabela. | Write | Sim  | 
| s3tables:UpdateTableMetadataLocation | Concede permissão para atualizar o ponteiro-raiz da tabela (arquivo de metadados). | Write | Sim  | 
| s3tables:GetTableData | Concede permissão para ler os metadados da tabela e os objetos de dados armazenados no bucket de tabela. | Read | Sim | 
| s3tables:PutTableData | Concede permissão para gravar os metadados da tabela e os objetos de dados armazenados no bucket de tabela. | Write | Sim | 
| s3tables:GetTableEncryption  | Concede permissão para recuperar as configurações de criptografia de um bucket de tabela. | Write | Não | 
| s3tables:PutTableEncryption  | Concede permissão para adicionar criptografia a uma tabela. | Write | Não | 
| s3tables:DeleteTable | Concede permissão para excluir uma tabela de um bucket de tabela. | Write | Sim | 

Para realizar ações de leitura e gravação ao nível da tabela, a funcionalidade Tabelas do S3 oferece suporte a operações de API do Amazon S3, como `GetObject` e `PutObject`. A tabela a seguir fornece uma lista de ações ao nível do objeto. Ao conceder permissões de leitura e gravação nas tabelas, use as ações a seguir.


| Ação | APIs de objetos do S3 | 
| --- | --- | 
| s3tables:GetTableData | GetObject, ListParts, HeadObject | 
| s3tables:PutTableData | PutObject, CreateMultipartUpload, CompleteMultipartUpload,  UploadPart, AbortMultipartUpload | 

Por exemplo, se um usuário tiver permissões `GetTableData`, ele poderá ler todos os arquivos associados à tabela, como o arquivo de metadados, o manifesto, os arquivos da lista de manifestos e os arquivos de dados parquet.

## Chaves de condição para a funcionalidade Tabelas do S3
<a name="s3-tables-conditionkeys"></a>

A funcionalidade Tabelas do S3 oferece suporte a [chaves de contexto de condição globais da AWS](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html).

Além disso, a funcionalidade Tabelas do S3 define as seguintes chaves de condição que você pode usar em uma política de acesso.


| Chave de condição | Descrição | Tipo | 
| --- | --- | --- | 
|  s3tables:tableName |  Filtra o acesso pelos nomes das tabelas no bucket de tabela. Você pode usar a chave de condição `s3tables:tableName` para escrever políticas do IAM ou de bucket de tabela que restrinjam o acesso de usuários ou aplicações somente a tabelas que atendam a essa condição de nome.   É importante observar que, se você usar a chave de condição `s3tables:tableName` para controlar o acesso, as alterações nos nomes das tabelas poderão afetar essas políticas. Exemplo de valor: "s3tables:tableName":"department\$1"  | String | 
|  s3tables:namespace |  Filtra o acesso pelos namespaces criados no bucket de tabela.  Você pode usar a chave de condição `s3tables:namespace` para criar políticas do IAM, de tabela ou de bucket de tabela que restringem o acesso de usuários ou aplicações às tabelas que fazem parte de um namespace específico. *Exemplo de valor:* `"s3tables:namespace":"hr" `  É importante observar que, se você usar a chave de condição `s3tables:namespace` para controlar o acesso, as alterações nos namespaces poderão afetar essas políticas.  | String | 
|  s3tables:SSEAlgorithm |  Filtra o acesso pelo algoritmo de criptografia do lado do servidor usado para criptografar uma tabela.  Você pode usar a chave de condição `s3tables:SSEAlgorithm` para escrever políticas do IAM, de tabela ou de bucket de tabela que restrinjam o acesso de usuários ou aplicações a tabelas criptografadas com determinado tipo de criptografia. *Exemplo de valor:* `"s3tables:SSEAlgorithm":"aws:kms" `  É importante observar que, se você usar a chave de condição `s3tables:SSEAlgorithm` para controlar o acesso, as alterações na criptografia poderão afetar essas políticas.  | String | 
|  s3tables:KMSKeyArn |  Filtra o acesso pelo ARN da chave do AWS KMS usada para criptografar uma tabela. Você pode usar a chave de condição `s3tables:KMSKeyArn` para escrever políticas do IAM, de tabela ou de bucket de tabela que restrinjam o acesso de usuários ou aplicações a tabelas criptografadas com uma chave do KMS específica.  É importante observar que, se você usar a chave de condição `s3tables:KMSKeyArn` para controlar o acesso, as alterações na chave do KMS poderão afetar essas políticas.  | ARN | 

# Políticas baseadas em identidade do IAM para a funcionalidade Tabelas do S3
<a name="s3-tables-identity-based-policies"></a>

Por padrão, usuários e perfis não têm permissão para criar nem modificar tabelas e buckets de tabela. Eles também não podem executar tarefas usando o console do S3, a AWS Command Line Interface (AWS CLI) ou as APIs REST do Amazon S3. Para criar e acessar tabelas e buckets de tabela, um administrador do AWS Identity and Access Management (IAM) deve conceder as permissões necessárias aos usuários ou ao perfil do IAM. Para saber como criar uma política baseada em identidade do IAM usando esses exemplos de documento de política JSON, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) no *Guia do Usuário do IAM*. 

O tópico a seguir inclui exemplos de políticas baseadas em identidade do IAM. Para usar os exemplos de política a seguir, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Topics**
+ [

## Exemplo 1: permitir acesso para criar e usar buckets de tabela
](#example-1-s3-tables-identity-based-policies)
+ [

## Exemplo 2: permitir acesso para criar e usar tabelas em um bucket de tabela
](#example-2-s3-tables-identity-based-policies)

## Exemplo 1: permitir acesso para criar e usar buckets de tabela
<a name="example-1-s3-tables-identity-based-policies"></a>

**.**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBucketActions",
            "Effect": "Allow",
            "Action": [
                "s3tables:CreateTableBucket",
                "s3tables:PutTableBucketPolicy",
                "s3tables:GetTableBucketPolicy",
                "s3tables:ListTableBuckets",
                "s3tables:GetTableBucket"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## Exemplo 2: permitir acesso para criar e usar tabelas em um bucket de tabela
<a name="example-2-s3-tables-identity-based-policies"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBucketActions",
            "Effect": "Allow",
            "Action": [
                "s3tables:GetTableBucket",
                "s3tables:ListTables",
                "s3tables:CreateTable",
                "s3tables:PutTableData",
                "s3tables:GetTableData",
                "s3tables:GetTable",
                "s3tables:GetTableMetadataLocation",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:GetNamespace",
                "s3tables:CreateNamespace",
                "s3tables:ListNamespaces"
            ],
            "Resource": [
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/*"
            ]
        }
    ]
}
```

------

# Políticas baseadas em recurso para a funcionalidade Tabelas do S3
<a name="s3-tables-resource-based-policies"></a>

A funcionalidade Tabelas do S3 fornece políticas baseadas em recurso para gerenciar o acesso aos buckets de tabela e às tabelas: políticas de bucket de tabela e políticas de tabela. Você pode usar uma política de bucket de tabela para conceder permissões de acesso à API ao nível do bucket de tabela, do namespace ou da tabela. As permissões anexadas ao bucket de tabela podem ser aplicadas a todas as tabelas no bucket ou a tabelas específicas no bucket, dependendo da definição da política. Você pode usar uma política de tabela para conceder permissões ao nível da tabela. 

Quando a funcionalidade Tabelas do S3 recebe uma solicitação, primeiro ela verifica se o solicitante tem as permissões necessárias. Ela avalia todas as políticas de acesso, políticas de usuário e políticas baseadas em recurso relevantes para decidir se autoriza a solicitação (política de usuário do IAM, política de perfil do IAM, política de bucket de tabela e política de tabela). Por exemplo, se uma política de bucket de tabela concede a um usuário permissões para realizar todas as ações nas tabelas do bucket (inclusive `DeleteTable`), mas uma tabela individual tiver uma política de tabela que nega a ação `DeleteTable` para todos os usuários, um usuário não pode excluir a tabela.

O tópico a seguir inclui exemplos de políticas de tabela e de bucket de tabela. Para usar essas políticas, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**nota**  
Toda política que concede permissões para modificar tabelas deve incluir permissões para `GetTableMetadataLocation` a fim de acessar o arquivo-raiz da tabela. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html).
Sempre que você realizar uma atividade de gravação ou exclusão em uma tabela, inclua permissões para `UpdateTableMetadataLocation` na política de acesso.
Recomendamos usar uma política de bucket de tabela para controlar o acesso às ações ao nível do bucket e uma política de tabela para controlar o acesso às ações ao nível da tabela. Nos casos em que você deseja definir o mesmo conjunto de permissões em várias tabelas, recomendamos o uso de uma política de bucket de tabela.

**Topics**
+ [

## Exemplo 1: a política de bucket de tabela permite acesso a `PutBucketMaintenanceConfiguration` para buckets em uma conta
](#table-bucket-policy-1)
+ [

## Exemplo 2: política de bucket de tabela para permitir acesso de leitura (SELECT) às tabelas armazenadas no namespace `hr`
](#table-bucket-policy-2)
+ [

## Exemplo 3: política de tabela para permitir que um usuário exclua uma tabela
](#table-bucket-policy-3)

## Exemplo 1: a política de bucket de tabela permite acesso a `PutBucketMaintenanceConfiguration` para buckets em uma conta
<a name="table-bucket-policy-1"></a>

O exemplo de política de bucket de tabela a seguir permite que o `data steward` do IAM exclua objetos não referenciados de todos os buckets em uma conta ao permitir acesso a `PutBucketMaintenanceConfiguration`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:PutTableBucketMaintenanceConfiguration"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## Exemplo 2: política de bucket de tabela para permitir acesso de leitura (SELECT) às tabelas armazenadas no namespace `hr`
<a name="table-bucket-policy-2"></a>

Veja a seguir um exemplo de política de bucket de tabela permite que Jane, uma usuária do ID de Conta da AWS `123456789012`, acesse tabelas armazenadas no namespace `hr` em um bucket de tabela.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Jane"
            },
            "Action": [
                "s3tables:GetTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/*",
            "Condition": {
                "StringLike": {
                    "s3tables:namespace": "hr"
                }
            }
        }
    ]
}
```

------

## Exemplo 3: política de tabela para permitir que um usuário exclua uma tabela
<a name="table-bucket-policy-3"></a>

O exemplo a seguir é uma política de tabela que permite que o perfil do IAM `data steward` exclua uma tabela.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "DeleteTable",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:DeleteTable",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:PutTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/tableUUID"
        }
    ]
}
```

------

# Políticas gerenciadas pela AWS para o serviço Tabelas do S3
<a name="s3-tables-security-iam-awsmanpol"></a>

Uma política gerenciada pela AWS é uma política autônoma criada e administrada pela AWS. As políticas gerenciadas pela AWS são criadas para fornecer permissões a vários casos de uso comuns e permitir a atribuição de permissões a usuários, grupos e perfis.

Lembre-se de que as políticas gerenciadas pela AWS podem não conceder permissões de privilégio mínimo para casos de uso específicos, por estarem disponíveis para uso por todos os clientes da AWS. Recomendamos que você reduza ainda mais as permissões definindo as [ políticas gerenciadas pelo cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) que são específicas para seus casos de uso.

Não é possível alterar as permissões definidas em políticas gerenciadas pela AWS. Se a AWS atualiza as permissões definidas em um política gerenciada por AWS, a atualização afeta todas as identidades de entidades principais (usuários, grupos e perfis) às quais a política estiver vinculada. É provável que a AWS atualize uma política gerenciada por AWS quando um novo AWS service (Serviço da AWS) for lançado, ou novas operações de API forem disponibilizadas para os serviços existentes.

Para obter mais informações, consulte [Políticas gerenciadas pela AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) no *Guia do usuário do IAM*.

## AWS Política gerenciada da: AmazonS3TablesFullAccess
<a name="s3-tables-security-iam-awsmanpol-amazons3tablesfullaccess"></a>

É possível anexar a política `AmazonS3TablesFullAccess` às identidades do IAM. Essa política concede permissões que possibilitam acesso total à funcionalidade Tabelas do Amazon S3. Para obter mais informações sobre essa política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html).

## AWS Política gerenciada da: AmazonS3TablesReadOnlyAccess
<a name="s3-tables-security-iam-awsmanpol-amazons3readonlyaccess"></a>

É possível anexar a política `AmazonS3TablesReadOnlyAccess` às identidades do IAM. Essa política concede permissões que oferecem acesso somente leitura à funcionalidade Tabelas do Amazon S3. Para obter mais informações sobre essa política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesReadOnlyAccess.html).

## AWS Política gerenciada da: AmazonS3TablesLakeFormationServiceRole
<a name="s3-tables-security-iam-awsmanpol-amazons3tableslakeformationservicerole"></a>

É possível anexar a política `AmazonS3TablesLakeFormationServiceRole` às identidades do IAM. Essa política concede permissões que autorizam o acesso do perfil de serviço do AWS Lake Formation ao serviço Tabelas do S3. As permissões do AWS KMS são usadas para autorizar o acesso do Lake Formation a tabelas criptografadas. Para obter mais informações sobre essa política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesLakeFormationServiceRole.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesLakeFormationServiceRole.html).

## Atualizações da funcionalidade Tabelas do Amazon S3 para políticas gerenciadas pela AWS
<a name="s3-tables-security-iam-awsmanpol-updates"></a>

Veja detalhes sobre as atualizações nas políticas gerenciadas pela AWS para a funcionalidade Tabelas do Amazon S3 desde que as alterações começaram a ser controladas para essa funcionalidade.


| Alteração | Descrição | Data | 
| --- | --- | --- | 
|  A funcionalidade Tabelas do Amazon S3 atualizou a política `AmazonS3TablesFullAccess`.  |  A funcionalidade Tabelas do S3 atualizou a política `AmazonS3TablesFullAccess` gerenciada pela AWS. Essa atualização concede permissão para transmitir um perfil ao serviço Replicação de Tabelas do S3.  |  2 de dezembro de 2025  | 
|  Adição de à funcionalidade Tabelas do Amazon S3 `AmazonS3TablesLakeFormationServiceRole`.  |  A funcionalidade Tabelas do S3 adicionou uma nova política gerenciada pela AWS chamada `AmazonS3TablesLakeFormationServiceRole`. Essa política concede permissões que autorizam o acesso do perfil de serviço do Lake Formation ao serviço Tabelas do S3.   | 19 de maio de 2025 | 
|  Adição de à funcionalidade Tabelas do Amazon S3 `AmazonS3TablesFullAccess`.  |  A funcionalidade Tabelas do S3 adicionou uma nova política gerenciada pela AWS chamada `AmazonS3TablesFullAccess`. Essa política concede permissões que possibilitam acesso total à funcionalidade Tabelas do Amazon S3.   | 3 de dezembro de 2024 | 
|  Adição de `AmazonS3TablesReadOnlyAccess` à funcionalidade Tabelas do Amazon S3.  |  A funcionalidade Tabelas do S3 adicionou uma nova política gerenciada pela AWS chamada `AmazonS3TablesReadOnlyAccess`. Essa política concede permissões que oferecem acesso somente leitura à funcionalidade Tabelas do Amazon S3.   | 3 de dezembro de 2024 | 
|  Início do controle de alterações na funcionalidade Tabelas do Amazon S3.  |  A funcionalidade Tabelas do Amazon S3 passou a controlar as alterações relacionadas às políticas gerenciadas pela AWS.  | 3 de dezembro de 2024 | 

# Conceder acesso com semântica SQL
<a name="s3-tables-sql"></a>

Você pode conceder permissões às tabelas usando a semântica SQL nas políticas de tabela e de bucket de tabela. Alguns exemplos de semântica SQL que você pode usar são `CREATE`, `INSERT`, `DELETE`, `UPDATE` e `ALTER`. A tabela a seguir fornece uma lista de ações de API associadas à semântica SQL que você pode usar para conceder permissões aos usuários.

A funcionalidade Tabelas do S3 oferece suporte parcial às permissões usando a semântica SQL. Por exemplo, a API `CreateTable` cria apenas uma tabela vazia no bucket de tabela. São necessárias permissões adicionais, como `UpdateTableMetadata`, `PutTableData` e `GetTableMetadataLocation`, para poder definir o esquema de tabela. Essas permissões adicionais também significam que você concederá ao usuário acesso para inserir linhas na tabela. Se quiser controlar o acesso exclusivamente com base na semântica SQL, recomendamos usar [AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) ou alguma outra solução de terceiros integrada à funcionalidade Tabelas do S3.


| Atividade ao nível da tabela | Ações do IAM | 
| --- | --- | 
| SELECT | s3tables:GetTableData, s3tables:GetTableMetadataLocation | 
| CREATE | s3tables:CreateTable, s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation,  | 
| INSERT | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation | 
| UPDATE | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation | 
| ALTER,RENAME | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation, s3tables:RenameTable  | 
| DELETE,DROP | s3tables:DeleteTable, s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation  | 

**nota**  
A permissão `s3tables:DeleteTable` é obrigatória para excluir uma tabela de um bucket de tabela. Essa permissão possibilita que você remova permanentemente uma tabela e todos os respectivos dados e metadados. Use essa permissão com cuidado, pois a operação de exclusão não pode ser desfeita.

# Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation
<a name="grant-permissions-tables"></a>

Depois que os buckets de tabela são integrados aos serviços de analytics da AWS, o Lake Formation gerencia o acesso às tabelas e exige que cada entidade principal do IAM (usuário ou perfil) receba autorização para realizar ações nelas. O Lake Formation usa um modelo de permissões próprio (permissões do Lake Formation) que permite um controle de acesso detalhado aos recursos do Catálogo de Dados. 

Para obter mais informações, consulte [“Overview of Lake Formation permissions”](https://docs.aws.amazon.com//lake-formation/latest/dg/lf-permissions-overview.html) (Visão geral das permissões do Lake Formation) no *Guia do desenvolvedor do AWS Lake Formation*.

Há dois tipos principais de permissões no AWS Lake Formation: 

1. As permissões de acesso a metadados controlam a capacidade de criar, ler, atualizar e excluir tabelas e bancos de dados de metadados no Catálogo de Dados.

1. As permissões de acesso aos dados subjacentes controlam a capacidade de ler e gravar dados nos locais do Amazon S3 subjacentes para os quais os recursos do Catálogo de Dados apontam.

O Lake Formation usa conjuntamente um modelo de permissões próprio e o modelo de permissões do IAM para controlar o acesso aos recursos do Catálogo de Dados e aos dados subjacentes:
+ Para que uma solicitação de acesso aos recursos do Catálogo de Dados ou os dados subjacentes seja bem-sucedida, ela deve passar pelas verificações de permissão do IAM e do Lake Formation.
+ As permissões do IAM controlam o acesso a APIs e recursos do Lake Formation e do AWS Glue, enquanto as permissões do Lake Formation controlam o acesso aos recursos do Catálogo de Dados, aos locais do Amazon S3 e aos dados subjacentes.

As permissões do Lake Formation se aplicam somente na região em que foram concedidas, e uma entidade principal deve ser autorizada por um administrador do data lake ou por outra entidade principal com as permissões necessárias para receber as permissões do Lake Formation. 

**nota**  
Se você é o usuário que realizou a integração do bucket de tabela, já tem permissões do Lake Formation para as tabelas. Se você é a única entidade principal que acessará as tabelas, pode ignorar esta etapa. Você só precisa conceder permissões do Lake Formation em suas tabelas a outras entidades principais do IAM. Isso permite que outras entidades principais acessem a tabela ao executar consultas. Para obter mais informações, consulte [Conceder permissão ao Lake Formation em uma tabela ou um banco de dados](#grant-lf-table). 

## Conceder permissão ao Lake Formation em uma tabela ou um banco de dados
<a name="grant-lf-table"></a>

Você pode conceder a uma entidade principal permissões do Lake Formation em uma tabela ou um banco de dados em um bucket de tabela por meio do console do Lake Formation ou da AWS CLI.

**nota**  
Quando você concede permissões do Lake Formation em um recurso do catálogo de dados para uma conta externa ou diretamente para uma entidade principal do IAM em outra conta, o Lake Formation usa o serviço do AWS Resource Access Manager (AWS RAM) para compartilhar o recurso. Se a conta do concedido estiver na mesma organização da conta do concedente, o recurso compartilhado estará disponível imediatamente para o concedido. Se a conta do concedido não estiver na mesma organização, o AWS RAM envia um convite à conta do concedido para aceitar ou rejeitar a concessão do recurso. Em seguida, para disponibilizar o recurso compartilhado, o administrador do data lake deve usar o console AWS RAM ou AWS CLI para aceitar o convite na conta do concedido. Consulte mais informações sobre o compartilhamento de dados entre contas em [Cross-account data sharing in Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html) no *Guia do desenvolvedor do AWS Lake Formation*.

------
#### [ Console ]

1. Abra o console do AWS Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) e faça login como administrador do data lake. Consulte mais informações sobre como criar um administrador de data lake em [Create a data lake administrator](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin) no *Guia do desenvolvedor do AWS Lake Formation*.

1. No painel de navegação, escolha **Permissões de dados** e **Conceder**. 

1. Na página **Conceder permissões**, em **Entidades principais**, execute um dos seguintes procedimentos:
   + Para o Amazon Athena ou o Amazon Redshift, escolha **Usuários e perfis do IAM** e selecione a entidade principal do IAM que você usa para consultas.
   + Para o Amazon Data Firehose, escolha **Usuários e perfis do IAM** e selecione o perfil de serviço que você criou para fazer streaming para as tabelas.
   + Para o Quick, escolha **Usuários e grupos SAML** e insira o nome do recurso da Amazon (ARN) do usuário administrador do Quick.
   + Para acesso ao endpoint Iceberg REST do AWS Glue, escolha **Usuários e perfis do IAM** e selecione um perfil do IAM que você criou para seu cliente. Para obter mais informações, consulte . [Criar um perfil do IAM para o cliente](s3-tables-integrating-glue-endpoint.md#glue-endpoint-create-iam-role)

1. Em **Tags do LF ou recursos de catálogo**, escolha **Recursos do catálogo de dados nomeados**.

1. Em **Catálogos**, escolha o subcatálogo que você criou ao integrar seu bucket de tabela; por exemplo, `account-id:s3tablescatalog/amzn-s3-demo-bucket`.

1. Em **Bancos de dados**, escolha o namespace do bucket de tabela do S3 que você criou.

1. (Opcional) Em **Tabelas**, escolha a tabela do S3 que você criou no bucket de tabela. 
**nota**  
Se você estiver criando uma tabela no editor de consultas do Athena, não selecione uma tabela. 

1. Execute um destes procedimentos:
   + Se você especificou uma tabela na etapa anterior, em **Permissões de tabela**, escolha **Super**.
   + Se você não especificou uma tabela na etapa anterior, acesse **Permissões do banco de dados**. Para o compartilhamento de dados entre contas, não é possível escolher **Super** para conceder à outra entidade principal todas as permissões no banco de dados. Em vez disso, escolha permissões mais detalhadas, como **Descrever**.

1. Selecione **Conceder**.

------
#### [ CLI ]

1. Você deve executar os comandos da AWS CLI a seguir como administrador do data lake. Consulte mais informações em [Create a data lake administrator](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin) no *Guia do desenvolvedor do AWS Lake Formation*.

1. Execute o comando a seguir para conceder permissões do Lake Formation em uma tabela no bucket de tabela do S3 a uma entidade principal do IAM para acessar a tabela. Para usar esse exemplo, substitua os *`user input placeholders`* por suas próprias informações. 

   ```
   aws lakeformation grant-permissions \
   --region us-east-1 \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role"
       },
       "Resource": {
           "Table": {
               "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket",
               "DatabaseName": "S3 table bucket namespace, for example, test_namespace",
               "Name": "S3 table bucket table name, for example test_table"
           }
       },
       "Permissions": [
           "ALL"
       ]
   }'
   ```

------

# Conectividade de VPC para a funcionalidade Tabelas do S3
<a name="s3-tables-VPC"></a>

Todas as tabelas na funcionalidade Tabelas do S3 estão no formato Apache Iceberg e são compostas por dois tipos de objeto do S3. Esses dois tipos de objeto são arquivos de dados que armazenam os dados e arquivos de metadados que rastreiam informações sobre os arquivos de dados em diferentes momentos. Todas as operações de buckets de tabela, namespaces e tabelas (por exemplo, `CreateNamespace`, `CreateTable` e assim por diante) são roteadas por meio de um endpoint da funcionalidade Tabelas do S3 (`s3tables.region.amazonaws.com`) e todas as operações ao nível do objeto que leem ou gravam os arquivos de dados e metadados continuam sendo roteadas por meio de um endpoint de serviço do S3 (`s3.region.amazonaws.com`). 

Para acessar a funcionalidade Tabelas do S3, o Amazon S3 oferece suporte a dois tipos de endpoint da VPC usando o AWS PrivateLink: endpoints de gateway e endpoints de interface. Um endpoint de gateway é um gateway que você especifica na tabela de rotas para acessar o S3 por meio da VPC pela rede da AWS. Os endpoints de interface estendem a funcionalidade dos endpoints de gateway usando endereços IP privados para rotear solicitações ao Amazon S3 de dentro da VPC on-premises ou de uma VPC em outra Região da AWS usando emparelhamento da VPC ou o AWS Transit Gateway. 

Para acessar a funcionalidade Tabelas do S3 de uma VPC, recomendamos criar dois endpoints da VPC (um para o S3 e outro para a funcionalidade Tabelas do S3). Você pode criar um endpoint de gateway ou de interface para rotear operações ao nível do arquivo (objeto) para o S3 e um endpoint de interface para rotear operações ao nível do bucket e da tabela para a funcionalidade Tabelas do S3. Você pode criar e usar endpoints da VPC para solicitações ao nível do arquivo usando o S3. Para ter mais informações, consulte [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html) no Guia do usuário do *AWS PrivateLink*. 

Para saber mais sobre como usar o AWS PrivateLink para criar e trabalhar com endpoints na funcionalidade Tabelas do S3, consulte os tópicos a seguir. Para criar um endpoint da VPC de interface, consulte [Create a VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) (Criar um endpoint da VPC) no *Guia do AWS PrivateLink*.

**Topics**
+ [

## Criar endpoints da VPC para a funcionalidade Tabelas do S3
](#s3-tables-endpoints)
+ [

## Acessar tabelas e buckets de tabela por meio de endpoints usando a AWS CLI
](#s3-tables-endpoints-cli-sdks)
+ [

## Configurar uma rede de VPC ao usar mecanismos de consulta
](#s3-tables-query-engine)
+ [

## Usar os endpoints de pilha dupla para acessar tabelas e buckets de tabela
](#s3-tables-dual-stack-endpoints)
+ [

## Restringir o acesso à funcionalidade Tabelas do S3 na rede da VPC
](#s3-tables-VPC-policy)

## Criar endpoints da VPC para a funcionalidade Tabelas do S3
<a name="s3-tables-endpoints"></a>

Quando você cria um endpoint da VPC, a funcionalidade Tabelas do S3 gera dois tipos de nomes DNS específicos do endpoint: regionais e zonais. 
+ Um nome DNS regional tem o seguinte formato: `VPCendpointID.s3tables.AWSregion.vpce.amazonaws.com`. Por exemplo, para o ID do endpoint da VPC `vpce-1a2b3c4d`, o nome DNS gerado será semelhante a `vpce-1a2b3c4d-5e6f.s3tables.us-east-1.vpce.amazonaws.com`. 
+ Um nome DNS zonal tem o seguinte formato: `VPCendpointID-AvailabilityZone.s3tables.AWSregion.vpce.amazonaws.com`. Por exemplo, para o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.`, o nome DNS gerado será semelhante a `vpce-1a2b3c4d-5e6f-us-east-1a.s3tables.us-east-1.vpce.amazonaws.com`. 

   Um nome DNS zonal inclui a zona de disponibilidade. Você pode usar os nomes DNS zonais quando a arquitetura isola zonas de disponibilidade. Os nomes DNS do S3 específicos do endpoint podem ser resolvidos por meio do domínio DNS público do S3. 

Você também pode usar as opções de DNS privado para simplificar o roteamento de tráfego do S3 pelos endpoints da VPC e ajudar a aproveitar o caminho de rede de menor custo disponível para a aplicação. O DNS privado mapeia o endpoint público da funcionalidade Tabelas do S3, por exemplo, `s3tables.region.amazonaws.com`, para um IP privado na VPC. Você pode usar as opções de DNS privado para rotear o tráfego regional do S3 sem atualizar os clientes do S3 para usar os nomes DNS específicos dos endpoints de interface.

## Acessar tabelas e buckets de tabela por meio de endpoints usando a AWS CLI
<a name="s3-tables-endpoints-cli-sdks"></a>

Você pode usar a AWS Command Line Interface (AWS CLI) para acessar tabelas e buckets de tabela por meio dos endpoints de interface. Com a AWS CLI, os comandos `aws s3` roteiam o tráfego pelo endpoint do Amazon S3. Os comandos `aws s3tables` da AWS CLI usam o endpoint da funcionalidade Tabelas do Amazon S3. 

Um exemplo de um endpoint da VPC `s3tables` é `vpce-0123456afghjipljw-nmopsqea.s3tables.region.vpce.amazonaws.com`.

Um endpoint da VPC `s3tables` não inclui um nome de bucket. Você pode acessar o endpoint da VPC `s3tables` usando os comandos `aws s3tables` da AWS CLI.

Um exemplo de um endpoint da VPC `s3` é `amzn-s3-demo-bucket.vpce-0123456afghjipljw-nmopsqea.s3.region.vpce.amazonaws.com`.

Você pode acessar o endpoint da VPC `s3` usando os comandos `aws s3` da AWS CLI.

### Usar o AWS CLI
<a name="set-s3tables-vpc-cli"></a>

Para acessar tabelas e buckets de tabela por meio de endpoints de interface usando a AWS CLI, use os parâmetros `-region` e `--endpoint-url`. Para realizar ações ao nível da tabela e do bucket de tabela, use o URL de endpoint da funcionalidade Tabelas do S3. Para realizar ações ao nível do objeto, use o URL de endpoint do Amazon S3.

Nos exemplos a seguir, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Exemplo 1: usar um URL de endpoint para listar os buckets de tabela de uma conta**

```
aws s3tables list-table-buckets --endpoint https://vpce-0123456afghjipljb-aac.s3tables.us-east-1.vpce.amazonaws.com —region us-east-1
```

**Exemplo 2: usar um URL de endpoint para listar as tabelas em seu bucket**

```
aws s3tables list-tables --table-bucket-arn arn:aws:s3tables:us-east-1:123456789301:bucket/amzn-s3-demo-bucket --endpoint https://vpce-0123456afghjipljb-aac.s3tables.us-east-1.vpce.amazonaws.com --region us-east-1
```

## Configurar uma rede de VPC ao usar mecanismos de consulta
<a name="s3-tables-query-engine"></a>

Use as etapas a seguir para configurar uma rede de VPC ao usar mecanismos de consulta. 

1. Para começar, você pode criar ou atualizar uma VPC. Para obter mais informações, consulte [Criar uma VPC](https://docs.aws.amazon.com//vpc/latest/userguide/create-vpc.html#create-vpc-and-other-resources).

1.  Para operações ao nível da tabela e do bucket de tabela que são roteadas para a funcionalidade Tabelas do S3, crie um endpoint de interface. Para obter mais informações, consulte [Acessar um serviço da AWS usando um endpoint da VPC de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws).

1.  Para todas as operações ao nível do objeto que são roteadas para o Amazon S3, crie um endpoint de gateway ou um endpoint de interface. Para ter mais informações sobre os endpoints de gateway, consulte [Create a gateway endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3).

1.  Depois, configure recursos de dados e inicialize um cluster do Amazon EMR. Para ter mais informações, consulte [Getting started with Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).

1. Em seguida, você pode enviar uma aplicação do Spark com uma configuração adicional selecionando os nomes DNS no endpoint da VPC. Por exemplo, `spark.sql.catalog.ice_catalog.s3tables.endpoint` e `https://interface-endpoint.s3tables.us-east-1.vpce.amazonaws.com`. Para ter mais informações, consulte [Submit work to your Amazon EMR cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html#emr-getting-started-manage).

## Usar os endpoints de pilha dupla para acessar tabelas e buckets de tabela
<a name="s3-tables-dual-stack-endpoints"></a>

A funcionalidade Tabelas do S3 permite conectividade de pilha dupla para o AWS PrivateLink. Os endpoints de pilha dupla permitem o acesso a buckets de tabela do S3 usando o protocolo de internet versão 6 (IPv6), além do protocolo IPv4, dependendo do que sua rede permite. Você pode acessar um bucket do S3 por meio de um endpoint de pilha dupla usando a seguinte convenção de nomenclatura: 

```
s3tables.<region>.api.aws
```

Essas são algumas questões das quais você deve estar ciente antes de tentar acessar a tabelas e buckets de tabela do S3 por IPv6 na VPC:
+ O cliente usado para acessar tabelas e seu cliente do S3 devem ter a opção pilha dupla habilitada.
+ A entrada IPv6 não está habilitada por padrão para grupos de segurança da VPC. Para permitir o acesso IPv6, você precisará adicionar uma nova regra que permita HTTPS (porta TCP 443) ao seu grupo de segurança. Para ter mais informações, consulte [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules) no *Guia do usuário do Amazon EC2*
+ Se a VPC não tiver CIDRs IPv6 atribuídos, você precisará adicionar manualmente um bloco CIDR IPv6 à VPC. Para ter mais informações, consulte [https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) no *Guia do usuário do AWS PrivateLink*.
+ Se você usa políticas do IAM de filtragem de endereços IP, elas devem ser atualizadas para lidar com endereços IPv6. Para ter mais informações sobre como gerenciar permissões de acesso com o IAM, consulte [Gerenciamento de identidade e acesso para o Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html).

Para criar um endpoint da VPC que usa o endpoint de pilha dupla para tabelas do S3, use este exemplo de comando da CLI:

```
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-id \
  --service-name com.amazonaws.aws-region.s3tables \
  --subnet-ids subnet-1 subnet-2 \
  --vpc-endpoint-type Interface \
  --ip-address-type dualstack \
  --dns-options "DnsRecordIpType=dualstack" \
  --security-group-ids sg-id \
  --region aws-region
```

Para ter mais informações sobre como criar endpoints da VPC, consulte [https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) no “Guia do usuário da VPC”.

Se sua rede permitir IPv6 e você quiser atualizar a VPC para habilitar IPv6, é possível usar o seguinte comando da CLI:

```
aws ec2 modify-vpc-endpoint \
  --vpc-endpoint-id vpce-id \
  --ip-address-type dualstack \
  --dns-options "DnsRecordIpType=dualstack" \
  --region aws-region
```

## Restringir o acesso à funcionalidade Tabelas do S3 na rede da VPC
<a name="s3-tables-VPC-policy"></a>

Semelhante às políticas baseadas em recurso, você pode anexar uma política de endpoint ao endpoint da VPC que controla o acesso às tabelas e aos buckets de tabela. No exemplo a seguir, a política de endpoint de interface restringe o acesso somente a buckets de tabela específicos.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy141511512309",
    "Statement": [
        {
            "Sid": "Access-to-specific-bucket-only",
            "Principal": "*",
            "Action": "s3tables:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

# Considerações e limitações de segurança para a funcionalidade Tabelas do S3
<a name="s3-tables-restrictions"></a>

A lista a seguir descreve quais recursos e funções de segurança e controle de acesso são incompatíveis ou limitados para a funcionalidade Tabelas do S3.
+ As políticas de acesso público não são compatíveis. Os usuários não podem modificar políticas de bucket ou de tabela para permitir acesso público.
+ Os URLs pré-assinados para acessar objetos associados a uma tabela não são compatíveis.
+ Solicitações feitas por HTTP não são compatíveis. O Amazon S3 responde automaticamente com um redirecionamento HTTP em todas as solicitações feitas por HTTP a fim de atualizar as solicitações para HTTPS.
+ É necessário usar o AWS Signature Version 4 ao fazer solicitações a um ponto de acesso usando as APIs REST.
+ As solicitações feitas pelo protocolo de internet versão 6 (IPv6) são compatíveis apenas com ações ao nível do objeto em endpoints de armazenamento de tabelas, e não com ações ao nível da tabela e do bucket.
+ As políticas de acesso a tabelas e buckets de tabela são limitadas a 20 KB.

# Registro em log e monitoramento para Tabelas do S3
<a name="s3-tables-monitoring-overview"></a>

O monitoramento é uma parte importante para manter a confiabilidade, a disponibilidade e o desempenho da funcionalidade Tabelas do Amazon S3. Recomendamos coletar dados de monitoramento de suas tabelas em buckets de tabela para que possa depurar mais facilmente uma falha multiponto, caso ocorra.

A AWS oferece várias ferramentas para monitorar os recursos da funcionalidade Tabelas do S3 e responder a possíveis incidentes.

**Alarmes do Amazon CloudWatch**  
Com o uso de alarmes do Amazon CloudWatch, você observa uma única métrica durante um período especificado. Se a métrica ultrapassar um limite especificado, uma notificação será enviada para um tópico do Amazon SNS ou para uma política do AWS Auto Scaling. Os alarmes do CloudWatch não invocam ações só porque estão em um determinado estado. O estado deve ter sido alterado e mantido por uma quantidade especificada de períodos. Para obter mais informações, consulte [Monitoramento de métricas com o Amazon CloudWatch](cloudwatch-monitoring.md).

**AWS CloudTrailLogs do **  
O CloudTrail fornece um registro de ações executadas por um usuário, uma função ou um serviço da AWS no Amazon S3. Usando as informações coletadas pelo CloudTrail, é possível determinar a solicitação feita para o Amazon S3, o endereço IP do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e detalhes adicionais. Para obter mais informações, consulte [Registrar chamadas de API do Amazon S3 em log usando AWS CloudTrail](cloudtrail-logging.md).

**Topics**
+ [

# Registro em log com o AWS CloudTrail para a funcionalidade Tabelas do S3
](s3-tables-logging.md)
+ [

# Monitoramento de métricas com o Amazon CloudWatch
](s3-tables-cloudwatch-metrics.md)

# Registro em log com o AWS CloudTrail para a funcionalidade Tabelas do S3
<a name="s3-tables-logging"></a>

 O Amazon S3 é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, um perfil ou um serviço da AWS. O CloudTrail captura todas as chamadas de API para o Amazon S3 como eventos. Ao fazer uso das informações coletadas pelo CloudTrail, é possível determinar a solicitação feita ao Amazon S3, o endereço IP que a realizou, quando ela foi feita e detalhes adicionais. Quando ocorre alguma atividade de evento aceita no Amazon S3, essa atividade é registrada em um evento do CloudTrail. É possível usar a trilha do AWS CloudTrail para registrar eventos de gerenciamento e de dados em log para a funcionalidade Tabelas do S3. Para ter mais informações, consulte [Eventos do CloudTrail no Amazon S3](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) e [What is AWS CloudTrail?](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) no *Guia do usuário do AWS CloudTrail*.

## Eventos de gerenciamento do CloudTrail para a funcionalidade Tabelas do S3
<a name="s3-tables-management-events"></a>

Os eventos de gerenciamento fornecem informações sobre operações de gerenciamento executadas em recursos na sua conta da AWS. 

Por padrão, o CloudTrail registra eventos de gerenciamento em log para a funcionalidade Tabelas do S3. O `eventsource` para eventos de gerenciamento do CloudTrail para a funcionalidade Tabelas do S3 é ` s3tables.amazonaws.com`. Quando você configura a conta AWS, os eventos de gerenciamento do CloudTrail são habilitados por padrão. As ações de API a seguir são rastreadas pelo CloudTrail e registradas em log como eventos de gerenciamento. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_CreateNamespace.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_CreateNamespace.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_CreateTable.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_CreateTable.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_CreateTableBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_CreateTableBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteNamespace.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteNamespace.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTableBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTableBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTableBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTableBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTablePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTablePolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetNamespace.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetNamespace.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTable.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTable.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableBucketMaintenanceConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMaintenanceConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMaintenanceJobStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMaintenanceJobStatus.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTablePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTablePolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_ListNamespaces.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_ListNamespaces.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_ListTableBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_ListTableBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_ListTables.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_ListTables.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutTableBucketMaintenanceConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutTableMaintenanceConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutTablePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_PutTablePolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_RenameTable.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_RenameTable.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_UpdateTableMetadataLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_UpdateTableMetadataLocation.html)

Para ter mais informações sobre eventos de gerenciamento do CloudTrail, consulte [Logging management events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html) no *Guia do usuário do AWS CloudTrail*. 

## Eventos de gerenciamento do CloudTrail para manutenção da funcionalidade Tabelas do S3
<a name="s3-tables-maintenance-events"></a>

O S3 registra em log as operações de manutenção automática como eventos `TablesMaintenanceEvent` de gerenciamento no CloudTrail. Esses eventos ocorrem durante determinadas operações, como compactação e expiração de snapshots. Para ter mais informações sobre a manutenção de tabelas do S3, consulte [Manutenção de tabelas](s3-tables-maintenance.md).

### Como identificar eventos de manutenção
<a name="identify-maintenance-event"></a>

É possível identificar eventos de manutenção da funcionalidade Tabelas do S3 em logs do CloudTrail por meio dos seguintes valores de atributo:
+ `eventSource: s3tables.amazonaws.com`
+ `eventType: AwsServiceEvent`
+ `eventName: TablesMaintenanceEvent`
+ `userAgent: maintenance.s3tables.amazonaws.com`
+ `activityType:`
  + `IcebergCompaction` (para compactação).
  + `IcebergSnapshotManagement` (para expiração de snapshot).

Para ver um exemplo de evento de manutenção de compactação, consulte [Exemplo: arquivo de log do CloudTrail para evento de gerenciamento de manutenção de tabelas](s3-tables-log-files.md#example-ct-log-s3tables-3).

## Eventos de dados do CloudTrail para a funcionalidade Tabelas do S3
<a name="s3-tables-data-events"></a>

Os eventos de dados fornecem informações sobre as operações realizadas em um recurso ou dentro dele. Por padrão, as trilhas do CloudTrail não registram eventos de dados em log, mas é possível configurar as trilhas para que façam isso. 

Ao registrar eventos de dados em log para uma trilha no CloudTrail, você escolherá ou especificará o tipo de recurso. A funcionalidade Tabelas do S3 tem dois tipos de recurso, `AWS::S3Tables::Table` e `AWS::S3Tables::TableBucket`. 

Os eventos de dados a seguir são registrados em log no CloudTrail. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)

Para ter mais informações sobre os eventos de dados do CloudTrail, consulte [Logging data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) no *Guia do usuário do AWS CloudTrail*. 

Para ter mais informações sobre os eventos do CloudTrail para a funcionalidade Tabelas do S3, consulte os seguintes tópicos: 

**Topics**
+ [

## Eventos de gerenciamento do CloudTrail para a funcionalidade Tabelas do S3
](#s3-tables-management-events)
+ [

## Eventos de gerenciamento do CloudTrail para manutenção da funcionalidade Tabelas do S3
](#s3-tables-maintenance-events)
+ [

## Eventos de dados do CloudTrail para a funcionalidade Tabelas do S3
](#s3-tables-data-events)
+ [

# Exemplos de arquivos de log de eventos de dados do AWS CloudTrail para a funcionalidade Tabelas do S3
](s3-tables-log-files.md)

# Exemplos de arquivos de log de eventos de dados do AWS CloudTrail para a funcionalidade Tabelas do S3
<a name="s3-tables-log-files"></a>

O arquivo de log do AWS CloudTrail inclui informações sobre a operação de API solicitada, a data e a hora da operação, os parâmetros de solicitação etc. Este tópico fornece exemplos de arquivos de log para eventos de dados do CloudTrail para a funcionalidade Tabelas do S3.

**Topics**
+ [

## Exemplo: arquivo de log do CloudTrail para evento de dados de `GetObject`
](#example-ct-log-s3tables)
+ [

## Exemplo: arquivo de log do CloudTrail para evento de gerenciamento de manutenção de tabelas
](#example-ct-log-s3tables-3)
+ [

## Exemplo: arquivo de log do CloudTrail para evento de dados de `PutObject`
](#example-ct-log-s3tables-2)

## Exemplo: arquivo de log do CloudTrail para evento de dados de `GetObject`
<a name="example-ct-log-s3tables"></a>

Veja a seguir um exemplo de arquivo de log do CloudTrail que demonstra a operação de API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). 

```
    {
        "eventVersion": "1.11",
        "userIdentity": {
          "type": "IAMUser",
          "principalId": "123456789012",
          "arn": "arn:aws:iam::111122223333:user/"myUserName",
          "accountId": "111122223333",
          "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "userName":"myUserName"
        },
        "eventTime": "2024-11-22T17:12:25Z",
        "eventSource": "s3tables.amazonaws.com",
        "eventName": "GetObject",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "192.0.2.0",
        "userAgent": "[aws-cli/2.18.5]",
        "requestParameters": {
            "Host": "tableWarehouseLocation.s3.us-east-1.amazonaws.com",
            "key": "product-info.json"
        },
        "responseElements":  null,
        "additionalEventData": {
            "SignatureVersion": "SigV4",
            "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
            "bytesTransferredIn": 0,
            "AuthenticationMethod": "AuthHeader",
            "xAmzId2": "q6xhNJYmhg",
            "bytesTransferredOut": 28441
            
          },
          "requestID": "07D681123BD12AED",
          "eventID": "f2b287f3-0df1-1234-a2f4-c4bdfed47657",
          "readOnly": true,
          "resources": [{
              "accountId": "111122223333",
              "type": "AWS::S3Tables::TableBucket",
               "ARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1"
           }, {
              "accountId": "111122223333",
              "type": "AWS::S3Tables::Table",
              "ARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/111aa1111-22bb-33cc-44dd-5555eee66ffff"

           }],               
           "eventType": "AwsApiCall",
           "managementEvent": false,
           "recipientAccountId": "444455556666",
           "eventCategory": "Data",
           "tlsDetails": {
             "tlsVersion": "TLSv1.2",
             "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
             "clientProvidedHostHeader": "tableWarehouseLocation.s3.us-east-1.amazonaws.com"
          }
    }
```

## Exemplo: arquivo de log do CloudTrail para evento de gerenciamento de manutenção de tabelas
<a name="example-ct-log-s3tables-3"></a>

Veja a seguir um exemplo de arquivo de log do CloudTrail que demonstra um evento de manutenção para compactação de tabelas realizado pelo S3 como parte da manutenção automática de tabelas. Para ter mais informações sobre eventos de manutenção de tabelas, consulte [Eventos de gerenciamento do CloudTrail para manutenção da funcionalidade Tabelas do S3](s3-tables-logging.md#s3-tables-maintenance-events).

```
{
  "eventVersion": "1.11",
  "userIdentity": {
    "type": "AWSService",
    "invokedBy": "maintenance.s3tables.amazonaws.com"
  },
  "eventTime": "2025-09-18T20:13:14Z",
  "eventSource": "s3tables.amazonaws.com",
  "eventName": "TablesMaintenanceEvent",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "maintenance.s3tables.amazonaws.com",
  "userAgent": "maintenance.s3tables.amazonaws.com",
  "requestParameters": null,
  "responseElements": null,
  "eventID": "b8f96329-ef5c-32b5-94f6-eeed9061ea32",
  "readOnly": false,
  "resources": [
    {
      "accountId": "111122223333",
      "type": "AWS::S3Tables::TableBucket",
      "ARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket"
    },
    {
      "accountId": "111122223333",
      "type": "AWS::S3Tables::Table",
      "ARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/7ff7750e-23b3-481e-a90a-7d87d423d336"
    }
  ],
  "eventType": "AwsServiceEvent",
  "managementEvent": true,
  "recipientAccountId": "111122223333",
  "sharedEventID": "62a57826-a66e-479b-befa-0e65663ee9e8",
  "serviceEventDetails": {
    "activityType": "icebergCompaction"
  },
  "eventCategory": "Management"
}
```

## Exemplo: arquivo de log do CloudTrail para evento de dados de `PutObject`
<a name="example-ct-log-s3tables-2"></a>

Veja a seguir um exemplo de arquivo de log do CloudTrail que demonstra a operação de API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html). 

```
{
        "eventVersion": "1.11",
        "userIdentity": {
          "type": "IAMUser",
          "principalId": "123456789012",
          "arn":  "arn:aws:iam::444455556666:user/"myUserName",
          "accountId": "444455556666",
          "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
          "userName":"myUserName"
        },
        "eventTime": "2024-11-22T17:12:25Z",
        "eventSource": "s3tables.amazonaws.com",
        "eventName": "PutObject",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "192.0.2.0",
        "userAgent": "[aws-cli/2.18.5]",
        "requestParameters": {
            "Host": "tableWarehouseLocation.s3.us-east-1.amazonaws.com",
            "key": "product-info.json"
        },
        "responseElements":  {
            "x-amz-server-side-encryption": "AES256",
            "x-amz-version-id": "13zAFMdccAjt3MWd6ehxgCCCDRdkAKDw"
        },
        "additionalEventData": {
            "SignatureVersion": "SigV4",
            "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
            "bytesTransferredIn": 28441,
            "AuthenticationMethod": "AuthHeader",
            "xAmzId2": "q6xhCJYmhg",
            "bytesTransferredOut": 0
            
          },
          "requestID": "28d2faaf-1234-4649-997d-EXAMPLE72818",
          "eventID": "694d604a-d190-1234-0dd1-EXAMPLEe20c1",
          "readOnly": false,
          "resources": [{
              "accountId": "444455556666",
              "type": "AWS::S3Tables::TableBucket",
               "ARN": "arn:aws:s3tables:us-east-1:444455556666:bucket/amzn-s3-demo-bucket1"
           }, {
              "accountId": "444455556666",
              "type": "AWS::S3Tables::Table",
              "ARN": "arn:aws:s3tables:us-east-1:444455556666:bucket/amzn-s3-demo-bucket1/table/b89ec883-b1d9-4b37-9cd7-b86f590123f4"
           }],               
           "eventType": "AwsApiCall",
           "managementEvent": false,
           "recipientAccountId": "111122223333",
           "eventCategory": "Data",
           "tlsDetails": {
             "tlsVersion": "TLSv1.2",
             "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
             "clientProvidedHostHeader": "tableWarehouseLocation.s3.us-east-1.amazonaws.com"
            }
          }
```

# Monitoramento de métricas com o Amazon CloudWatch
<a name="s3-tables-cloudwatch-metrics"></a>

É possível usar métricas do Amazon CloudWatch para monitorar o desempenho, detectar anomalias e monitorar a integridade operacional das tabelas. Existem vários conjuntos de métricas do CloudWatch que você pode usar com a funcionalidade Tabelas do S3.

**Métricas diárias de armazenamento para tabelas e buckets de tabela**  
Monitore a quantidade de dados armazenados em tabelas e buckets de tabela, como o tamanho total em bytes e o número de arquivos. Essas métricas rastreiam o total de bytes de armazenamento por nível de acesso e contagens de arquivos em nível de bucket de tabela, de tabela e de namespace. As métricas de armazenamento para a funcionalidade Tabelas do S3 são relatadas uma vez por dia e fornecidas para todos os clientes sem nenhum custo adicional.

**Métricas de manutenção de tabelas**  
Monitore as operações de manutenção automatizada realizadas pelo Amazon S3 em suas tabelas, como compactação. Essas métricas rastreiam o número de bytes e arquivos processados durante as atividades de manutenção. As métricas de armazenamento para a funcionalidade Tabelas do S3 são relatadas uma vez por dia e fornecidas para todos os clientes sem nenhum custo adicional.

**Métricas de solicitação**  
Monitore as solicitações funcionalidade Tabelas do S3 para identificar e agir rapidamente em caso de problemas operacionais. Essas métricas do CloudWatch podem ser habilitadas opcionalmente para buckets de tabela individuais. As métricas de solicitação da funcionalidade Tabelas do S3 são relatadas uma vez a cada minuto e são cobradas com base na mesma taxa das métricas personalizadas do CloudWatch. As métricas da solicitação incluem:  
+ contagens de operações do plano de dados (GET, PUT, HEAD e POST)
+ bytes transferidos
+ medidas de latência
+ taxas de erro

**nota**  
**Entrega de métricas do CloudWatch com o melhor esforço**  
As métricas do CloudWatch são entregues com base em melhor esforço. A maioria de solicitações para um objeto do Amazon S3 que tenha métricas de solicitações resulta no envio de um ponto de dados ao CloudWatch.  
A integridade e pontualidade das métricas não são garantidas. O ponto de dados para uma solicitação específica pode ser retornado com um timestamp posterior à solicitação processada. O ponto de dados de um minuto pode ser atrasado antes de ser disponibilizado pelo CloudWatch ou pode nem ser entregue. As métricas de solicitação do CloudWatch lhe dão uma ideia da natureza do tráfego em seu bucket em tempo quase real. Não se trata de uma contabilidade completa de todas as solicitações. Devido à natureza de melhor esforço deste recurso, os relatórios disponíveis no Painel de faturamento e de gerenciamento de custo podem incluir uma ou mais solicitações de acesso que não aparecem nas métricas do bucket.

# Métricas e dimensões
<a name="s3-tables-metrics-dimensions"></a>

As métricas e dimensões que o Amazon S3 envia ao Amazon CloudWatch estão listadas nas tabelas a seguir.

**nota**  
**Entrega de métricas do CloudWatch com o melhor esforço**  
As métricas do CloudWatch são entregues com base em melhor esforço. A maioria de solicitações para um objeto do Amazon S3 que tenha métricas de solicitações resulta no envio de um ponto de dados ao CloudWatch.  
A integridade e pontualidade das métricas não são garantidas. O ponto de dados para uma solicitação específica pode ser retornado com um timestamp posterior à solicitação processada. O ponto de dados de um minuto pode ser atrasado antes de ser disponibilizado pelo CloudWatch ou pode nem ser entregue. As métricas de solicitação do CloudWatch lhe dão uma ideia da natureza do tráfego em seu bucket em tempo quase real. Não se trata de uma contabilidade completa de todas as solicitações. Devido à natureza de melhor esforço deste recurso, os relatórios disponíveis no Painel de faturamento e de gerenciamento de custo podem incluir uma ou mais solicitações de acesso que não aparecem nas métricas do bucket.

## Métricas diárias de armazenamento para buckets de tabela no CloudWatch
<a name="daily-storage-metrics"></a>

O namespace `AWS/S3/Tables` inclui as métricas diárias de armazenamento a seguir, que estão sempre disponíveis sem custo adicional. É possível filtrar essas métricas por bucket de tabela, tabela ou nome de namespace.


**Métricas diárias de armazenamento**  

| Nome da métrica | Descrição | Unidades | Statistics | Granularity | 
| --- | --- | --- | --- | --- | 
| Total Bucket Storage | A quantidade de armazenamento em bytes usada por todas as tabelas em um bucket de tabela. | Bytes | Soma | Por dia | 
| Total number of files | A contagem total de todos os arquivos armazenados em um bucket de tabela. | Contagem | Soma | Por dia | 

## Métricas de manutenção de tabelas
<a name="table-maintenance-metrics"></a>

O namespace `AWS/S3/Tables` inclui as métricas de manutenção de tabelas a seguir, que estão sempre disponíveis sem custo adicional. É possível filtrar essas métricas por bucket de tabela, tabela ou nome de namespace.


**Métricas de manutenção de tabelas**  

| Nome da métrica | Descrição | Unidades | Statistics | Granularity | 
| --- | --- | --- | --- | --- | 
| CompactionBytesProcessed | O número de bytes processados durante as operações de compactação de tabela. | Bytes | Soma | Por dia | 
| CompactionObjectsCount | O número de objetos processados durante as operações de compactação de tabela. | Contagem | Soma | Por dia | 

## Solicitar métricas para tabelas e buckets de tabela no CloudWatch
<a name="request-metrics"></a>

O namespace `AWS/S3/Tables` inclui as métricas de solicitação a seguir, que são cobradas usando a mesma taxa das métricas personalizadas do CloudWatch. É possível filtrar essas métricas por bucket de tabela, tabela ou nome de namespace.


**Métricas de solicitação**  

| Nome da métrica | Descrição | Unidades | Statistics | Granularity | 
| --- | --- | --- | --- | --- | 
| All requests count | O número de solicitações HTTP feitas a um bucket de tabela. | Contagem | Soma | 1 minuto | 
| Get requests count | O número de solicitações HTTP GET feitas para recuperar objetos de tabelas. | Contagem | Soma | 1 minuto | 
| Put requests count | O número de solicitações HTTP PUT feitas para recuperar objetos de tabelas. | Contagem | Soma | 1 minuto | 
| Head requests count | O número de solicitações HTTP HEAD feitas para recuperar objetos de tabelas. | Contagem | Soma | 1 minuto | 
| Post requests counts | O número de solicitações HTTP POST feitas para tabelas. | Contagem | Soma | 1 minuto | 
| UpdateTableMetadataLocation requests count | O número de solicitações feitas para atualizar locais de metadados de tabela. | Contagem | Soma | 1 minuto | 
| GetTableMetadataLocation requests count | O número de solicitações feitas para recuperar locais de metadados de tabela. | Contagem | Soma | 1 minuto | 
| BytesDownloaded | O número de bytes baixados para solicitações de tabela. | Bytes | Soma | 1 minuto | 
| BytesUploaded | O número de bytes carregados para solicitações de tabela. | Bytes | Soma | 1 minuto | 
| 4xxErros | A contagem de códigos de status de erro do cliente HTTP 4xx exibidos. | Contagem | Soma | 1 minuto | 
| 5xxErros | A contagem de códigos de status de erro do servidor HTTP 5xx exibidos. | Contagem | Soma | 1 minuto | 
| FirstByteLatency | O tempo por solicitação desde o recebimento da solicitação completa até o momento em que a resposta começa a ser exibida. | Milissegundos | Soma | 1 minuto | 
| TotalRequestLatency | O tempo por solicitação decorrido do primeiro byte recebido até o último byte enviado. | Milissegundos | Soma | 1 minuto | 

## Dimensões da funcionalidade Tabelas do S3 no CloudWatch
<a name="s3-tables-dimensions"></a>

As dimensões a seguir são usadas para filtrar métricas da funcionalidade Tabelas do S3.


**Dimensões da funcionalidade Tabelas do S3**  

| Nome da dimensão | Descrição | Valor de exemplo | 
| --- | --- | --- | 
| TableBucketName | O nome do bucket de tabela do Amazon S3 | my-table-bucket | 
| Namespace | O namespace dentro do bucket de tabela que contém uma ou mais tabelas | my-department | 
| TableName | O nome de uma tabela específica em um namespace | transactions | 

# Acessar métricas do CloudWatch
<a name="s3-tables-accessing-cloudwatch-metrics"></a>

Você pode monitorar essas métricas da funcionalidade Tabelas do S3 usando o console do CloudWatch, a AWS CLI ou a API do CloudWatch. Esta seção explica como acessar suas métricas usando esses diferentes métodos.

## Usar o console do S3
<a name="tables-metrics-using-console"></a>

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 lista de buckets, selecione o nome do bucket que contém as tabelas para as quais você deseja ver métricas.

1. Escolha a guia **Métricas**.

1. Escolha a opção **Visualizar no CloudWatch** em qualquer painel de métricas para navegar até o console do CloudWatch e ver as métricas disponíveis no namespace `AWS/S3/Tables`.

## Como usar o AWS CLI
<a name="tables-metrics-using-cli"></a>

Para listar métricas para a funcionalidade Tabelas do S3 usando a AWS CLI, use o comando `list-metrics` com o parâmetro `--namespace` definido como `AWS/S3/Tables`:

```
aws cloudwatch list-metrics --namespace AWS/S3/Tables
```

Para obter estatísticas de uma métrica específica da funcionalidade Tabelas do S3, use o comando `get-metric-statistics`. Por exemplo:

```
aws cloudwatch get-metric-statistics \
--namespace AWS/S3/Tables \
--metric-name TotalBucketStorage \
--dimensions Name=TableBucketName,Value=MyTableBucket \
--start-time 2025-03-01T00:00:00 \
--end-time 2025-03-02T00:00:00 \
--period 86400 \
--statistics Average
```

## Práticas recomendadas
<a name="best-practices"></a>
+ Ao recuperar métricas, defina o valor do período com base na granularidade da métrica. Para métricas diárias (como métricas de armazenamento), use 86.400 segundos (24 horas). Para métricas de minutos (como métricas de solicitação), use 60 segundos.
+ Use as dimensões adequadamente para filtrar as métricas de acordo com o escopo desejado (bucket de tabela, namespace ou nível de tabela individual).
+ Considere a possibilidade de usar matemática métrica para criar métricas derivadas que atendam melhor às suas necessidades de monitoramento.

## Recursos relacionados
<a name="related-resources"></a>
+ [Conceitos do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)
+ [Usar painéis do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)

# Gerenciar métricas do CloudWatch
<a name="s3-tables-managing-cloudwatch-metrics"></a>

As métricas de armazenamento estão habilitadas por padrão para todas as tabelas e buckets de tabela do Amazon S3. É possível habilitar ou desabilitar métricas adicionais de solicitação por meio do console, da AWS Command Line Interface (AWS CLI) ou de SDKs da AWS.

## Pré-requisitos
<a name="prerequisites"></a>
+ Requer a permissão `s3table:PutTableBucketMetricsConfiguration` do IAM

**nota**  
As métricas de solicitação da funcionalidade Tabelas do S3 são cobradas usando a mesma taxa das métricas personalizadas do CloudWatch.

## Usar do o Console do Gerenciamento da AWS
<a name="using-console-managing"></a>

Como habilitar ou desabilitar métricas adicionais

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 lista de buckets, selecione o nome do bucket de tabela que contém as tabelas para as quais você deseja solicitar métricas.

1. Escolha a guia **Métricas**.

1. No painel “Métricas da solicitação”, escolha **Editar**.

1. Escolha **Habilitar** ou **Desabilitar** e selecione **Salvar alterações**.

## Como usar o AWS CLI
<a name="using-cli-managing"></a>

Estes exemplos mostram como habilitar ou desabilitar métricas de solicitação para buckets de tabela usando a AWS CLI. Para usar esses comandos, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Example : habilitar as métricas de solicitação para um bucket de tabela**  

```
aws s3tables put-table-bucket-metrics-configuration \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
```

**Example : desabilitar as métricas de solicitação para um bucket de tabela**  

```
aws s3tables delete-table-bucket-metrics-configuration \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
```