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:
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.
Como funciona a integração
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:
-
Cria um perfil de serviço do AWS Identity and Access Management (IAM) que concede ao Lake Formation acesso a todos os buckets de tabela.
-
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.
-
Adiciona o catálogo
s3tablescatalog
ao AWS Glue Data Catalog na região atual. Ao adicionar o catálogos3tablescatalog
, 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.

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” (Visão geral das permissões do Lake Formation) no Guia do desenvolvedor do AWS Lake Formation.
Siga as etapas em Pré-requisitos da integração e Integrar buckets de tabela aos serviços de analytics da AWS 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.
Importante
Se você não for o usuário que realizou a integração dos buckets de tabela com os serviços de analytics da AWS para sua conta, deverá receber as permissões necessárias do Lake Formation na tabela. Para obter mais informações, consulte Conceder permissão em uma tabela ou um banco de dados.
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:RegisterResource
elakeformation: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 \ --region
us-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.json
que contenha a seguinte política de confiança:{ "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
-
Crie um arquivo chamado
LF-GluePolicy.json
que contenha a seguinte política:{ "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
-
-
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
-
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":[] } }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
\ --allow-full-table-external-data-access \ --cli-input-json file://catalog.json
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.
-
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
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.
-
-
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.
-
-
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.
Próximas etapas
Criar um link de recurso para os namespaces da tabela (Amazon Data Firehose)
Para acessar as tabelas, o Amazon Data Firehose precisa de um link de recurso direcionado ao namespace da tabela. Um link de recurso é um objeto do Catálogo de Dados que atua como um alias ou um ponteiro para outro recurso do Catálogo de Dados, como um banco de dados ou uma tabela. O link é armazenado no Catálogo de Dados da conta ou região em que foi criado. Consulte mais informações em How resource links work no Guia do desenvolvedor do AWS Lake Formation.
Depois de integrar os buckets de tabela aos serviços de analytics da AWS, você pode criar links de recursos para trabalhar com as tabelas no Amazon Data Firehose. Consulte mais informações sobre como criar esses links em Fazer streaming de dados para tabelas com o Amazon Data Firehose.
Conceder permissões do Lake Formation nos recursos de tabela
Depois que os buckets de tabela são integrados aos serviços de analytics da AWS, o Lake Formation gerencia o acesso aos recursos da tabela. 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. O Lake Formation exige que cada entidade principal do IAM (usuário ou perfil) seja autorizada a realizar ações nos recursos gerenciados pelo Lake Formation. Para obter mais informações, consulte “Overview of Lake Formation permissions” (Visão geral das permissões do Lake Formation) no Guia do desenvolvedor do AWS Lake Formation. Consulte informações sobre o compartilhamento de dados entre contas em Cross-account data sharing in Lake Formation no Guia do desenvolvedor do AWS Lake Formation.
Para que as entidades principais do IAM possam acessar tabelas nos serviços de analytics da AWS, você deve conceder a elas permissões do Lake Formation nesses recursos.
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 em uma tabela ou um banco de dados.
É necessário conceder a outras entidades principais do IAM as permissões do Lake Formation nos recursos de tabela para trabalhar com eles nos seguintes serviços:
-
Amazon Redshift
-
Amazon Data Firehose
-
Amazon QuickSight
-
Amazon Athena
nota
Com relação ao Amazon Data Firehose, que usa um link de recurso para acessar as tabelas, você deve conceder permissões separadamente ao link do recurso e ao namespace de destino (vinculado). Para obter mais informações, consulte Conceder permissão em um link de recurso.
Conceder permissão em uma tabela ou um banco de dados
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 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. No painel de navegação, escolha Permissões de dados e Conceder.
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 o perfil Admin do IAM.
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 Amazon QuickSight, escolha Usuários e grupos SAML e insira o nome do recurso da Amazon (ARN) do usuário administrador do Amazon QuickSight.
Em Tags do LF ou recursos de catálogo, escolha Recursos do catálogo de dados nomeados.
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
-
Em Bancos de dados, escolha o namespace do bucket de tabela do S3 que você criou.
-
(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.
-
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.
-
-
Selecione Conceder.