Arbeiten mit AWS Glue Data Catalog-Ansichten in AWS Glue - AWS Glue

Arbeiten mit AWS Glue Data Catalog-Ansichten in AWS Glue

Sie können Ansichten in AWS Glue Data Catalog erstellen und verwalten, allgemein als AWS Glue Data Catalog-Ansichten bezeichnet. Diese Ansichten sind nützlich, weil sie mehrere SQL-Abfrage-Engines unterstützen, sodass Sie über verschiedene AWS-Services hinweg auf dieselbe Ansicht zugreifen können, z. B. Amazon Athena, Amazon Redshift und AWS Glue. Sie können Ansichten verwenden, die auf Apache Iceberg, Apache Hudi und Delta Lake basieren.

Indem Sie eine Ansicht im Datenkatalog erstellen, können Sie mithilfe von Ressourcenzuweisungen und Tag-basierten Zugriffskontrollen in AWS Lake Formation Zugriff darauf gewähren. Mit dieser Methode der Zugriffskontrolle müssen Sie keinen zusätzlichen Zugriff auf die Tabellen konfigurieren, auf die beim Erstellen der Ansicht verwiesen wird. Diese Methode zum Gewähren von Berechtigungen wird als Definer-Semantik bezeichnet, und diese Ansichten werden als Definer-Ansichten bezeichnet. Weitere Informationen zur Zugriffskontrolle in AWS Lake Formation finden Sie unter Gewähren und Widerrufen von Berechtigungen für Data-Catalog-Ressourcen im AWS Lake Formation-Entwicklerhandbuch.

Data-Catalog-Ansichten sind in folgenden Anwendungsfällen nützlich:

  • Präzisere Zugriffskontrolle – Sie können eine Ansicht erstellen, die den Datenzugriff auf der Grundlage der vom Benutzer benötigten Berechtigungen einschränkt. Mithilfe von Ansichten im Datenkatalog können Sie beispielsweise verhindern, dass Mitarbeiter, die nicht in der Personalabteilung arbeiten, persönlich identifizierbare Informationen (PII) sehen.

  • Vollständige Ansichtsdefinition – Durch das Anwenden von Filtern auf Ihre Ansicht im Datenkatalog stellen Sie sicher, dass die in der Ansicht verfügbaren Datensätze immer vollständig sind.

  • Verbesserte Sicherheit – Die zum Erstellen der Ansicht verwendete Abfragedefinition muss vollständig sein, sodass Data-Catalog-Ansichten weniger anfällig für SQL-Befehle von böswilligen Akteuren sind.

  • Einfache Datenfreigabe – Nutzen Sie die Möglichkeit, Daten mit der kontoübergreifenden Datenfreigabe in AWS Lake Formation für andere AWS-Konten freizugeben, ohne Daten verschieben zu müssen.

Erstellen einer Data-Catalog-Ansicht

Sie können Data-Catalog-Ansichten mit den AWS CLI- und AWS Glue-ETL-Skripts mit Spark SQL erstellen. Die Syntax für die Erstellung einer Data-Catalog-Ansicht beinhaltet die Angabe des Ansichtstyps als MULTI DIALECT und des SECURITY Prädikats als DEFINER, wodurch eine Definer-Ansicht angegeben wird.

Beispiel für eine SQL-Anweisung zum Erstellen einer Data-Catalog-Ansicht:

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;

Nachdem Sie eine Data-Catalog-Ansicht erstellt haben, können Sie eine IAM-Rolle mit der AWS Lake Formation-SELECT-Berechtigung für die Ansicht verwenden, um sie über Services wie Amazon Athena, Amazon Redshift oder AWS Glue-ETL-Aufträge abzufragen. Sie müssen keinen Zugriff auf die zugrunde liegenden Tabellen gewähren, auf die in der Ansicht verwiesen wird.

Weitere Informationen zum Erstellen und Konfigurieren von Data-Catalog-Ansichten finden Sie unter Erstellen von AWS Glue-Data-Catalog-Ansichten im AWS Lake Formation-Entwicklerhandbuch.

Unterstützte Ansichtsvorgänge

Die folgenden Befehlsfragmente zeigen Ihnen verschiedene Möglichkeiten, mit Data-Catalog-Ansichten zu arbeiten:

CREATE VIEW

Erstellt eine Data-Catalog-Ansicht. Dies ist ein Beispiel für das Erstellen einer Ansicht aus einer vorhandenen Tabelle:

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

ALTER VIEW

Verfügbare Syntax:

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

Sie können die Option FORCE ADD DIALECT verwenden, um das Aktualisieren des Schemas und der Unterobjekte gemäß dem neuen Engine-Dialekt zu erzwingen. Beachten Sie, dass dies zu Abfragefehlern führen kann, wenn Sie nicht auch FORCE verwenden, um andere Engine-Dialekte zu aktualisieren. Hier ein Beispiel:

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

