As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Connect Snowflake como fonte de dados na Amazon DataZone
A Amazon DataZone oferece suporte ao Snowflake como fonte de dados terceirizada. Depois de conectar o Snowflake a um DataZone projeto da Amazon, o catálogo pode indexar seus bancos de dados e esquemas do Snowflake, capturar a linhagem em nível de coluna do histórico de consultas do Snowflake e permitir que você consulte tabelas do Snowflake por meio da federação. Esta página mostra como criar uma conexão com o Snowflake usando a CLI AWS .
Pré-requisitos
Antes de começar, confirme se o seguinte está em vigor:
-
Um DataZone domínio da Amazon e um projeto em que você deseja que os dados do Snowflake sejam catalogados. Consulte Domínios e acesso de usuários na Amazon DataZone e DataZone Projetos e ambientes da Amazon.
-
Uma conta do Snowflake, com permissão para criar funções e conceder privilégios no banco de dados, no esquema e no depósito que você deseja catalogar.
-
Acesse AWS Secrets Manager na mesma AWS conta do seu DataZone domínio da Amazon.
-
Um bucket do Amazon S3 para derramamento de consultas, se você planeja consultar dados do Snowflake a partir de.
Você executará as etapas nesta ordem: criar uma função do Snowflake, armazenar as credenciais do Snowflake, AWS Secrets Manager encontrar o ID do ambiente do DataZone projeto da Amazon e ligar. aws datazone create-connection
Etapa 1: criar uma função do Snowflake para a Amazon DataZone
A Amazon DataZone se conecta ao Snowflake usando uma função que você cria e à qual concede privilégios específicos. As bolsas de funções se enquadram em quatro categorias:
-
Sincronização de metadados — A Amazon DataZone lê a estrutura de suas tabelas e visualizações para preencher o catálogo.
-
Sincronização de linhagem — A Amazon DataZone lê QUERY_HISTORY e ACCESS_HISTORY do Snowflake para derivar a linhagem em nível de coluna.
-
Acesso à consulta — necessário para consultas emitidas pela Amazon DataZone, inclusive de.
-
Uso do armazém — necessário para qualquer consulta que a função execute.
Execute as seguintes declarações no Snowflake, substituindo os espaços reservados por seus valores:
CREATE ROLE <role_name>; -- Metadata: database and schema access GRANT USAGE ON DATABASE <database_name> TO ROLE <role_name>; GRANT USAGE ON SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Metadata: table and view structure (no data access) GRANT REFERENCES ON ALL TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON ALL VIEWS IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON FUTURE TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON FUTURE VIEWS IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Lineage: access to QUERY_HISTORY and ACCESS_HISTORY GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE <role_name>; -- Query access GRANT SELECT ON ALL TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Optional: include tables created after the role is granted GRANT SELECT ON FUTURE TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Warehouse access GRANT USAGE ON WAREHOUSE <warehouse_name> TO ROLE <role_name>; -- Assign the role to the Snowflake user whose credentials DataZone will use GRANT ROLE <role_name> TO USER <snowflake_username>;
Importante
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKEé necessário para a linhagem. Sem isso, a sincronização de metadados é bem-sucedida, mas nenhum registro de linhagem é capturado.
Etapa 2: Armazene as credenciais do Snowflake no AWS Secrets Manager
Crie um segredo na AWS Secrets Manager mesma AWS conta do seu DataZone domínio da Amazon. A Amazon DataZone oferece suporte a dois métodos de autenticação: nome de usuário e senha ou par de chaves.
Para autenticação de nome de usuário e senha, use este corpo JSON:
{ "username": "<snowflake_username>", "password": "<snowflake_password>" }
Para autenticação por par de chaves, use este corpo JSON:
{ "sfUser": "<snowflake_username>", "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" }
Marque o segredo para que a Amazon DataZone possa descobri-lo. Ambas as tags são obrigatórias:
| Chave de tag | Valor |
|---|---|
AmazonDataZoneDomain |
Seu ID de DataZone domínio da Amazon |
AmazonDataZoneProject |
Seu ID de DataZone projeto da Amazon |
Anote o ARN do segredo. Você o passará para create-connection a Etapa 4.
Etapa 3: Encontre o ID do ambiente do seu projeto
A chamada create-connection da API exige o ID do ambiente do projeto em que a conexão está localizada. Você pode derivar isso do ARN da função de usuário do projeto.
O ARN da função de usuário do projeto segue esse padrão:
arn:aws:iam::<account_id>:role/datazone_usr_role_<project_id>_<environment_id>
O segmento final, após o último sublinhado, é o ID do ambiente. Por exemplo, em:
arn:aws:iam::123456789012:role/datazone_usr_role_a1b2c3dfadsf_58cjkfdsjfd
58cjkfdsjfd é o ID do ambiente. Esse é o valor a ser passado como --environment-identifier na Etapa 4. O ID do ambiente corresponde ao ambiente de ferramentas do seu projeto.
Etapa 4: criar a conexão Snowflake
Execute o seguinte comando da AWS CLI, substituindo os espaços reservados pelos seus valores:
aws datazone create-connection \ --domain-identifier <domain_id> \ --environment-identifier <environment_id> \ --name "<connection_name>" \ --description "<optional_description>" \ --props '{ "snowflakeProperties": { "connectivityProperties": { "connectionProperties": { "HOST": "<account>.snowflakecomputing.com", "PORT": "443", "DATABASE": "<database_name>", "WAREHOUSE": "<warehouse_name>", "SCHEMA": "<schema_name>", "ROLE_ARN": "<project_user_role_arn>", "CATALOG_CASING_FILTER": "UPPERCASE_ONLY" }, "athenaProperties": { "spill_bucket": "<project_s3_bucket_name>", "spill_prefix": "<domain_id>/<project_id>/dev/sys/athena" }, "authenticationConfiguration": { "authenticationType": "BASIC", "secretArn": "<secret_arn_from_step_2>" } }, "snowflakeRole": "<role_name_from_step_1>", "identityMapping": { "usernameAttribute": "EMAIL" } } }'
Referência de propriedades de conexão
| Propriedade | Description |
|---|---|
HOST |
URL da sua conta do Snowflake. |
PORT |
O porto Snowflake. Use 443. |
DATABASE |
O banco de dados Snowflake para catalogar. |
WAREHOUSE |
O armazém Snowflake que a Amazon DataZone usa para executar consultas. |
SCHEMA |
O esquema Snowflake para catalogar. |
ROLE_ARN |
O ARN da função de usuário do projeto (consulte a Etapa 3). |
CATALOG_CASING_FILTER |
Controla a normalização de casos para identificadores catalogados. Os valores válidos são UPPERCASE_ONLY e LOWERCASE_ONLY. Se omitido, o padrão é. UPPERCASE_ONLY |
spill_bucket |
Nome do bucket S3 para vazamento de consultas. Obrigatório ao consultar o Snowflake em. |
spill_prefix |
Prefixo S3 para derramamento, no formato. <domain_id>/<project_id>/dev/sys/athena |
authenticationType |
BASICpara nossa username/password autenticação por par de chaves. |
secretArn |
O ARN do segredo criado na Etapa 2. |
snowflakeRole |
O nome da função do Snowflake da Etapa 1. |
identityMapping.usernameAttribute |
Definido como EMAIL. |
Verificando a conexão
Ligue aws datazone get-connection com seu ID de domínio e o identificador de conexão retornado porcreate-connection. Após a execução da primeira sincronização de metadados, as tabelas catalogadas do Snowflake aparecem no DataZone catálogo da Amazon para o projeto.