Configuration de l'accès entre comptes aux catalogues de AWS Glue données - Amazon Athena

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.

Configuration de l'accès entre comptes aux catalogues de AWS Glue données

Vous pouvez utiliser la fonction de AWS Glue catalogue multi-comptes d'Athena pour enregistrer un AWS Glue catalogue à partir d'un compte autre que le vôtre. Après avoir configuré les IAM autorisations requises pour le catalogue AWS Glue et l'avoir enregistré 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 multicompte dans AWS Glue, consultez la section Octroi d'un accès multicompte dans le guide du AWS Glue 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 :

Considérations et restrictions

Actuellement, l'accès au AWS Glue catalogue entre comptes Athena présente les limites suivantes :

  • Cette fonctionnalité n'est disponible que Régions AWS lorsque 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 sur 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. AWS Glue Data Catalog

  • Actuellement, les instructions CREATE VIEW qui comprennent un catalogue AWS Glue inter-comptes ne sont pas prises en charge.

  • Les catalogues chiffrés à l'aide de clés AWS gérées ne peuvent pas être consultés sur plusieurs comptes. 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 les clés AWS gérées, consultez la section Clés et AWS clés client dans le guide du AWS Key Management Service développeur.

Mise en route

Dans le scénario suivant, le compte « emprunteur » (666666666666) souhaite exécuter une SELECT requête faisant référence au AWS Glue catalogue appartenant au compte « propriétaire » (99999999999999), 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 aux AWS Glue ressources du compte propriétaire, 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éer un rôle d'emprunteur avec une politique d'accès aux ressources du AWS Glue propriétaire

Pour créer un rôle de compte emprunteur avec une politique d'accès aux AWS Glue ressources du compte propriétaire, vous pouvez utiliser la console AWS Identity and Access Management (IAM) 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 aux ressources du AWS Glue compte propriétaire
  1. Connectez-vous à la IAM console depuis le compte https://console.aws.amazon.com/iam/de l'emprunteur.

  2. Dans le panneau de navigation, développez Gestion des accès, puis choisissez Politiques.

  3. Choisissez Create Policy (Créer une politique).

  4. Pour l'éditeur de politiques, sélectionnez JSON.

  5. 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" ] } ] }
  6. Choisissez Suivant.

  7. Sur la page Réviser et créer, dans Nom de la politique, entrez le nom de la stratégie (par exemple,CrossGluePolicyForBorrowerRole).

  8. Choisissez Create Policy (Créer une politique).

  9. Dans le panneau de navigation, choisissez Roles (Rôles).

  10. Sélectionnez Create role (Créer un rôle).

  11. Sur la page Sélectionner une entité de confiance, choisissez Compte AWS, puis cliquez sur Suivant.

  12. 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).

  13. Cochez la case à côté du nom de la politique, puis choisissez Next.

  14. 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).

  15. Sélectionnez Créer un rôle.

Étape 1b : créer une politique du propriétaire pour accorder AWS Glue l'accès à l'emprunteur

Pour accorder l' AWS Glue accès depuis le compte propriétaire (999999999999) au rôle de l'emprunteur, vous pouvez utiliser la console ou l'opération. AWS Glue AWS Glue PutResourcePolicyAPI La procédure suivante utilise la AWS Glue console.

Pour autoriser le propriétaire à AWS Glue accéder au compte de l'emprunteur
  1. Connectez-vous à la AWS Glue console https://console.aws.amazon.com/glue/depuis le compte du propriétaire.

  2. Dans le panneau de navigation, développez Catalogue de données, puis choisissez Paramètres du catalogue.

  3. Dans Autorisations, saisissez une politique telle que la suivante. Pourrolename, 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 le 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 compte qui appartient au propriétaire

La procédure suivante vous montre comment utiliser la console Athena pour configurer le AWS Glue Data Catalog dans le compte Amazon Web Services 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 compte AWS Glue Data Catalog appartenant à un autre compte
  1. Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/.

  2. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.

    Choisissez le menu d'expansion.
  3. Développez Administration, puis choisissez Sources de données.

  4. Dans le coin supérieur droit, choisissez Create data source (Créer une source de données).

  5. Sur la page Choisir une source de données, pour Sources de données, sélectionnez S3 - AWS Glue Data Catalog, puis Next.

  6. Sur la page Enter data source details (Saisir les détails de la source de données), dans la section AWS Glue Data Catalog, pour Choisir un AWS Glue Data Catalog, choisissez AWS Glue Data Catalog dans un autre compte.

  7. 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.

  8. (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.

  9. Choisissez Suivant.

  10. 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é.

  11. Choisissez Sources de données et catalogues. 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).

  12. Pour afficher ou modifier les informations relatives au catalogue de données, choisissez le catalogue, puis choisissez Actions, Edit (Modifier).

  13. 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 ducatalog. database. tablesyntaxe, 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 souhaitez peut-être effectuer rapidement des tests sur un catalogue AWS Glue inter-comptes sans passer par l'étape préalable de l'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:<arn> « », où se <arn> trouve AWS Glue Data Catalog ARNcelui que vous souhaitez utiliser. Dans l'exemple, Athena utilise cette syntaxe pour pointer dynamiquement vers le catalogue de AWS Glue données du compte 999999999999 comme si vous aviez créé un objet distinct pour ce compte. DataCatalog

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