Trabalhar com unidades de compartilhamento de dados gerenciadas pelo Lake Formation como consumidor
Com o Amazon Redshift, é possível acessar e analisar dados compartilhados com você por meio de unidades de compartilhamento de dados do AWS Lake Formation. Uma unidade de compartilhamento de dados é um produto de dados que contém uma coleção de objetos de dados, como tabelas ou bancos de dados, de diferentes fontes de dados.
Depois que o administrador do AWS Lake Formation descobre o convite para a unidade de compartilhamento de dados e cria um banco de dados no AWS Glue Data Catalog vinculado à unidade de compartilhamento de dados, o administrador do cluster consumidor ou do grupo de trabalho pode associar o cluster à unidade de compartilhamento de dados e ao banco de dados no AWS Glue Data Catalog, criar um banco de dados local para o cluster consumidor ou o grupo de trabalho e conceder acesso a usuários e funções no cluster consumidor do Amazon Redshift para começar a realizar consultas. Siga estas etapas para configurar as permissões de consulta.
-
No console do Amazon Redshift, crie um cluster do Amazon Redshift para funcionar como o cluster consumidor ou o grupo de trabalho, se necessário. Para obter informações sobre como criar um cluster, consulte Criar um cluster.
-
Para listar a quais bancos de dados no cluster consumidor ou grupo de trabalho do AWS Glue Data Catalog os usuários têm acesso, execute o comando SHOW DATABASES.
SHOW DATABASES FROM DATA CATALOG [ACCOUNT <account-id>,<account-id2>] [LIKE <expression>]
Isso lista os recursos que estão disponíveis no Catálogo de Dados, como o ARN do banco de dados do AWS Glue, o nome do banco de dados e as informações sobre a unidade de compartilhamento de dados.
-
Usando o ARN do banco de dados do AWS Glue de SHOW DATABASES, crie um banco de dados local no cluster consumidor ou no grupo de trabalho. Para obter mais informações, consulte CREATE DATABASE.
CREATE DATABASE lf_db FROM ARN <lake-formation-database-ARN> WITH [NO] DATA CATALOG SCHEMA [<schema>];
-
Conceda acesso em bancos de dados e referências de esquema criadas a partir das unidades de compartilhamento de dados para usuários e funções no cluster consumidor ou no grupo de trabalho conforme necessário. Para obter mais informações, consulte GRANT ou REVOKE. Observe que os usuários criados pelo comando CREATE USER não podem acessar objetos em unidades de compartilhamento de dados que foram compartilhadas com o Lake Formation. Somente usuários com acesso ao Redshift e ao Lake Formation podem acessar unidades de compartilhamento de dados que foram compartilhadas com o Lake Formation.
GRANT USAGE ON DATABASE sales_db TO IAM:Bob;
Como administrador do cluster consumidor ou do grupo de trabalho, você só pode atribuir permissões em todo o banco de dados criado a partir da unidade de compartilhamento de dados para os usuários e funções. Em alguns casos, você precisa de controles refinados em um subconjunto de objetos de banco de dados criados a partir do datashare.
Você também pode criar exibições de vinculação tardia sobre objetos compartilhados e usá-las para atribuir permissões detalhadas. Você também pode considerar que os clusters produtores ou os grupos de trabalho criem unidades de compartilhamento de dados adicionais para você com a granularidade necessária. Você pode criar quantas referências de esquema quiser para o banco de dados criado a partir do datashare.
-
Os usuários do banco de dados podem usar as visualizações SVV_EXTERNAL_TABLES e SVV_EXTERNAL_COLUMNS para encontrar todas as tabelas ou colunas compartilhadas no banco de dados do AWS Glue.
SELECT * from svv_external_tables WHERE redshift_database_name = 'lf_db'; SELECT * from svv_external_columns WHERE redshift_database_name = 'lf_db';
-
Consultar dados nos objetos compartilhados nos datashares.
Usuários e funções com permissões em bancos de dados consumidores e esquemas em clusters consumidores ou grupos de trabalho podem explorar e navegar nos metadados de quaisquer objetos compartilhados. Eles também podem explorar e navegar em objetos locais em um cluster consumidor. Para fazer isso, eles podem usar drivers JDBC ou ODBC, ou as visualizações SVV_ALL e SVV_EXTERNAL.
SELECT * FROM lf_db.schema.table;
Você só pode usar instruções SELECT em objetos compartilhados. No entanto, você pode criar tabelas no cluster de consumidores consultando os dados dos objetos compartilhados em um banco de dados local diferente.
// Connect to a local cluster database // Create a view on shared objects and access it.
CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;