Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS - Amazon Simple Storage Service

Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS

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.

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 obter mais informações, consulte Preços do AWS Glue.

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

Os pré-requisitos a seguir se aplicam para integrar buckets de tabela a serviços de analytics da 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_INTERNAL_ERROR: 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 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.

  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

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

  3. Escolha Criar bucket de tabela.

    A página Criar bucket de tabela é aberta.

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

  5. 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 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
  2. 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
    2. 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
  3. 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
  4. 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
  5. Verifique se o catálogo s3tablescatalog foi adicionado no AWS Glue usando o seguinte comando:

    aws glue get-catalog --catalog-id s3tablescatalog

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 no Guia do desenvolvedor do AWS Lake Formation.

  1. Abra o console do AWS Lake Formation em 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 no Guia do desenvolvedor do AWS Lake Formation.

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

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

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

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.