Configuration de l’accès intercompte à AWS Glue dans Athena pour Spark
Cette rubrique explique comment le compte consommateur 666666666666 et le compte propriétaire 999999999999 peuvent être configurés pour un accès intercompte à AWS Glue. Lorsque les comptes sont configurés, le compte consommateur peut exécuter des requêtes à partir d'Athena pour Spark sur les bases de données et tables AWS Glue du propriétaire.
Étape 1 : Autorisation de l’accès aux rôles de consommateur dans AWS Glue
Dans AWS Glue, le propriétaire crée une politique qui permet aux rôles du consommateur d'accéder au catalogue de données AWS Glue du propriétaire.
Pour ajouter une politique AWS Glue qui autorise un rôle de consommateur à accéder au catalogue de données du propriétaire
-
À l'aide du compte du propriétaire du catalogue, connectez-vous à la AWS Management Console.
Ouvrez la console AWS Glue, à l’adresse https://console.aws.amazon.com/glue/
. -
Dans le panneau de navigation, développez Catalogue de données, puis choisissez Paramètres du catalogue.
-
Sur la page des paramètres du catalogue de données, dans la section Autorisations, ajoutez une politique similaire à la suivante. Cette politique prévoit des rôles pour le compte consommateur
666666666666pour accéder au catalogue de données du compte propriétaire999999999999.
Étape 2 : Configuration du compte consommateur pour l’accès
Dans le compte consommateur, créez une politique pour autoriser l'accès aux bases de données et aux tables AWS Glue Data Catalog du propriétaire, et attachez la politique à un rôle. L'exemple suivant utilise le compte consommateur 666666666666.
Pour créer une politique AWS Glue d'accès au AWS Glue Data Catalog du propriétaire
-
À l'aide du compte consommateur, connectez-vous à la AWS Management Console.
Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau de navigation, développez Gestion des accès, puis choisissez Politiques.
-
Choisissez Créer une politique.
-
Sur la page Spécifier les autorisations, choisissez JSON.
-
Dans l'éditeur de politiques, entrez une instruction JSON comme la suivante qui autorise des actions AWS Glue sur le catalogue de données du compte propriétaire.
-
Choisissez Suivant.
-
Sur la page Examiner et créer, dans Nom de la politique, saisissez un nom pour la politique.
-
Choisissez Créer une politique.
Ensuite, vous utilisez la console IAM du compte consommateur pour attacher la politique que vous venez de créer au ou aux rôles IAM que le compte consommateur utilisera pour accéder au catalogue de données du propriétaire.
Pour attacher la politique AWS Glue aux rôles du compte consommateur
-
Dans le panneau de navigation de la console IAM du compte consommateur, sélectionnez Rôles.
-
Sur la page Rôles, recherchez le rôle auquel vous souhaitez attacher la politique.
-
Choisissez Ajouter des autorisations, puis Attacher des politiques.
-
Recherchez la politique que vous venez de créer.
-
Cochez la case correspondant à la politique, puis choisissez Ajouter des autorisations.
-
Répétez les étapes pour ajouter la politique aux autres rôles que vous souhaitez utiliser.
Étape 3 : Configuration d’une session et création d’une requête
Dans Athena Spark, dans le compte du demandeur, à l'aide du rôle spécifié, créez une session pour tester l'accès en créant un bloc-notes ou en modifiant une session en cours. Lorsque vous configurez les propriétés de session, spécifiez l'une des options suivantes :
-
Le séparateur de catalogue AWS Glue – Cette approche inclut l’ID de compte propriétaire dans vos requêtes. Utilisez cette méthode si vous comptez utiliser la session pour interroger des catalogues de données provenant de différents propriétaires.
-
L’ID du catalogue AWS Glue – Cette approche permet d’interroger directement la base de données. Cette méthode est plus pratique si vous comptez utiliser la session pour interroger uniquement le catalogue de données d'un seul propriétaire.
Lorsque vous modifiez les propriétés de session, ajoutez les éléments suivants :
{ "spark.hadoop.aws.glue.catalog.separator": "/" }
Lorsque vous exécutez une requête dans une cellule, utilisez une syntaxe similaire à celle décrite dans l'exemple suivant. Notez que dans la clause FROM, l'ID du catalogue et le séparateur sont requis devant le nom de la base de données.
df = spark.sql('SELECT requestip, uri, method, status FROM `999999999999/mydatabase`.cloudfront_logs LIMIT 5') df.show()
Lorsque vous modifiez les propriétés de session, entrez la propriété suivante. Remplacez 999999999999 par l'ID du compte propriétaire.
{ "spark.hadoop.hive.metastore.glue.catalogid": "999999999999" }
Lorsque vous exécutez une requête dans une cellule, utilisez une syntaxe similaire à celle ci-dessous. Notez que dans la clause FROM, l'ID du catalogue et le séparateur ne sont pas requis devant le nom de la base de données.
df = spark.sql('SELECT * FROM mydatabase.cloudfront_logs LIMIT 10') df.show()
Ressources supplémentaires
Configuration de l’accès intercompte aux catalogues de données AWS Glue
Gestion des autorisations intercomptes avec AWS Glue et Lake Formation dans le Guide du développeur AWS Lake Formation.
Configuration de l'accès intercompte à un AWS Glue Data Catalog partagé à l'aide d'Amazon Athena dans le Guide Modèles de recommandations AWS.