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.
Configurer l'accès entre comptes à AWS Glue catalogues de données
Vous pouvez utiliser le compte croisé d'Athéna AWS Glue fonctionnalité de catalogue pour enregistrer un AWS Glue catalogue à partir d'un compte autre que le vôtre. Après avoir configuré les IAM autorisations requises pour AWS Glue et enregistrez le catalogue en tant que DataCatalogressource Athena, vous pouvez utiliser Athena pour exécuter des requêtes entre comptes. Pour plus d'informations sur l'utilisation de la console Athena pour enregistrer un catalogue à partir d'un autre compte, consultez Enregistrer un catalogue de données à partir d'un autre compte.
Pour plus d'informations sur l'accès entre comptes dans AWS Glue, voir Octroi d'un accès entre comptes dans le AWS Glue Guide du développeur.
Avant de commencer
Étant donné que cette fonctionnalité utilise les DataCatalog
ressources APIs et fonctionnalités existantes d'Athena pour permettre l'accès entre comptes, nous vous recommandons de lire les ressources suivantes avant de commencer :
-
Connexion aux sources de données- Contient des rubriques sur l'utilisation d'Athéna avec AWS Glue sources de catalogue de données, Hive ou Lambda.
-
Exemple de politiques de catalogue de données – Indique comment écrire des politiques qui contrôlent l'accès aux catalogues de données.
-
Utilisez les AWS CLI métastores with Hive- Montre comment utiliser AWS CLI avec les métastores Hive, mais contient des cas d'utilisation applicables à d'autres sources de données.
Considérations et restrictions
Actuellement, Athena possède un compte croisé AWS Glue l'accès au catalogue est soumis aux restrictions suivantes :
-
La fonctionnalité n'est disponible que dans Régions AWS où la version 2 ou ultérieure du moteur Athena est prise en charge. Pour plus d'informations sur les versions du moteur Athena, voir Gestion des versions du moteur Athena. Pour mettre à niveau la version du moteur pour un groupe de travail, veuillez consulter la rubrique Modifier les versions du moteur Athena.
-
Lorsque vous enregistrez un autre compte AWS Glue Data Catalog dans votre compte, vous créez une
DataCatalog
ressource régionale liée aux données de l'autre compte dans cette région en particulier uniquement. -
Actuellement, les
CREATE VIEW
relevés qui incluent un compte croisé AWS Glue les catalogues ne sont pas pris en charge. -
Catalogues chiffrés à l'aide de AWS les clés gérées ne peuvent pas être demandées d'un compte à l'autre. Pour les catalogues que vous souhaitez interroger sur plusieurs comptes, utilisez plutôt des clés gérées par le client (
KMS_CMK
). Pour plus d'informations sur les différences entre les clés gérées par le client et AWS clés gérées, voir Clés client et AWS clés dans le AWS Key Management Service Guide du développeur.
Mise en route
Dans le scénario suivant, le compte « emprunteur » (6666666666) souhaite exécuter une requête qui fait référence au SELECT
AWS Glue catalogue appartenant au compte « propriétaire » (999999999999), comme dans l'exemple suivant :
SELECT * FROM ownerCatalog.tpch1000.customer
Dans la procédure suivante, les étapes 1a et 1b montrent comment donner au compte emprunteur l'accès au compte propriétaire AWS Glue ressources, tant du côté de l'emprunteur que du côté du propriétaire. L'exemple accorde l'accès à la base de données tpch1000
et à la table customer
. Modifiez ces exemples de noms pour répondre à vos besoins.
Étape 1a : Création d'un rôle d'emprunteur avec une politique d'accès au rôle du propriétaire AWS Glue resources
Pour créer un rôle de compte d'emprunteur avec une politique d'accès au compte propriétaire AWS Glue ressources, vous pouvez utiliser AWS Identity and Access Management (IAM) console ou le IAMAPI. Les procédures suivantes utilisent la IAM console.
Pour créer un rôle d'emprunteur et une politique permettant d'accéder au compte propriétaire AWS Glue resources
-
Connectez-vous à la IAM console depuis le compte https://console.aws.amazon.com/iam/
de l'emprunteur. -
Dans le panneau de navigation, développez Gestion des accès, puis choisissez Politiques.
-
Choisissez Create Policy (Créer une politique).
-
Pour l'éditeur de politiques, sélectionnez JSON.
-
Dans l'éditeur de stratégie, entrez la politique suivante, puis modifiez-la en fonction de vos besoins :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:
us-east-1
:999999999999
:catalog", "arn:aws:glue:us-east-1
:999999999999
:database/tpch1000
", "arn:aws:glue:us-east-1
:999999999999
:table/tpch1000
/customer
" ] } ] } -
Choisissez Suivant.
-
Sur la page Réviser et créer, dans Nom de la politique, entrez le nom de la stratégie (par exemple,
CrossGluePolicyForBorrowerRole
). -
Choisissez Create Policy (Créer une politique).
-
Dans le panneau de navigation, choisissez Roles (Rôles).
-
Sélectionnez Create role (Créer un rôle).
-
Sur la page Sélectionner une entité de confiance, choisissez Compte AWS, puis choisissez Next.
-
Sur la page Ajouter des autorisations, entrez le nom de la politique que vous avez créée dans le champ de recherche (par exemple,
CrossGluePolicyForBorrowerRole
). -
Cochez la case à côté du nom de la politique, puis choisissez Next.
-
Sur la page Name, review, and create (Nommer, réviser et créer) pour le Role name (nom de rôle), saisissez un nom de rôle (par exemple
CrossGlueBorrowerRole
). -
Sélectionnez Créer un rôle.
Étape 1b : Création d'une politique de propriétaire à octroyer AWS Glue accès à l'emprunteur
Pour octroyer AWS Glue accès depuis le compte propriétaire (999999999999) au rôle de l'emprunteur, vous pouvez utiliser AWS Glue console ou AWS Glue PutResourcePolicyAPIopération. La procédure suivante utilise AWS Glue console.
Pour octroyer AWS Glue accès au compte de l'emprunteur auprès du propriétaire
-
Connectez-vous au AWS Glue console https://console.aws.amazon.com/glue/
depuis le compte du propriétaire. -
Dans le panneau de navigation, développez Catalogue de données, puis choisissez Paramètres du catalogue.
-
Dans Autorisations, saisissez une politique telle que la suivante. Dans
rolename
, entrez le rôle créé par l'emprunteur à l'étape 1a (par exemple,CrossGlueBorrowerRole
). Si vous voulez augmenter la portée de l'autorisation, vous pouvez utiliser le caractère générique*
pour les types de ressources base de données et table.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
666666666666
:user/username
", "arn:aws:iam::666666666666
:role/rolename
" ] }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1
:999999999999
:catalog", "arn:aws:glue:us-east-1
:999999999999
:database/tpch1000
", "arn:aws:glue:us-east-1
:999999999999
:table/tpch1000
/customer
" ] } ] }
Une fois que vous aurez terminé, nous vous recommandons d'utiliser AWS Glue APIpour effectuer des tests d'appels entre comptes afin de confirmer que les autorisations sont configurées comme prévu.
Étape 2 : L'emprunteur enregistre le AWS Glue Data Catalog qui appartient au compte du propriétaire
La procédure suivante explique comment utiliser la console Athena pour configurer AWS Glue Data Catalog dans le compte Amazon Web Services du propriétaire en tant que source de données. Pour plus d'informations sur l'utilisation des API opérations plutôt que de la console pour enregistrer le catalogue, consultez(Facultatif) Utilisez le API pour enregistrer un catalogue de données Athena appartenant au compte du propriétaire.
Pour enregistrer un AWS Glue Data Catalog appartenant à un autre compte
Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/
. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.
-
Développez Administration, puis choisissez Sources de données.
-
Dans le coin supérieur droit, choisissez Create data source (Créer une source de données).
-
Sur la page Choisir une source de données, pour Sources de données, sélectionnez S3 - AWS Glue Data Catalog, puis choisissez Next.
-
Sur la page Entrer les détails de la source de données, dans AWS Glue Data Catalogsection, pour Choisir un AWS Glue Data Catalog, choisissez AWS Glue Data Catalog sur un autre compte.
-
Pour Data source details (Détails de la source de données), saisissez les informations suivantes :
-
Nom de la source de données : entrez le nom que vous souhaitez utiliser dans vos SQL requêtes pour faire référence au catalogue de données de l'autre compte.
-
Description – (Facultative) Saisissez une description du catalogue de données dans l'autre compte.
-
ID du catalogue – Saisissez l'ID de compte Amazon Web Services à 12 chiffres du compte auquel appartient le catalogue de données. L'ID de compte Amazon Web Services est l'ID de catalogue.
-
-
(Facultatif) Développez Identifications, saisissez les paires clé-valeur que vous voulez associer à la source de données. Pour en savoir plus sur les identifications, consultez Tag : ressources d'Athena.
-
Choisissez Suivant.
-
Sur la page Review and create (Vérifier et créer), vérifiez les informations que vous avez fournies, puis choisissez Create data source (Créer une source de données). La page Data source details (Détails de la source de données) répertorie les bases de données et les balises du catalogue de données que vous avez enregistré.
-
Choisissez Sources de données. Le catalogue de données que vous avez enregistré est répertorié dans la colonne Data source name (Nom de la source de données).
-
Pour afficher ou modifier les informations relatives au catalogue de données, choisissez le catalogue, puis choisissez Actions, Edit (Modifier).
-
Pour supprimer le nouveau catalogue de données, choisissez le catalogue, puis choisissez Actions, Delete (Supprimer).
Étape 3 : l'emprunteur soumet une requête
L'emprunteur soumet une requête qui fait référence au catalogue à l'aide du catalog
.database
.table
syntaxe, comme dans l'exemple suivant :
SELECT * FROM ownerCatalog.tpch1000.customer
Au lieu d'utiliser la syntaxe complète, l'emprunteur peut également spécifier le catalogue de manière contextuelle en le transmettant via le. QueryExecutionContext
(Facultatif) Configurer des autorisations Amazon S3 supplémentaires
-
Si le compte emprunteur utilise une requête Athena pour écrire de nouvelles données dans une table du compte propriétaire, le propriétaire n'aura pas automatiquement accès à ces données dans Amazon S3, même si la table existe dans le compte du propriétaire. Cela est dû au fait que l'emprunteur est le propriétaire de l'objet des informations dans Amazon S3, sauf configuration contraire. Pour accorder au propriétaire l'accès aux données, définissez les autorisations sur les objets en conséquence dans le cadre d'une étape supplémentaire.
-
Certaines DDL opérations entre comptes MSCK REPAIR TABLE nécessitent par exemple des autorisations Amazon S3. Par exemple, si le compte emprunteur effectue une
MSCK REPAIR
opération entre comptes sur une table du compte propriétaire dont les données se trouvent dans un compartiment S3 du compte propriétaire, ce compartiment doit accorder des autorisations au rôle assumé par l'emprunteur pour que la requête aboutisse.
Pour plus d'informations sur l'octroi d'autorisations de bucket, voir Comment définir les autorisations de ACL bucket ? dans le guide de l'utilisateur d'Amazon Simple Storage Service.
(Facultatif) Utiliser un catalogue de manière dynamique
Dans certains cas, vous souhaiterez peut-être effectuer rapidement des tests sur un compte croisé AWS Glue
catalogue sans l'étape préalable de son enregistrement. Vous pouvez effectuer des requêtes entre comptes de manière dynamique sans créer d'objet de DataCatalog
ressource si les autorisations requises IAM et Amazon S3 sont correctement configurées, comme décrit précédemment dans ce document.
Pour référencer explicitement un catalogue sans enregistrement, utilisez la syntaxe de l'exemple suivant :
SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer
Utilisez le format glue:
« », où <arn>
est AWS Glue Data Catalog ARNque vous souhaitez utiliser. Dans l'exemple, Athena utilise cette syntaxe pour pointer dynamiquement vers le compte 9999999999999999 AWS Glue catalogue de données comme si vous aviez créé séparément un <arn>
DataCatalog
objet pour celui-ci.
Remarques sur l'utilisation des catalogues dynamiques
Lorsque vous utilisez des catalogues dynamiques, rappelez-vous les points suivants.
-
L'utilisation d'un catalogue dynamique nécessite les IAM autorisations que vous utilisez normalement pour les opérations du catalogue API de données Athena. La principale différence est que le nom de la ressource Data Catalog (Catalogue de données) suit la convention d'appellation
glue:*
. -
Le catalogue ARN doit appartenir à la même région que celle dans laquelle la requête est exécutée.
-
Lorsque vous utilisez un catalogue dynamique dans une DML requête ou une vue, entourez-le de guillemets doubles évadés (
\"
). Lorsque vous utilisez un catalogue dynamique dans une DDL requête, entourez-le de caractères antirétrospectifs (`
).
(Facultatif) Utilisez le API pour enregistrer un catalogue de données Athena appartenant au compte du propriétaire
Au lieu d'utiliser la console Athena comme décrit à l'étape 2, il est possible d'utiliser API des opérations pour enregistrer le catalogue de données qui appartient au compte du propriétaire.
Le créateur de la DataCatalogressource Athena doit disposer des autorisations nécessaires pour exécuter l'opération Athena. CreateDataCatalogAPI En fonction de vos besoins, l'accès à des API opérations supplémentaires peut être nécessaire. Pour de plus amples informations, veuillez consulter Exemple de politiques de catalogue de données.
Le corps de CreateDataCatalog
demande suivant enregistre un AWS Glue catalogue pour un accès entre comptes :
# Example CreateDataCatalog request to register a cross-account Glue catalog: { "Description": "Cross-account Glue catalog", "Name": "ownerCatalog", "Parameters": {"catalog-id" : "999999999999" # Owner's account ID }, "Type": "GLUE" }
L'exemple de code suivant utilise un client Java pour créer l'objet DataCatalog
.
# Sample code to create the DataCatalog through Java client CreateDataCatalogRequest request = new CreateDataCatalogRequest() .withName("ownerCatalog") .withType(DataCatalogType.GLUE) .withParameters(ImmutableMap.of("catalog-id", "999999999999")); athenaClient.createDataCatalog(request);
Après ces étapes, l'emprunteur devrait voir à quel ownerCatalog
moment il lance l'ListDataCatalogsAPIopération.
Ressources supplémentaires
-
Enregistrer un catalogue de données à partir d'un autre compte
-
Configurer l'accès entre comptes à un compte partagé AWS Glue Data Catalog en utilisant Amazon Athena dans AWS Guide des modèles d'orientation prescriptifs.
-
Requête entre comptes AWS Glue Data Catalog utilise Amazon Athena
dans AWS Blogue sur les mégadonnées -
Octroi d'un accès entre comptes dans AWS Glue Guide du développeur