Unten wird gezeigt, wie Sie eine Ansicht ändern, um den Dialekt zu aktualisieren:

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

DESCRIBE VIEW

Verfügbare Syntax für die Beschreibung einer Ansicht:

SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name] – Wenn der Benutzer über die erforderlichen AWS Glue- und AWS Lake Formation-Berechtigungen zur Beschreibung der Ansicht verfügt, kann er die Spalten auflisten. Unten sehen Sie einige Beispielbefehle zum Anzeigen von Spalten:

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

DESCRIBE view_name – Wenn der Benutzer über die erforderlichen AWS Glue- und AWS Lake Formation-Berechtigungen zur Beschreibung der Ansicht verfügt, kann er die Spalten in der Ansicht zusammen mit ihren Metadaten auflisten.

DROP VIEW

Verfügbare Syntax:

DROP VIEW [ IF EXISTS ] view_name

Das folgende Beispiel zeigt eine DROP-Anweisung, die testet, ob eine Ansicht vorhanden ist, bevor sie gelöscht wird:

DROP VIEW IF EXISTS catalog_view;

SHOW CREATE VIEW view_name – Zeigt die SQL-Anweisung an, die die angegebene Ansicht erstellt. Dies ist ein Beispiel für das Erstellen einer Data-Catalog-Ansicht:

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

Listet alle Ansichten im Katalog auf, z. B. reguläre Ansichten, Ansichten mit mehreren Dialekten (Multi-Dialect Views, MDV) und MDV ohne Spark-Dialekt. Die verfügbare Syntax lautet wie folgt:

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

Im Folgenden finden Sie einen Beispielbefehl zum Anzeigen von Ansichten:

SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';

Weitere Informationen zum Erstellen und Konfigurieren von Data-Catalog-Ansichten finden Sie unter Erstellen von AWS Glue-Data-Catalog-Ansichten im AWS Lake Formation-Entwicklerhandbuch.

Abfrage einer Data-Catalog-Ansicht

Nachdem Sie eine Data-Catalog-Ansicht erstellt haben, können Sie die Ansicht abfragen. Die in Ihren AWS Glue-Aufträgen konfigurierte IAM-Rolle muss über die Lake-Formation-SELECT-Berechtigung in der Data-Catalog-Ansicht verfügen. Sie müssen keinen Zugriff auf die zugrunde liegenden Tabellen gewähren, auf die in der Ansicht verwiesen wird.

Sobald Sie alles eingerichtet haben, können Sie Ihre Ansicht abfragen. Sie können beispielsweise folgende Abfrage ausführen, um auf eine Ansicht zuzugreifen.

SELECT * from my_database.catalog_view LIMIT 10;

Einschränkungen

Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie Data-Catalog-Ansichten verwenden.

  • Sie können Data-Catalog-Ansichten nur mit AWS Glue Version 5.0 und höher erstellen.

  • Der Data-Catalog-Ansicht-Definer muss SELECT-Zugriff auf die zugrunde liegenden Basistabellen haben, auf die in der Ansicht zugegriffen wird. Das Erstellen der Data-Catalog-Ansicht schlägt fehl, wenn einer bestimmten Basistabelle Lake-Formation-Filter zugewiesen wurden, die der Definier-Rolle zugewiesen wurden.

  • Basistabellen dürfen nicht über die IAMAllowedPrincipals-Data-Lake-Berechtigung in AWS Lake Formation verfügen. Falls vorhanden, tritt ein Fehler auf. Dieser besagt, dass Ansichten mit mehreren Dialekten nur auf Tabellen ohne IamAllowedPrincipals-Berechtigungen verweisen dürfen.

  • Der Amazon-S3-Speicherort der Tabelle muss als AWS Lake Formation-Data-Lake-Speicherort registriert sein. Wenn die Tabelle nicht registriert ist, tritt der Fehler Multi Dialect views may only reference AWS Lake Formation managed tables auf. Informationen zur Registrierung von Amazon-S3-Speicherorten in AWS Lake Formation finden Sie unter Registrierung eines Amazon-S3-Speicherorts im AWS Lake Formation-Entwicklerhandbuch.

  • Sie können nur PROTECTED-Data-Catalog-Ansichten erstellen. UNPROTECTED-Ansichten werden nicht unterstützt.

  • Sie können in einer Data-Catalog-Ansichtsdefinition nicht auf Tabellen in einem anderen AWS-Konto verweisen. Sie können auch nicht auf eine Tabelle in demselben Konto verweisen, das sich in einer separaten Region befindet.

  • Um Daten konto- oder regionsübergreifend freizugeben, muss die gesamte Ansicht mithilfe von AWS Lake Formation-Ressourcenlinks konto- und regionsübergreifend freigegeben werden.

  • Benutzerdefinierte Funktionen (UDFs) werden nicht unterstützt.

  • In Data-Catalog-Ansichten kann nicht auf andere Ansichten verwiesen werden.