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 pour Snowflake Catalogue Iceberg
AWS Glue Data Catalog se fédère pour Snowflake utiliser les informations d'identification OAuth2 d'un Snowflake principal de service. Vous pouvez utiliser cette fédération pour vous connecter à des Snowflake Polaris catalogues Snowflake Horizon et les consulter. 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 responsable 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 qui est régi par Lake Formation, assurez-vous de disposer des autorisations suivantes :
Votre principal IAM (utilisateur ou rôle) doit disposer des autorisations suivantes :
-
Autorisations pour la formation de lacs —
lakeformation:RegisterResource,lakeformation:DescribeResource -
AWS Glue autorisations —
glue:CreateConnectionglue:CreateCatalog,glue:GetConnection,glue:PassConnection -
Autorisations du gestionnaire de secrets —
secretsmanager:CreateSecret,secretsmanager:GetSecretValue -
Autorisations IAM —
iam:CreateRole,iam:AttachRolePolicyiam:PassRole
Vous devez être administrateur d'un lac de données Lake Formation ou être CREATE_CATALOG autorisé à accéder au catalogue de données
Créer 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 le sélecteur de région.
Dans le volet de navigation de gauche, choisissez Catalogues.
Choisissez Créer un catalogue pour ouvrir le flux de travail de création d'un catalogue.
Dans l'étape Choisir la source de données, Snowflake sélectionnez l'une des options disponibles.
Dans 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 de détails du catalogue, donnez un nom unique à votre catalogue AWS Glue fédéré et entrez le nom du Snowflake catalogue existant.
Dans le conteneur de détails des connexions, vous pouvez choisir parmi une connexion existante à laquelle vous avez accès ou 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 à la fois l'authentification OAuth2 et l'authentification personnalisée.
URL du jeton : spécifiez l’URL du fournisseur d’identité du catalogue distant.
ID client OAuth2 — (Facultatif) Spécifiez l'ID client des informations d'identification OAuth2 associées à votre catalogue distant. Si vous ne fournissez pas d'identifiant client, la demande de jeton s'authentifie en utilisant uniquement le secret client stocké dans AWS Secrets Manager.
Secret : stockez et utilisez le secret du client OAuth2 en utilisant AWS Secrets Manager ou entrez la valeur secrète dans la zone de texte. Lorsque vous saisissez le secret manuellement dans la console, il est AWS Glue créé en votre nom.
Étendue de l’URL du jeton : spécifiez l’étendue OAuth pour l’authentification.
Filtre de boîtier du catalogue : choisissez si vous souhaitez transférer les objets en minuscules ou en majuscules de votre catalogue distant vers Data Catalog.
Créez un rôle IAM que AWS Glue les responsables du service Lake Formation pourront utiliser pour accéder respectivement aux emplacements secrets AWS Secrets Manager et aux emplacements Amazon S3 des tables Iceberg distantes. Sélectionnez le rôle IAM dans la liste déroulante d'enregistrement. 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 aux rôles IAM sont correctement configurés.
Cliquez sur Suivant pour vérifier vos paramètres.
Sélectionnez Créer un catalogue dans la page de révision.
-
Créez un AWS Secrets Manager secret
Le AWS Glue connecteur prend en charge deux types d'authentification : OAuth2 et Personnalisé. Lorsque vous utilisez l'option OAuth2, utilisez-la AWS Secrets Manager pour stocker le secret client du principal de Snowflake service. Vous utiliserez ultérieurement ce secret lors de la création de la AWS Glue connexion. Pour l'authentification personnalisée, utilisez 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 de secret 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 nécessite l'accès au AWS Secrets Manager secret lorsque vous l'utilisez AWS Secrets Manager pour stocker, récupérer et actualiser votre jeton secret OAuth. 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 Snowflake compte.
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 à vos équipes chargées des données un accès grossier aux tableaux, un accès affiné (au niveau des colonnes, des lignes et des cellules) et un accès basé sur des balises. Lake Formation utilise un rôle IAM qui lui donne accès aux emplacements Amazon S3 sous-jacents de vos tables Iceberg distantes. Cet accès permet à Lake Formation d'envoyer des informations d'accès étendues aux moteurs d'analyse qui interrogent des tables distantes.
Créez une politique IAM et associez-la à un rôle IAM. Ajoutez le responsable du service 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 sont associées les deux politiques pour terminer la configuration.
-
Création d'un objet AWS Glue de connexion
AWS Glue Le connecteur prend en charge les méthodes d'authentification OAuth2 et personnalisées. L'objet de connexion Data Catalog prend en charge la
CATALOG_CASING_FILTERconfiguration qui vous permet de transférer dans Data Catalog les objets en minuscules ou en majuscules de votre catalogue distant.L'exemple suivant utilise la configuration d'authentification OAuth2 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" } }'Note
Le champ
OAuth2ClientApplicationest facultatif. Si vous l'omettez, la demande de jeton s'authentifie en utilisant uniquement le secret client stocké dans AWS Secrets Manager, sans envoyer d'ID client. -
Enregistrer la AWS Glue connexion en tant que ressource sur la formation lacustre
À 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 Data Catalog :
Donnez au catalogue fédéré un nom unique à
, faites référence au catalogue dans Snowflake atyour-federated-catalog-nameet entrez le nom de connexion 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 à 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 majuscules sont fédérées, mais pas les objets avec des identificateurs 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, veuillez utiliser 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 à Iceberg des tables distantes qui suivent une notation
catalog.database.tableen 3 parties.