

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