Utilisation avec des vues AWS Glue Data Catalog dans AWS Glue - AWS Glue

Utilisation avec des vues AWS Glue Data Catalog dans AWS Glue

Vous pouvez créer et gérer des vues dans l’AWS Glue Data Catalog, communément appelées vues AWS Glue Data Catalog. Ces vues sont utiles, car elles prennent en charge plusieurs moteurs de requêtes SQL, ce qui vous permet d’accéder à la même vue sur différents services AWS, comme Amazon Athena, Amazon Redshift et AWS Glue. Vous pouvez utiliser des vues basées sur Apache Iceberg, Apache Hudi et Delta Lake.

En créant une vue dans le catalogue de données, vous pouvez utiliser des autorisations de ressources et des contrôles d’accès basés sur des balises dans AWS Lake Formation pour autoriser l’accès à celui-ci. Avec cette méthode de contrôle d’accès, il n’est pas nécessaire de configurer un accès supplémentaire aux tables référencées lors de la création de la vue. Cette méthode d’octroi d’autorisations est appelée sémantique du définisseur, et ces vues sont appelées vues du définisseur. Pour plus d’informations sur le contrôle d’accès dans AWS Lake Formation, consultez Granting and revoking permissions on Data Catalog resources dans le Guide du développeur AWS Lake Formation.

Les vues du catalogue de données sont utiles dans les cas d’utilisation suivants :

  • Contrôle précis des accès : vous pouvez créer une vue qui restreint l’accès aux données en fonction des autorisations dont l’utilisateur a besoin. Par exemple, vous pouvez utiliser des vues du catalogue de données pour empêcher les employés qui ne travaillent pas dans le service des ressources humaines (RH) de voir des données d’identification personnelle (PII).

  • Définition complète de vue : en appliquant des filtres aux vues du catalogue de données, vous vous assurez que les enregistrements de données disponibles dans la vue sont toujours complets.

  • Sécurité renforcée : la définition de requête utilisée pour créer la vue doit être complète, afin que les vues du catalogue de données soient moins vulnérables aux commandes SQL provenant d’acteurs malveillants.

  • Partage de données simplifié : partagez des données avec d’autres comptes AWS sans déplacer de données, grâce au partage de données entre comptes dans AWS Lake Formation.

Création d’un affichage du Catalogue de données

Vous pouvez créer des vues de catalogue de données à l’aide des scripts ETL AWS CLI et AWS Glue avec Spark SQL. La syntaxe permettant de créer une vue du catalogue de données consiste à spécifier le type de vue en tant que MULTI DIALECT et le prédicat SECURITY en tant que DEFINER, en indiquant une vue plus précise.

Exemple d’instruction SQL permettant de créer une vue du catalogue de données :

CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER AS SELECT order_date, sum(totalprice) AS price FROM source_table GROUP BY order_date;

Après avoir créé une vue du catalogue de données, vous pouvez utiliser un rôle IAM doté de l’autorisation AWS Lake Formation `SELECT` sur la vue pour l’interroger à partir de services tels que Amazon Athena, Amazon Redshift ou de tâches ETL AWS Glue. Il n’est pas nécessaire d’accorder l’accès aux tables sous-jacentes référencées dans la vue.

Pour plus d’informations sur la création et la configuration des vues du catalogue de données, consultez Building AWS Glue Data Catalog views dans le Guide du développeur AWS Lake Formation.

Opérations de vue prises en charge

Les fragments de commande suivants vous montrent différentes manières d’utiliser les vues du catalogue de données :

CREATE VIEW

Crée une vue du catalogue de données. Voici un exemple qui montre comment créer une vue à partir d’une table existante :

CREATE PROTECTED MULTI DIALECT VIEW catalog_view SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table

ALTER VIEW

Syntaxe disponible :

ALTER VIEW view_name [FORCE] ADD DIALECT AS query ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query ALTER VIEW view_name DROP DIALECT

Vous pouvez utiliser l’option FORCE ADD DIALECT pour forcer la mise à jour du schéma et des sous-objets conformément au nouveau dialecte du moteur. Notez que cela peut entraîner des erreurs de requête si vous n’utilisez pas également FORCE pour mettre à jour d’autres dialectes du moteur. Voici un exemple :

ALTER VIEW catalog_view FORCE ADD DIALECTAS SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;

Voici comment modifier une vue afin de mettre à jour le dialecte :

