Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fédérer vers le catalogue Snowflake Iceberg
AWS Glue Data Catalog se connecte à Snowflake l'utilisation des OAuth2 informations d'identification d'un directeur de Snowflake service. Vous pouvez utiliser cette fédération pour vous connecter à Snowflake Horizon des Snowflake Polaris catalogues. Ce mécanisme d'authentification permet à Data Catalog d'accéder aux métadonnées de divers objets (tels que les catalogues, les bases de données et les tables) de votre catalogue, en fonction des privilèges associés au principal de service. Pour garantir l'accès aux bons objets, il est essentiel d'accorder au principal du service Snowflake les autorisations nécessaires pour lire les métadonnées de ces objets.
Conditions préalables
Avant de créer un catalogue fédéré dans Data Catalog régi par Lake Formation, assurez-vous de disposer des autorisations suivantes :
Votre principal IAM (utilisateur ou rôle) doit disposer des autorisations suivantes :
-
Permissions de Lake Formation —
lakeformation:RegisterResource,lakeformation:DescribeResource -
AWS Glue autorisations —
glue:CreateConnectionglue:CreateCatalog,glue:GetConnection,glue:PassConnection -
Autorisations du Secrets Manager —
secretsmanager:CreateSecret,secretsmanager:GetSecretValue -
Autorisations IAM —
iam:CreateRole,iam:AttachRolePolicyiam:PassRole
Vous devez être un administrateur du lac de Lake Formation ou avoir l'CREATE_CATALOGautorisation d'accéder au catalogue de données
Création d'un catalogue fédéré
Connectez-vous à la console et ouvrez la console Lake Formation à l'adresse https://console.aws.amazon.com/lakeformation/
. Choisissez la AWS région préférée dans la section supérieure droite de la page.
Dans le volet de navigation de gauche, choisissez Catalogues.
Choisissez Créer un catalogue pour ouvrir le flux de travail de création de catalogue.
Dans l'étape Choisir une source de données, Snowflake sélectionnez l'une des options disponibles.
À l'étape Définir les détails du catalogue, vous fournissez trois informations : les détails du catalogue, les détails de connexion et les détails d'enregistrement.
Dans le conteneur des détails du catalogue, attribuez un nom unique à votre catalogue AWS Glue fédéré et entrez le nom du Snowflake catalogue existant.
Dans le conteneur des détails des connexions, vous pouvez soit choisir une connexion existante à laquelle vous avez accès, soit fournir une configuration pour créer un nouveau connecteur.
Les nouvelles configurations de connexion incluent :
Nom de connexion : nom unique de l'objet de AWS Glue connexion.
URL de l'instance : URL du point de terminaison de votre Snowflake compte existant.
Authentification — Spécifiez la configuration d'authentification AWS Glue utilisée pour se connecter au serveur de catalogue distant. AWS Glue prend en charge les deux OAuth2 et l'authentification personnalisée.
URL du jeton : spécifiez l'URL du fournisseur d'identité du catalogue distant.
OAuth2 ID client — Spécifiez l'ID client des OAuth2 informations d'identification associées à votre catalogue distant.
Secret — Stockez et utilisez OAuth2 le secret du client en utilisant AWS Secrets Manager ou entrez la valeur du secret dans la zone de texte. Lorsque vous entrez le secret manuellement dans la console, AWS Glue crée le secret en votre nom.
Étendue de l'URL du jeton : spécifiez l' OAuth étendue de l'authentification.
Filtre de boîtier de catalogue : choisissez d'importer les objets en minuscules ou en majuscules de votre catalogue distant vers Data Catalog.
Créez un rôle IAM que les responsables du service Lake Formation AWS Glue et les responsables du service Lake Formation pourront utiliser respectivement pour accéder aux emplacements secrets AWS Secrets Manager et aux emplacements Amazon S3 des tables Iceberg distantes. Sélectionnez le rôle IAM dans le menu déroulant d'inscription. Reportez-vous aux étapes 2 et 3 de la section CLI suivante pour plus de détails sur la politique IAM.
Sélectionnez Tester la connexion pour vérifier si les propriétés de votre connexion et l'accès au rôle IAM sont correctement configurés.
Sélectionnez Suivant pour vérifier vos paramètres.
Sélectionnez Créer un catalogue sur la page de révision.
-
Créez un AWS Secrets Manager secret
Le AWS Glue connecteur prend en charge deux types d'authentification : OAuth2l'authentification personnalisée. Lorsque vous utilisez l' OAuth2 option, AWS Secrets Manager utilisez-la pour stocker le secret client du principal de Snowflake service. Vous utiliserez ce secret ultérieurement lors de la création de la AWS Glue connexion. Pour l'authentification personnalisée, utilisez-le AWS Secrets Manager pour stocker et récupérer le jeton d'accès.
Dans l'exemple suivant, remplacez
your-snowflake-secret,client_secretpar vos propres informations.regionaws secretsmanager create-secret \ --nameyour-snowflake-secret\ --description "Snowflake secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "client_secret" }' \ --regionregionNote
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETest un mot clé réservé AWS Glue utilisé pour faire référence à une valeur secrète du client dans le secret. Utilisez également le même mot clé lorsque vous créez le secret dans la console Lake Formation. -
Créez un rôle IAM qui permet à l'objet de AWS Glue connexion d'accéder au secret créé à l'étape précédente
L'objet de AWS Glue connexion a besoin d'accéder au AWS Secrets Manager secret lorsque vous l'utilisez AWS Secrets Manager pour stocker, récupérer et actualiser votre jeton OAuth secret. L'objet de AWS Glue connexion nécessite également un accès pour créer, décrire et utiliser les interfaces réseau Amazon VPC lorsque vous utilisez un point de terminaison Amazon VPC pour restreindre la connectivité à votre compte. Snowflake
Créez une politique IAM et associez-la à un rôle IAM. Ajoutez le principal de AWS Glue service à la politique de confiance.
Dans l'exemple suivant, remplacez
your-secrets-manager-ARN, etyour-vpc-idpar vos propres informations.your-subnet-id1Exemple Stratégie 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"] } } } ] }Exemple Stratégie d’approbation
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] } -
Créez une politique IAM qui donne à Lake Formation un accès en lecture à l'emplacement Amazon S3 du catalogue
En tant que propriétaire d'un catalogue fédéré dans Data Catalog, vous utilisez Lake Formation pour accorder un accès grossier aux tables, un accès fin (au niveau des colonnes, des lignes et au niveau des cellules) et un accès basé sur des balises à vos équipes chargées des données. Lake Formation utilise un rôle IAM qui lui permet d'accéder aux emplacements Amazon S3 sous-jacents de vos tables Iceberg distantes. Cet accès permet à Lake Formation de vendre des identifiants d'accès délimités aux moteurs d'analyse interrogeant des tables distantes.
Créez une politique IAM et attachez-la à un rôle IAM. Ajoutez le principal de service de Lake Formation à la politique de confiance des rôles.
Dans l'exemple suivant, remplacez
etamzn-s3-demo-bucketNpar vos propres informations.your-kms-keyExemple Stratégie 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" ] } ] }Exemple Stratégie d’approbation
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }Note
Lorsque vous utilisez la console Lake Formation pour créer un catalogue fédéré, la console utilise un seul rôle IAM auquel les deux politiques sont associées pour terminer la configuration.
-
Création d'un objet AWS Glue de connexion
AWS Glue supports de connecteurs OAuth2 et méthodes d'authentification personnalisées. L'objet de connexion au catalogue de données prend en charge la
CATALOG_CASING_FILTERconfiguration qui vous permet d'importer dans Data Catalog des objets en minuscules ou en majuscules de votre catalogue distant.L'exemple suivant utilise la configuration OAuth2 d'authentification pour créer une AWS Glue connexion. Remplacez
par vos informations.highlighted sectionsaws 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" } }' -
Enregistrer AWS Glue la connexion en tant que ressource Lake Formation
À l'aide de l'objet de AWS Glue connexion (créé à l'étape 4) et du rôle IAM (créé à l'étape 3), vous pouvez désormais enregistrer l'objet de AWS Glue connexion en tant que ressource gérée par Lake Formation.
Remplacez
etyour-glue-connector-arnpar vos informations.your-IAM-role-ARN-having-LF-accessaws lakeformation register-resource \ --resource-arnyour-glue-connector-arn\ --role-arnyour-IAM-role-ARN-having-LF-access\ --with-federation \ --with-privileged-access -
Création d'un catalogue fédéré dans Data Catalog
Après avoir créé un objet de AWS Glue connexion et l'avoir enregistré auprès de Lake Formation, vous pouvez créer un catalogue fédéré dans le catalogue de données :
Fournissez au catalogue fédéré un nom unique à
, référencez le catalogue dans Snowflake atyour-federated-catalog-nameet un nom de connexion d'entrée créé précédemment àcatalog-name-in-Snowflake.your-glue-connection-nameaws glue create-catalog \ --nameyour-federated-catalog-name\ --catalog-input '{ "FederatedCatalog": { "Identifier":catalog-name-in-Snowflake", "ConnectionName":your-glue-connection-name" }, "CreateTableDefaultPermissions": [], "CreateDatabaseDefaultPermissions": [] }'
Considérations relatives à l'intégration avec Snowflake
-
Lorsque vous déposez des ressources (telles que des bases de données et des tables)Snowflake, Lake Formation ne révoque pas automatiquement les autorisations accordées sur cette ressource fédérée. Pour supprimer les autorisations d'accès, vous devez révoquer explicitement les autorisations précédemment accordées sur la ressource fédérée à l'aide de Lake Formation.
-
Lorsque vous montez un catalogue distant avec
CATALOG_CASING_FILTER='UPPERCASE_ONLY'configuration, les bases de données et les tables avec des identifiants en majuscules sont fédérées, mais pas les objets avec des identifiants en minuscules. -
Vous pouvez réutiliser la même AWS Glue connexion pour créer plusieurs catalogues fédérés. La suppression d'un catalogue n'entraîne pas la suppression de la connexion associée. Pour supprimer une connexion, utilisez la
aws glue delete-connectioncommande AWS CLI et assurez-vous que tous les catalogues associés sont d'abord supprimés. -
Les espaces de noms imbriqués dans le Polaris catalogue ne sont pas pris en charge. En d'autres termes, la fédération de catalogues peut accéder aux Iceberg tables distantes qui suivent une notation
catalog.database.tableen 3 parties.