Configurer une intégration de catalogue pour AWS Glue

Créez une intégration de catalogue pour AWS Glue et accordez à Snowflake un accès restreint au catalogue de données AWS Glue.

Note

Pour suivre les instructions de cette section, vous devez disposer d’autorisations dans Amazon Web Services (AWS) permettant de créer et de gérer des politiques et des rôles IAM. Si vous n’êtes pas un administrateur AWS, demandez à votre administrateur AWS d’effectuer ces tâches.

Étape 1 : Configurer des autorisations d’accès pour le catalogue de données AWS Glue

Le mieux est de créer une nouvelle politique IAM pour que Snowflake puisse accéder au catalogue de données AWS Glue. Vous pouvez ensuite attacher la politique à un rôle IAM et utiliser les identifiants de sécurité générés par AWS pour que le rôle puisse accéder aux fichiers du catalogue. Pour des instructions, voir Création de politiques IAM et Modification d’une politique d’autorisations de rôle dans le Guide de l’utilisateur IAM (Identity and Access Management - Gestion de l’identité et de l’accès) AWS.

Au minimum, Snowflake a besoin les autorisations suivantes sur le catalogue de données AWS Glue pour pouvoir accéder aux informations sur les tables.

  • glue:GetTable

  • glue:GetTables

L’exemple de politique suivant (au format JSON) fournit les autorisations nécessaires pour pouvoir accéder à toutes les tables d’une base de données spécifique.

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "AllowGlueCatalogTableAccess",
         "Effect": "Allow",
         "Action": [
            "glue:GetTable",
            "glue:GetTables"
         ],
         "Resource": [
            "arn:aws:glue:*:<accountid>:table/*/*",
            "arn:aws:glue:*:<accountid>:catalog",
            "arn:aws:glue:*:<accountid>:database/<database-name>"
         ]
      }
   ]
}
Copy

Note

  • Vous pouvez modifier l’élément Resource de cette politique pour restreindre davantage les ressources autorisées (par exemple, le catalogue, les bases de données ou les tables). Pour plus d’informations, voir Types de ressource définis par AWS Glue

  • Si vous utilisez le chiffrement pour AWS Glue, vous devez modifier la politique pour ajouter des autorisations Key Management Service AWS (AWSKMS). Pour plus d’informations, voir Configuration du chiffrement dans AWS Glue.

Étape 2 : Créer une intégration de catalogue dans Snowflake

Créez une intégration de catalogue pour le catalogue de données AWS Glue via la commande CREATECATALOGINTEGRATION (AWS Glue).

L’exemple suivant crée une intégration de catalogue qui utilise une source de catalogue de données AWS Glue. L’exemple indique une valeur pour le paramètre GLUE_REGION facultatif.

CREATE CATALOG INTEGRATION glueCatalogInt
  CATALOG_SOURCE = GLUE
  CATALOG_NAMESPACE = 'my.catalogdb'
  TABLE_FORMAT = ICEBERG
  GLUE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myGlueRole'
  GLUE_CATALOG_ID = '123456789012'
  GLUE_REGION = 'us-east-2'
  ENABLED = TRUE;
Copy

Étape 3 : Récupérer l’utilisateur IAM AWS et l’ID externe de votre compte Snowflake

Pour récupérer les informations sur l’utilisateur IAM AWS et l’ID externe qui ont été créés pour votre compte Snowflake lorsque vous avez créé l’intégration de catalogue, exécutez la commande DESCRIBE CATALOG INTEGRATION. Vous fournissez ces informations à AWS dans la section suivante afin d’établir une relation de confiance.

L’exemple de commande suivant décrit l’intégration de catalogue créée à l’étape précédente :

DESCRIBE CATALOG INTEGRATION glueCatalogInt;
Copy

Notez les valeurs suivantes :

Valeur

Description

GLUE_AWS_IAM_USER_ARN

Utilisateur IAM AWS créé pour votre compte Snowflake, par exemple, arn:aws:iam::123456789001:user/abc1-b-self1234. Snowflake provisionne un seul utilisateur IAM pour l’intégralité de votre compte Snowflake. Toutes les intégrations de catalogue Glue de votre compte utilisent cet utilisateur IAM.

GLUE_AWS_EXTERNAL_ID

L’ID externe nécessaire pour établir une relation de confiance.

Vous fournirez ces valeurs dans la section suivante.

Étape 4 : Accorder à l’utilisateur IAM des autorisations lui permettant d’accéder au catalogue de données AWS Glue

Mettez à jour la politique de confiance pour le même rôle IAM que celui que vous avez spécifié avec l’ARN lors de la création de l’intégration de catalogue (GLUE_AWS_ROLE_ARN). Ajoutez à la politique de confiance les valeurs que vous avez enregistrées dans Étape 3 : Récupérer l’utilisateur IAM AWS et l’ID externe de votre compte Snowflake.

Pour des instructions, voir Modification d’une politique de confiance.

L’exemple de politique de confiance suivant montre à quel endroit spécifier les valeurs GLUE_AWS_IAM_USER_ARN et GLUE_AWS_EXTERNAL_ID :

{
   "Version": "2012-10-17",
   "Statement": [
      {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
         "AWS": "<glue_iam_user_arn>"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
         "StringEquals": {
            "sts:ExternalId": "<glue_aws_external_id>"
         }
      }
      }
   ]
}
Copy

Où :

  • glue_iam_user_arn est la valeur GLUE_IAM_USER_ARN que vous avez enregistrée.

  • glue_aws_external_id est la valeur GLUE_AWS_EXTERNAL_ID que vous avez enregistrée.

Note

  • Pour des raisons de sécurité, si vous créez une nouvelle intégration de catalogue (ou si vous recréez une intégration de catalogue existante via la syntaxe CREATE OR REPLACE CATALOG INTEGRATION), la nouvelle intégration de catalogue a un ID externe différent et ne peut pas résoudre la relation de confiance à moins que vous ne modifiiez la politique de confiance en y ajoutant le nouvel ID externe.

  • Pour vérifier que vos autorisations sont configurées correctement, créez une table Iceberg via cette intégration de catalogue. Snowflake ne vérifie pas que vos autorisations sont correctement définies tant que vous n’avez pas créé de table Iceberg qui référence cette intégration de catalogue.

Prochaines étapes

Après avoir configuré une intégration de catalogue pour AWS Glue, vous pouvez créer une table Iceberg qui utilise AWS Glue comme catalogue.

Pour mettre à jour la table et continuer à la synchroniser en fonction des modifications apportées à AWS Glue, utilisez une instruction ALTER ICEBERG TABLE … REFRESH. Pour plus d’informations, voir Actualisation des métadonnées d’une table.