ALTER VIEW catalog_view UPDATE DIALECT AS SELECT count(*) FROM my_catalog.my_database.source_table;

DESCRIBE VIEW

Syntaxe disponible pour décrire une vue :

SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name] : si l’utilisateur dispose des autorisations AWS Glue et AWS Lake Formation requises pour décrire la vue, il peut répertorier les colonnes. Voici quelques exemples de commandes permettant d’afficher des colonnes :

SHOW COLUMNS FROM my_database.source_table; SHOW COLUMNS IN my_database.source_table;

DESCRIBE view_name : si l’utilisateur dispose des autorisations AWS Glue et AWS Lake Formation requises pour décrire la vue, il peut répertorier les colonnes dans la vue, ainsi que ses métadonnées.

DROP VIEW

Syntaxe disponible :

DROP VIEW [ IF EXISTS ] view_name

L’exemple suivant montre une instruction DROP qui teste si une vue existe avant de la supprimer :

DROP VIEW IF EXISTS catalog_view;

SHOW CREATE VIEW view_name : affiche l’instruction SQL qui crée la vue spécifiée. Voici un exemple qui montre comment créer une vue du catalogue de données :

SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view ( net_profit, customer_id, item_id, sold_date) TBLPROPERTIES ( 'transient_lastDdlTime' = '1736267222') SECURITY DEFINER AS SELECT * FROM my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)

SHOW VIEWS

Répertoriez toutes les vues du catalogue, comme les vues normales, les vues multidialectes (MDV) et les vues MDV sans le dialecte Spark. La syntaxe disponible est la suivante :

SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:

Voici un exemple de commande permettant d’afficher les vues :

SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';

Pour plus d’informations sur la création et la configuration des vues du catalogue de données, consultez Building AWS Glue Data Catalog views dans le Guide du développeur AWS Lake Formation.

Interrogation d’un affichage du Catalogue de données

Après avoir créé une vue du catalogue de données, vous pouvez l’interroger. Le rôle IAM configuré dans vos tâches AWS Glue doit disposer de l’autorisation Lake Formation SELECT dans la vue du catalogue de données. Il n’est pas nécessaire d’accorder l’accès aux tables sous-jacentes référencées dans la vue.

Une fois que tout est configuré, vous pouvez interroger votre vue. Par exemple, vous pouvez exécuter la requête suivante pour accéder à une vue.

SELECT * from my_database.catalog_view LIMIT 10;

Limites

Tenez compte des restrictions suivantes lorsque vous utilisez les vues du catalogue de données.

  • Vous ne pouvez créer des vues de catalogue de données qu’avec AWS Glue versions 5.0 et ultérieures.

  • Le définisseur de vues du catalogue de données doit disposer de l’accès SELECT aux tables de base sous-jacentes accessibles par la vue. La création de la vue du catalogue de données échoue si des filtres Lake Formation sont imposés au rôle de définisseur d’une table de base spécifique.

  • Les tables de base ne doivent pas disposer de l’autorisation de lac de données IAMAllowedPrincipals dans AWS Lake Formation. Si elle est présente, l’erreur Les vues de dialectes multiples ne peuvent référencer que des tables sans autorisations IAMAllowedPrincipals se produit.

  • L’emplacement Amazon S3 de la table doit être enregistré en tant qu’emplacement de lac de données AWS Lake Formation. Si la table n’est pas enregistrée, l’erreur Multi Dialect views may only reference AWS Lake Formation managed tables se produit. Pour plus d’informations sur la façon d’enregistrer des emplacements Amazon S3 dans AWS Lake Formation, consultez Registering an Amazon S3 location dans le Guide du développeur AWS Lake Formation.

  • Vous pouvez uniquement créer des vues du Catalogue de données PROTECTED. Les vues UNPROTECTED ne sont pas prises en charge.

  • Vous ne pouvez pas référencer les tables d’un autre compte AWS dans une définition de vue du catalogue de données. Vous ne pouvez pas non plus référencer une table dans le même compte situé dans une région distincte.

  • Pour partager des données entre un compte ou une région, l’affichage complet doit être partagé entre les comptes et les régions, à l’aide de liens vers des ressources AWS Lake Formation.

  • Les fonctions définies par l’utilisateur (UDF) ne sont pas prises en charge.

  • Les vues du catalogue de données ne peuvent pas référencer d’autres vues.