Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Connect Snowflake como fuente de datos en Amazon DataZone
Amazon DataZone admite Snowflake como fuente de datos de terceros. Tras conectar Snowflake a un DataZone proyecto de Amazon, el catálogo puede indexar las bases de datos y los esquemas de Snowflake, capturar el linaje a nivel de columna del historial de consultas de Snowflake y permitirle consultar las tablas de Snowflake mediante federación. En esta página, se explica cómo crear una conexión Snowflake mediante la CLI AWS .
Requisitos previos
Antes de empezar, compruebe que se ha establecido lo siguiente:
-
Un DataZone dominio de Amazon y un proyecto en el que desee que se catalogen los datos de Snowflake. Consulte Dominios y acceso de usuarios en Amazon DataZone y DataZone Proyectos y entornos de Amazon.
-
Una cuenta de Snowflake, con permiso para crear roles y conceder privilegios en la base de datos, el esquema y el almacén que desee catalogar.
-
Accede AWS Secrets Manager en la misma AWS cuenta que tu DataZone dominio de Amazon.
-
Un bucket de Amazon S3 para consultas adicionales, si tiene pensado consultar datos de Snowflake.
Realice los pasos en este orden: cree un rol de Snowflake, almacene las credenciales de Snowflake, AWS Secrets Manager busque su ID de entorno de DataZone proyecto de Amazon y, a continuación, llame. aws datazone create-connection
Paso 1: Crea un rol de Snowflake para Amazon DataZone
Amazon DataZone se conecta a Snowflake mediante un rol que tú creas y al que concedes privilegios específicos. Las asignaciones de roles se dividen en cuatro categorías:
-
Sincronización de metadatos: Amazon DataZone lee la estructura de las tablas y vistas para rellenar el catálogo.
-
Sincronización de linaje: Amazon DataZone lee QUERY_HISTORY y ACCESS_HISTORY de Snowflake para derivar el linaje a nivel de columna.
-
Acceso a consultas: obligatorio para las consultas emitidas a través de Amazon DataZone, incluidas las realizadas desde.
-
Uso del almacén: obligatorio para cualquier consulta que ejecute el rol.
Ejecute las siguientes instrucciones en Snowflake y sustituya los marcadores de posición por sus 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 SNOWFLAKEes obligatorio para el linaje. Sin él, la sincronización de los metadatos se realiza correctamente, pero no se captura ningún registro de linaje.
Paso 2: Guarde las credenciales de Snowflake en AWS Secrets Manager
Crea una cuenta secreta en AWS Secrets Manager la misma AWS cuenta que tu DataZone dominio de Amazon. Amazon DataZone admite dos métodos de autenticación: nombre de usuario y contraseña o par de claves.
Para la autenticación de nombre de usuario y contraseña, usa este cuerpo de JSON:
{ "username": "<snowflake_username>", "password": "<snowflake_password>" }
Para la autenticación por pares de claves, usa este cuerpo de JSON:
{ "sfUser": "<snowflake_username>", "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" }
Etiqueta el secreto para que Amazon DataZone lo descubra. Se requieren ambas etiquetas:
| Clave de etiqueta | Valor |
|---|---|
AmazonDataZoneDomain |
Tu ID de DataZone dominio de Amazon |
AmazonDataZoneProject |
Tu ID de DataZone proyecto de Amazon |
Anote el ARN del secreto. Se lo pasarás create-connection en el paso 4.
Paso 3: Busque el ID del entorno de su proyecto
La llamada a la create-connection API requiere el ID del entorno del proyecto en el que se encuentra la conexión. Puede derivarlo del ARN del rol de usuario del proyecto.
El ARN del rol de usuario del proyecto sigue este patrón:
arn:aws:iam::<account_id>:role/datazone_usr_role_<project_id>_<environment_id>
El segmento final, después del último guión bajo, es el ID del entorno. Por ejemplo, en:
arn:aws:iam::123456789012:role/datazone_usr_role_a1b2c3dfadsf_58cjkfdsjfd
58cjkfdsjfd es el ID del entorno. Este es el valor que se debe utilizar --environment-identifier en el paso 4. El ID de entorno corresponde al entorno de herramientas de su proyecto.
Paso 4: Crea la conexión con Snowflake
Ejecute el siguiente comando AWS CLI y sustituya los marcadores de posición por sus 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" } } }'
Referencia de propiedades de conexión
| Propiedad | Description (Descripción) |
|---|---|
HOST |
La URL de su cuenta de Snowflake. |
PORT |
El puerto de Snowflake. Utilice 443. |
DATABASE |
La base de datos de Snowflake para catalogar. |
WAREHOUSE |
El almacén de Snowflake que Amazon DataZone utiliza para ejecutar consultas. |
SCHEMA |
El esquema de Snowflake para catalogar. |
ROLE_ARN |
El ARN del rol de usuario del proyecto (consulte el paso 3). |
CATALOG_CASING_FILTER |
Controla la normalización de mayúsculas y minúsculas para los identificadores catalogados. Los valores válidos son UPPERCASE_ONLY y LOWERCASE_ONLY. Si se omite, el valor predeterminado es. UPPERCASE_ONLY |
spill_bucket |
Nombre del bucket de S3 para el derrame de consultas. Obligatorio al realizar consultas a Snowflake desde. |
spill_prefix |
Prefijo S3 para derrame, en el formato. <domain_id>/<project_id>/dev/sys/athena |
authenticationType |
BASICpara la autenticación por username/password pares de claves. |
secretArn |
El ARN del secreto creado en el paso 2. |
snowflakeRole |
El nombre del rol de Snowflake del paso 1. |
identityMapping.usernameAttribute |
Configurado en EMAIL. |
Verificación de la conexión
Llama aws datazone get-connection con tu ID de dominio y el identificador de conexión devuelto porcreate-connection. Tras ejecutar la primera sincronización de metadatos, las tablas de Snowflake catalogadas aparecen en el DataZone catálogo de Amazon del proyecto.