Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je fournir un accès intercompte aux ressources du catalogue de données AWS Glue ?
Je souhaite utiliser des services tels qu'Amazon EMR, Amazon Athena et AWS Glue, avec le catalogue de données AWS Glue d’un autre compte.
Résolution
La manière dont vous accédez aux ressources intercompte dans le catalogue de données AWS Glue dépend du service AWS utilisé pour vous connecter. Cette méthode d'accès dépend également de l'utilisation ou non d'AWS Lake Formation pour contrôler l'accès au catalogue de données.
Si vous ne savez pas si vous utilisez Lake Formation et que vous souhaitez partager une table, exécutez la commande de l'interface de ligne de commande AWS (AWS CLI) suivante :
aws glue get-table --database-name DOC-EXAMPLE-DB --name DOC-EXAMPLE-TABLE --query 'Table.IsRegisteredWithLakeFormation'
Veillez à remplacer les valeurs suivantes dans cette commande :
- DOC-EXAMPLE-DB avec le nom de la base de données
- DOC-EXAMPLE-TABLE par le nom de votre table
Si la commande renvoie true, cela signifie que vous utilisez Lake Formation.
Remarque : Si vous recevez des messages d’erreurs lors de l’exécution des commandes de l’AWS CLI, vérifiez que vous utilisez bien la version la plus récente de l’AWS CLI.
Le catalogue de données peut se trouver dans un environnement hybride, où certaines tables utilisent Lake Formation et d'autres les autorisations AWS Glue. Pour mettre à niveau votre catalogue de données vers Lake Formation, consultez la section Mise à niveau des autorisations de données AWS Glue vers le modèle AWS Lake Formation.
Remarque : Cet article décrit les options de solution pour l'accès intercompte au sein d'une même région AWS. L'accès aux ressources d'une autre région dépasse le cadre de cet article. Pour répliquer le catalogue de données de votre compte vers un compte d'une autre région AWS, consultez la page Utilitaire de réplication AWS Glue Data Catalog sur GitHub.
Accès au catalogue de données sans Lake Formation
Si vous n'utilisez pas Lake Formation, procédez comme suit pour accorder des autorisations au niveau des ressources au compte A à partir du catalogue de données AWS Glue du compte B.
Remarque : Le compte A est le compte d'extraction, de transformation et de chargement (ETL) et le compte B est le compte sur lequel se trouvent les ressources du catalogue de données AWS Glue.
Accès aux ressources à l'aide d'une tâche ETL AWS Glue
1. Associez une politique de ressources similaire à la politique suivante dans le compte B. Cela permet au compte A d’accéder aux bases de données et tables du compte B. Vous pouvez associer la politique à l’aide de la console AWS Glue en sélectionnant Paramètres du catalogue dans le volet de navigation.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1111222233334444:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:5555666677778888:catalog", "arn:aws:glue:us-east-1:5555666677778888:database/DOC-EXAMPLE-DB", "arn:aws:glue:us-east-1:5555666677778888:table/DOC-EXAMPLE-DB/*" ] } ] }
Veillez à remplacer les valeurs suivantes dans cette politique :
- 1111222233334444 avec l'identifiant du compte A
- 5555666677778888 avec l'identifiant du compte B
- us-east-1 avec la région de votre choix
- DOC-EXAMPLE-DB avec le nom de la base de données
Vous pouvez également limiter l'accès à un rôle spécifique dans le compte A utilisé pour exécuter la tâche. Pour ce faire, incluez l'ARN du rôle dans la politique. Exemple :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1111222233334444:role/service-role/AWSGlueServiceRole-Glue-Test" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:5555666677778888:catalog", "arn:aws:glue:us-east-1:5555666677778888:database/DOC-EXAMPLE-DB", "arn:aws:glue:us-east-1:5555666677778888:table/DOC-EXAMPLE-DB/*" ] } ] }
Veillez à remplacer les valeurs suivantes dans cette politique :
- 1111222233334444 par l'identifiant du compte A
- 5555666677778888 par l'identifiant du compte B
- us-east-1 par la région de votre choix
- DOC-EXAMPLE-DB par le nom de la base de données
- AWSGlueServiceRole-Glue-Test par l'ARN du rôle utilisé pour exécuter la tâche ETL
2. L'utilisateur AWS Identity and Access Management (IAM) du compte A qui exécute la tâche ETL doit accéder aux bases de données et aux tables du compte B. Dans le compte A, associez une politique IAM au rôle IAM de la tâche ETL AWS Glue pour accéder à la base de données et aux tables du compte B :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetConnection", "glue:GetTable", "glue:GetPartition" ], "Resource": [ "arn:aws:glue:us-east-1:5555666677778888:catalog", "arn:aws:glue:us-east-1:5555666677778888:database/default", "arn:aws:glue:us-east-1:5555666677778888:database/DOC-EXAMPLE-DB", "arn:aws:glue:us-east-1:5555666677778888:table/DOC-EXAMPLE-DB/*" ] } ] }
Remarque : Si vous utilisez Amazon Athena avec le catalogue de données AWS Glue, incluez la base de données par défaut dans la politique. Cela garantit la réussite des actions GetDatabase et CreateDatabase. Pour plus d'informations, consultez la section Politique d'accès à la base de données et au catalogue par défaut par région AWS.
Veillez à remplacer les valeurs suivantes dans cette politique :
- 1111222233334444 par l'identifiant du compte A
- 5555666677778888 par l'identifiant du compte B
- us-east-1 par la région de votre choix
- DOC-EXAMPLE-DB par le nom de la base de données
3. Après avoir fourni l'autorisation requise au compte A, vous pouvez tester si le compte A a accès au catalogue de données du compte B. Pour cela, créez une tâche ETL avec le script suivant :
"""Create Spark Session with cross-account AWS Glue Data Catalog""" from pyspark.sql import SparkSession spark_session = SparkSession.builder.appName("Spark Glue Example") \ .config("hive.metastore.client.factory.class", \ "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory") \ .config("hive.metastore.glue.catalogid", "5555666677778888") \ .enableHiveSupport() \ .getOrCreate() table_df = spark_session.sql("SELECT * FROM DOC-EXAMPLE-DB.DOC-EXAMPLE-TABLE limit 10") table_df.show()
Veillez à remplacer les valeurs suivantes dans le script :
- 5555666677778888 par l'identifiant du compte B
- DOC-EXAMPLE-DB par le nom de la base de données
- DOC-EXAMPLE-TABLE par le nom de votre table
Accès aux ressources avec Amazon EMR
Pour accéder au catalogue de données depuis un autre compte Amazon EMR, consultez la section Comment utiliser Hive et Spark sur Amazon EMR pour interroger un catalogue de données AWS Glue qui se trouve dans un autre compte AWS ?
Accès aux ressources avec Athena
Pour accéder au catalogue de données dans un autre compte avec Athena, consultez la section Accès intercompte aux catalogues de données AWS Glue.
Accès au catalogue de données avec Lake Formation
Si vous utilisez Lake Formation, vous pouvez utiliser l'une des méthodes suivantes pour accorder un accès intercompte au catalogue de données :
- Ressource nommée
- Contrôle d'accès basé sur les identifications (TBAC)
Important : Pour empêcher que les nouvelles tables du catalogue de données ne disposent d'une autorisation Super par défaut pour IAMAllowedPrincipals, procédez comme suit :
1. Ouvrez la console AWS Lake Formation.
2. Dans le volet de navigation, sélectionnez Catalogue de données, puis Paramètres.
3. Désactivez les options Utiliser uniquement le contrôle d'accès IAM pour les nouvelles bases de données et Utiliser uniquement le contrôle d'accès IAM pour les nouvelles tables de cette base de données.
4. Sélectionnez Enregistrer.
Pour plus d'informations, consultez la section Modification des paramètres de sécurité par défaut de votre lac de données.
Octroi d'autorisations intercompte à l'aide de la méthode des ressources nommées
AWS Resource Access Manager (AWS RAM) est utilisé pour fournir des autorisations de base de données à l'aide de la méthode de ressource nommée.
- Pour accéder à une ressource depuis un autre compte de votre organisation, activez le partage de ressources au sein de l'organisation.
- Pour accéder à une ressource dans un autre compte extérieur à votre organisation, consultez la section Accès et affichage des tables et des bases de données du catalogue de données partagées.
Pour accorder à Lake Formation des autorisations sur le compte A pour les ressources du catalogue de données du compte B, procédez comme suit :
1. Associez une politique de ressources similaire à la politique suivante dans le catalogue de données pour le compte B :
{ "Effect": "Allow", "Action": [ "glue:ShareResource" ], "Principal": { "Service": [ "ram.amazonaws.com" ] }, "Resource": [ "arn:aws:glue:us-east-1:5555666677778888:table/*/*", "arn:aws:glue:us-east-1:5555666677778888:database/*", "arn:aws:glue:us-east-1:5555666677778888:catalog" ] }
Assurez-vous de remplacer 5555666677778888 dans la politique par l'ID de compte du compte B.
2. Utilisez la méthode de ressource nommée pour accorder des autorisations à Lake Formation aux bases de données et aux tables du catalogue de données du compte B. Pour plus d'informations, consultez la section Octroi d'autorisations de catalogue de données à l'aide de la méthode de ressource nommée.
Octroi d'autorisations intercompte à l'aide de TBAC
Avec TBAC, vous pouvez définir des identifications de politique et attribuer ces dernières aux bases de données, tables et colonnes AWS Glue. Ces identifications peuvent ensuite être utilisées pour appliquer un accès précis à ces ressources du catalogue de données. Pour plus d'informations, consultez la section Partage de données à l'aide d'un contrôle d'accès basé sur des identifications.
Pour accorder des autorisations à Lake Formation à l'aide de TBAC, procédez comme suit :
1. Associez une politique de ressources similaire à la politique suivante dans le catalogue de données pour le compte B :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1111222233334444:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:5555666677778888:catalog", "arn:aws:glue:us-east-1:5555666677778888:database/*", "arn:aws:glue:us-east-1:5555666677778888:table/*" ], "Condition": { "Bool": { "glue:EvaluatedByLakeFormationTags": true } } } ] }
Assurez-vous de remplacer les valeurs suivantes dans la politique :
- 1111222233334444 par l'identifiant du compte A
- 5555666677778888 par l'identifiant du compte B
2. Créez les identifications de politique.
3. Utilisez la méthode TBAC pour accorder des autorisations à Lake Formation sur les ressources du catalogue de données. Pour plus d'informations, consultez la section Octroi d'autorisations de catalogue de données à l'aide de la méthode LF-TBAC.
Informations connexes
Octroi d'un accès à plusieurs comptes
Spécification des ARN des ressources AWS Glue
À propos de la mise à niveau vers le modèle d'autorisations Lake Formation
Migration entre le métastore Hive et le catalogue de données AWS Glue
Stratégies relatives aux ressources AWS Glue pour le contrôle d'accès

Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- Réponse acceptéedemandé il y a 5 moislg...
- demandé il y a 3 moislg...
- AWS OFFICIELA mis à jour il y a 6 mois
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a 2 ans