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:
Anexe a política AWSLakeFormationDataAdmin 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 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:RegisterResourceelakeformation:RegisterResourceWithPrivilegedAccessà entidade principal do IAM. Atualize a AWS Command Line Interface (AWS CLI) para a versão mais recente.
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
Essa integração deve ser feita 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.
Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. No painel de navegação à esquerda, escolha Buckets de tabela.
Escolha Criar bucket de tabela.
A página Criar bucket de tabela é aberta.
Insira um Nome do bucket de tabela e marque a caixa de seleção Habilitar integração.
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 por suas próprias informações.user input placeholders
Crie um bucket de tabela.
aws s3tables create-table-bucket \ --regionus-east-1\ --nameamzn-s3-demo-table-bucket-
Crie um perfil de serviço do IAM que permita que o Lake Formation acesse os recursos de tabela.
-
Crie um arquivo chamado
Role-Trust-Policy.jsonque contenha a seguinte política de confiança:Crie um perfil de serviço do IAM usando o seguinte comando:
aws iam create-role \ --role-nameS3TablesRoleForLakeFormation\ --assume-role-policy-document file://Role-Trust-Policy.json -
Crie um arquivo chamado
LF-GluePolicy.jsonque contenha a seguinte política:Anexe a política ao perfil usando o seguinte comando:
aws iam put-role-policy \ --role-nameS3TablesRoleForLakeFormation\ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
-
-
Crie um arquivo chamado
input.jsonque 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 \ --regionus-east-1\ --with-privileged-access \ --cli-input-json file://input.json -
Crie um arquivo chamado
catalog.jsonque 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
s3tablescatalogusando 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 \ --regionus-east-1\ --cli-input-json file://catalog.json Verifique se o catálogo
s3tablescatalogfoi 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.
-
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. -
Exclua o catálogo
s3tablescatalogfazendo o seguinte:-
No painel de navegação à esquerda, selecione Catálogos.
-
Selecione o botão de opção ao lado do catálogo
s3tablescatalogna lista Catálogos. No menu Ações, escolha Excluir.
-
-
Cancele o registro da localização dos dados do catálogo
s3tablescatalogfazendo 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.
-
-
Agora que você excluiu o catálogo
s3tablescataloge 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.