

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