Catálogo Federate to Snowflake Iceberg - AWS Lake Formation

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.

Catálogo Federate to Snowflake Iceberg

AWS Glue Data Catalog se federa para Snowflake usar las OAuth2 credenciales de un director de servicio. Snowflake Puede utilizar esta federación para conectarse a los Snowflake Polaris catálogos Snowflake Horizon y a ellos. Este mecanismo de autenticación permite a Data Catalog acceder a los metadatos de varios objetos (como catálogos, bases de datos y tablas) del catálogo, en función de los privilegios asociados a la entidad principal del servicio. Para garantizar el acceso a los objetos correctos, es esencial conceder al director del servicio los permisos necesarios para leer los metadatos de estos objetos. Snowflake

Requisitos previos

Antes de crear un catálogo federado en Data Catalog que esté gobernado por Lake Formation, asegúrese de tener los siguientes permisos:

Su director de IAM (usuario o rol) debe tener los siguientes permisos:

  • Permisos de Lake Formationlakeformation:RegisterResource, lakeformation:DescribeResource

  • AWS Glue permisosglue:CreateConnection,glue:CreateCatalog,glue:GetConnection, glue:PassConnection

  • Permisos de Secrets Managersecretsmanager:CreateSecret, secretsmanager:GetSecretValue

  • Permisos de IAMiam:CreateRole,, iam:AttachRolePolicy iam:PassRole

Debe ser administrador de un lago de datos de Lake Formation o tener CREATE_CATALOG permiso para acceder al catálogo de datos

Cree un catálogo federado

  1. Inicie sesión en la consola y abra la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/.

  2. Elige la AWS región que prefieras en la sección superior derecha de la página.

  3. En el panel de navegación izquierdo, elija Catálogos.

  4. Seleccione Crear catálogo para abrir el flujo de trabajo de creación de catálogo.

  5. En el paso Elegir fuente de datos, seleccione una Snowflake de las opciones disponibles.

  6. En el paso Definir los detalles del catálogo, debe proporcionar tres datos: detalles del catálogo, detalles de conexión y detalles de registro.

  7. En el contenedor de detalles del catálogo, proporcione un nombre único al catálogo AWS Glue federado e introduzca el nombre del Snowflake catálogo existente.

  8. En el contenedor de detalles de conexiones, puede elegir entre una conexión existente a la que tenga acceso o proporcionar la configuración necesaria para crear un conector nuevo.

  9. Las nuevas configuraciones de conexión incluyen:

    • Nombre de conexión: nombre exclusivo del objeto de AWS Glue conexión.

    • URL de la instancia: la URL de punto final de su Snowflake cuenta existente.

    • Autenticación: especifique la configuración de autenticación que se AWS Glue utiliza para conectarse al servidor de catálogo remoto. AWS Glue admite tanto OAuth2 la autenticación como la personalizada.

    • URL del token: especifique la URL del proveedor de identidad del catálogo remoto.

    • OAuth2 ID de cliente: especifique el ID de cliente de la OAuth2 credencial asociada a su catálogo remoto.

    • Secreto: almacene y use el secreto OAuth2 del cliente utilizando AWS Secrets Manager o introduzca el valor secreto en el cuadro de texto. Al introducir el secreto manualmente en la consola, AWS Glue crea el secreto en tu nombre.

    • Ámbito de la URL del token: especifique el OAuth ámbito de la autenticación.

    • Filtro de carcasa de catálogo: elija si desea llevar los objetos en minúsculas o mayúsculas de su catálogo remoto al catálogo de datos.

  10. Cree una función de IAM que AWS Glue los directores del servicio de Lake Formation puedan utilizar para acceder a las ubicaciones secretas AWS Secrets Manager y a las ubicaciones de Amazon S3 de las tablas de Iceberg remotas, respectivamente. Seleccione la función de IAM en el menú desplegable de registro. Consulte los pasos 2 y 3 de la siguiente sección de CLI para obtener detalles sobre la política de IAM.

  11. Seleccione Probar conexión para comprobar si las propiedades de conexión y el acceso a los roles de IAM están configurados correctamente.

  12. Seleccione Siguiente para revisar la configuración.

  13. Selecciona Crear catálogo en la página de revisión.

  1. Crea un AWS Secrets Manager secreto

    El AWS Glue conector admite dos tipos de autenticación: OAuth2una personalizada. Cuando se usa OAuth2 la opción, AWS Secrets Manager se usa para almacenar el secreto del cliente principal del Snowflake servicio. Más adelante, utilizará este secreto al crear la AWS Glue conexión. Para la autenticación personalizada, AWS Secrets Manager utilícela para almacenar y recuperar el token de acceso.

    En el siguiente ejemplo, sustituyayour-snowflake-secret,client_secret, region por su propia información.

    aws secretsmanager create-secret \ --name your-snowflake-secret \ --description "Snowflake secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "client_secret" }' \ --region region
    nota

    USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETes una palabra clave reservada que se AWS Glue utiliza para hacer referencia a un valor secreto de cliente incluido en el secreto. Usa también la misma palabra clave cuando crees el secreto en la consola de Lake Formation.

  2. Cree un rol de IAM que dé acceso al objeto de AWS Glue conexión al secreto creado en el paso anterior

    El objeto de AWS Glue conexión requiere acceso al AWS Secrets Manager secreto cuando se utiliza AWS Secrets Manager para almacenar, recuperar y actualizar el token OAuth secreto. El objeto de AWS Glue conexión también requiere acceso para crear, describir y utilizar las interfaces de red de Amazon VPC cuando utiliza un punto de enlace de Amazon VPC para restringir la conectividad a su cuenta. Snowflake

    Cree una política de IAM y adjúntela a un rol de IAM. Añada el principal AWS Glue de servicio a la política de confianza.

    En el siguiente ejemplo your-secrets-manager-ARNyour-vpc-id, sustituya y your-subnet-id1 por su propia información.

    ejemplo Política de IAM
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue" ], "Resource": [ "your-secrets-manager-ARN" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/your-vpc-id", "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/your-subnet-id1"] } } } ] }
    ejemplo Política de confianza
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. Cree una política de IAM que dé a Lake Formation acceso de lectura a la ubicación de Amazon S3 del catálogo

    Como propietario de un catálogo federado en Data Catalog, utiliza Lake Formation para conceder a sus equipos de datos un acceso detallado a las tablas, un acceso detallado (a nivel de columnas, filas y celdas) y un acceso basado en etiquetas. Lake Formation utiliza una función de IAM que le da acceso a las ubicaciones subyacentes de Amazon S3 de sus tablas Iceberg remotas. Este acceso permite a Lake Formation vender credenciales de acceso limitado a los motores de análisis que consultan tablas remotas.

    Cree una política de IAM y asígnela a una función de IAM. Agregue el director de servicio de Lake Formation a la política de confianza de roles.

    En el siguiente ejemplo, reemplace amzn-s3-demo-bucketN y your-kms-key por su propia información.

    ejemplo Política de IAM
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket2" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": [ "your-kms-key" ] } ] }
    ejemplo Política de confianza
    { "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
    nota

    Cuando utiliza la consola Lake Formation para crear un catálogo federado, la consola utiliza un único rol de IAM con ambas políticas asociadas para completar la configuración.

  4. Cree un objeto de conexión AWS Glue

    AWS Glue soportes de conectores OAuth2 y métodos de autenticación personalizados. El objeto de conexión del catálogo de datos admite una CATALOG_CASING_FILTER configuración que le permite llevar los objetos en minúsculas o mayúsculas de su catálogo remoto al catálogo de datos.

    En el siguiente ejemplo, se utiliza la configuración OAuth2 de autenticación para crear una conexión. AWS Glue Modifique el highlighted sections añadiendo su información.

    aws glue create-connection \ --connection-input '{ "Name": "your-glue-connection-to-snowflake-account", "ConnectionType": "SNOWFLAKEICEBERGRESTCATALOG", "ConnectionProperties": { "INSTANCE_URL": "your-snowflake-account-URL", "ROLE_ARN": "your-IAM-role-for-secrets-and-VPC-access", "CATALOG_CASING_FILTER": "LOWERCASE_ONLY" }, "AuthenticationConfiguration": { "AuthenticationType": "OAUTH2", "OAuth2Properties": { "OAuth2GrantType": "CLIENT_CREDENTIALS", "TokenUrl": "your-internal-or-external-token-server-url", "OAuth2ClientApplication": { "UserManagedClientApplicationClientId": "our-client-id" }, "TokenUrlParametersMap": { "scope": "all-apis" } }, "SecretArn": "arn:aws:secretsmanager:your-aws-region:your-aws-account-id:secret:snowflake-secret" } }'
  5. Registrar AWS Glue la conexión como recurso de Lake Formation

    Con el objeto de AWS Glue conexión (creado en el paso 4) y el rol de IAM (creado en el paso 3), ahora puede registrar el objeto de AWS Glue conexión como un recurso gestionado por Lake Formation.

    Reemplace el your-glue-connector-arn y el your-IAM-role-ARN-having-LF-access con su información.

    aws lakeformation register-resource \ --resource-arn your-glue-connector-arn \ --role-arn your-IAM-role-ARN-having-LF-access \ --with-federation \ --with-privileged-access
  6. Cree un catálogo federado en Data Catalog

    Tras crear un objeto de AWS Glue conexión y registrarlo en Lake Formation, puede crear un catálogo federado en el catálogo de datos:

    Proporcione al catálogo federado un nombre exclusivo enyour-federated-catalog-name, haga referencia al catálogo en Snowflake at catalog-name-in-Snowflake e introduzca el nombre de la conexión creado anteriormente en. your-glue-connection-name

    aws glue create-catalog \ --name your-federated-catalog-name \ --catalog-input '{ "FederatedCatalog": { "Identifier": catalog-name-in-Snowflake", "ConnectionName": your-glue-connection-name" }, "CreateTableDefaultPermissions": [], "CreateDatabaseDefaultPermissions": [] }'

Consideraciones a la hora de integrarse con Snowflake

  • Al incluir recursos (como bases de datos y tablas)Snowflake, Lake Formation no revoca automáticamente los permisos otorgados a ese recurso federado. Para eliminar los permisos de acceso, debe revocar explícitamente los permisos que se concedieron anteriormente en el recurso federado mediante Lake Formation.

  • Al montar un catálogo remoto con una CATALOG_CASING_FILTER='UPPERCASE_ONLY' configuración, las bases de datos y las tablas con identificadores en mayúsculas se federan, pero los objetos con identificadores en minúsculas no.

  • Puede reutilizar la misma AWS Glue conexión para crear varios catálogos federados. Al eliminar un catálogo, no se eliminará la conexión asociada. Para eliminar una conexión, utilice el aws glue delete-connection comando AWS CLI y asegúrese de eliminar primero todos los catálogos asociados.

  • No se admiten los espacios de nombres anidados en el Polaris catálogo. Es decir, la federación de catálogos puede acceder a Iceberg tablas remotas que siguen una notación de tres partes. catalog.database.table