Kontoübergreifender Zugriff auf AWS Glue-Datenkataloge konfigurieren
Sie können das kontoübergreifende AWS Glue-Katalogfeature von Athena verwenden, um einen AWS Glue-Katalog von einem anderen Konto als Ihrem eigenen zu registrieren. Nachdem Sie die erforderlichen IAM-Berechtigungen für AWS Glue konfiguriert und den Katalog als Athena-DataCatalog-Ressource registriert haben, können Sie Athena verwenden, um kontoübergreifende Abfragen auszuführen. Informationen zur Verwendung der Athena-Konsole zum Registrieren eines Katalogs von einem anderen Konto finden Sie unter Einen Datenkatalog von einem anderen Konto aus registrieren.
Weitere Informationen zum kontoübergreifenden Zugriff in AWS Glue finden Sie unter Gewähren von kontoübergreifendem Zugriff im Entwicklerhandbuch für AWS Glue.
Bevor Sie beginnen
Da dieses Feature vorhandene Athena-DataCatalog-Ressourcen-APIs und -Funktionen verwendet, um den kontoübergreifenden Zugriff zu ermöglichen, empfehlen wir Ihnen, die folgenden Ressourcen zu lesen, bevor Sie beginnen:
-
Verbinden zu Datenquellen – Enthält Themen zur Verwendung von Athena mit AWS Glue, Hive- oder Lambda-Datenkatalogquellen.
-
Datenkatalog-Beispielrichtlinien – Zeigt, wie Richtlinien geschrieben werden, die den Zugriff auf Datenkataloge steuern.
-
AWS CLI mit Hive-Metastores verwenden – Zeigt die Verwendung von AWS CLI mit Hive-Metastores, enthält jedoch Anwendungsfälle, die auf andere Datenquellen anwendbar sind.
Überlegungen und Einschränkungen
Derzeit gelten für den Athena-übergreifenden Zugriff auf den Katalog AWS Glue die folgenden Einschränkungen:
-
Das Feature ist nur in AWS-Regionen verfügbar, in der die Athena-Engine-Version 2 oder höher unterstützt wird. Weitere Informationen über Athena-Engine-Versionen finden Sie unter Athena-Engine-Versionierung. Informationen zum Aktualisieren der Engine-Version für eine Arbeitsgruppe finden Sie unter Athena-Engine-Versionen ändern.
-
Wenn Sie das AWS Glue Data Catalog eines anderen Kontos in Ihrem Konto registrieren, erstellen Sie eine regionale
DataCatalog-Ressource, die nur mit den Daten des anderen Kontos in dieser bestimmten Region verknüpft ist. -
Derzeit werden
CREATE VIEW-Anweisungen, die einen kontoübergreifenden AWS Glue-Katalog enthalten, nicht unterstützt. -
Kataloge verschlüsselt mithilfe von AWS verwalteten Schlüsseln können nicht kontenübergreifend abgefragt werden. Für Kataloge, die Sie kontenübergreifend abfragen möchten, verwenden Sie stattdessen vom Kunden verwaltete Schlüssel (
KMS_CMK). Informationen über Unterschiede zwischen kundenverwaltete und von AWS verwaltete Schlüssel finden Sie unter Kundenverwaltete Schlüssel und AWS-Schlüssel im AWS Key Management ServiceEntwicklerhandbuch.
Erste Schritte
Im folgenden Szenario möchte das Konto „Empfänger“ (666666666666) eine SELECT-Abfrage ausführen, die sich auf den AWS Glue-Katalog bezieht, der zum Konto „Besitzer“ (999999999999) gehört, wie im folgenden Beispiel:
SELECT * FROM ownerCatalog.tpch1000.customer
Im folgenden Verfahren zeigen die Schritte 1a und 1b, wie Sie dem Empfängerkonto Zugriff auf die AWS Glue-Ressourcen des Benutzerkontos sowohl aus der Perspektive des Besitzers als auch aus der Perspektive des Empfängers gewähren. Das Beispiel gewährt Zugriff auf die Datenbank tpch1000 und die Tabelle customer. Ändern Sie diese Beispielnamen entsprechend Ihren Anforderungen.
Schritt 1b: Erstellen einer Empfängerrolle mit einer Richtlinie für den Zugriff auf die AWS Glue-Ressourcen des Eigentümers
Um die Rolle des Empfängerkontos mit einer Richtlinie für den Zugriff auf die AWS Glue-Ressourcen des Eigentümerkontos zu erstellen, können Sie die AWS Identity and Access Management (IAM)-Konsole oder die IAM-API verwenden. Die folgenden Verfahren verwenden die IAM-Konsole.
Um eine Empfängerrolle und eine Richtlinie für den Zugriff auf die AWS Glue-Ressourcen des Besitzerkontos zu erstellen
-
Melden Sie sich bei der IAM-Konsole unter https://console.aws.amazon.com/iam/
vom Empfängerkonto aus an. -
Erweitern Sie im Navigationsbereich die Option Zugriffsverwaltung, und wählen Sie dann Richtlinien aus.
-
Wählen Sie Richtlinie erstellen aus.
-
Wählen Sie für Richtlinien-Editor die Option JSON aus.
-
Geben Sie im Richtlinieneditor die folgende Richtlinie ein und ändern Sie sie dann entsprechend Ihren Anforderungen:
-
Wählen Sie Weiter aus.
-
Auf der Seite Überprüfen und erstellen, für Name der Richtlinie, geben Sie einen Namen für die Richtlinien ein (z.B.
CrossGluePolicyForBorrowerRole). -
Wählen Sie Richtlinie erstellen aus.
-
Wählen Sie im Navigationsbereich Rollen aus.
-
Wählen Sie Create role (Rolle erstellen) aus.
-
Wählen Sie auf der Seite Vertrauenswürdige Entität auswählen AWS-Konto und dann wählen Sie Weiter.
-
Geben Sie auf der Seite Berechtigungen hinzufügen den Namen der Richtlinie, die Sie erstellt haben, in das Suchfeld ein (z.B.
CrossGluePolicyForBorrowerRole). -
Aktivieren Sie das Kontrollkästchen neben der Richtlinie und wählen Sie anschließend Weiter aus.
-
Geben Sie auf der Seite Name, review, and create (Benennen, überprüfen und erstellen) für Role name (Rollenname) einen Namen für die Rolle ein (z. B.
CrossGlueBorrowerRole). -
Wählen Sie Rolle erstellen aus.
Schritt 1b: Erstellen Sie eine Besitzerrichtlinie, um dem Empfänger AWS Glue-Zugriff zu gewähren
Um AWS Glue vom Eigentümerkonto (999999999999) aus Zugriff auf die Rolle des Empfängers zu gewähren, können Sie die AWS Glue-Konsole oder die API-Operation AWS Glue-PutResourcePolicy verwenden. Das folgende Verfahren verwendet die AWS Glue-Konsole.
So erteilen Sie dem Besitzer AWS Glue-Zugriff auf das Empfängerkonto
-
Melden Sie sich bei der AWS Glue-Konsole unter https://console.aws.amazon.com/glue/
vom Besitzerkonto aus an. -
Erweitern Sie im Navigationsbereich den Eintrag Data Catalog und wählen Sie dann Katalogeinstellungen aus.
-
Geben Sie im Feld Berechtigungen eine Richtlinie wie die folgende ein. Geben Sie als
Rollennamedie Rolle ein, die der Empfänger in Schritt 1a erstellt hat (z.B.CrossGlueBorrowerRole). Wenn Sie den Berechtigungsumfang erweitern möchten, können Sie das Platzhalterzeichen*sowohl für den Datenbank- als auch für den Tabellenressourcentyp verwenden.
Wenn Sie fertig sind, empfehlen wir, die AWS Glue-API zu verwenden, um einige kontoübergreifende Testaufrufe durchzuführen, um zu bestätigen, dass die Berechtigungen wie erwartet konfiguriert sind.
Schritt 2: Der Empfänger registriert den AWS Glue Data Catalog, der zum Eigentümerkonto gehört
Das folgende Verfahren zeigt Ihnen, wie Sie die Athena-Konsole verwenden, um den AWS Glue Data Catalog im Amazon-Web-Services-Besitzerkonto als Datenquelle zu konfigurieren. Informationen zur Verwendung von API-Vorgängen anstelle der Konsole zum Registrieren des Katalogs finden Sie unter (Optional) Verwenden Sie die API zum Registrieren eines Athena-Datenkatalogs, der zum Eigentümerkonto gehört.
Um einen AWS Glue Data Catalog zu registrieren, der zu einem anderen Konto gehört
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.
-
Erweitern Sie Administration und wählen Sie dann Datenquellen aus.
-
Wählen Sie oben rechts Create data source (Datenquelle erstellen) aus.
-
Wählen Sie auf der Seite Wählen Sie eine Datenquelle für Datenquellen die Option S3 – AWS Glue Data Catalog und wählen Sie dann Weiter.
-
Wählen Sie auf der Seite Enter data source details (Details zur Datenquelle eingeben) im Abschnitt AWS Glue Data Catalog für Choose anAWS Glue Data Catalog (auswählen) die Option AWS Glue Data Catalog in another account (in einem anderen Konto) aus.
-
Geben Sie für Data source details (Datenquellen-Details) die folgenden Informationen ein:
-
Data source name (Datenquellenname) – Geben Sie den Namen ein, den Sie in Ihren SQL-Abfragen verwenden möchten, um auf den Datenkatalog im anderen Konto zu verweisen.
-
Beschreibung – (Optional) Geben Sie eine Beschreibung des Datenkatalogs im anderen Konto ein.
-
Katalog-ID – Geben Sie die 12-stellige Amazon-Web-Services-Konto-ID des Kontos ein, zu dem der Datenkatalog gehört. Die Amazon-Web-Services-Konto-ID ist die Katalog-ID.
-
-
(Optional) Erweitern Sie Tags und geben Sie Schlüssel-Wert-Paare ein, die Sie mit der Datenquelle verknüpfen möchten. Weitere Informationen zu Tags (Markierungen) erhalten Sie unter Athena-Ressourcen markieren.
-
Wählen Sie Weiter aus.
-
Überprüfen Sie auf der Seite Review and create (Überprüfen und erstellen) die von Ihnen bereitgestellten Informationen, und wählen Sie dann Create data source (Datenquelle erstellen) aus. Die Seite Data source details (Datenquellen-Details) listet die Datenbanken und Tags für den von Ihnen registrierten Datenkatalog auf.
-
Wählen Sie Datenquellen und Kataloge aus. Der von Ihnen registrierte Datenkatalog wird in der Spalte Data source name (Datenquellen-Name) aufgeführt.
-
Um Informationen zum Datenkatalog anzuzeigen oder zu bearbeiten, wählen Sie den Katalog und dann Actions (Aktionen), Edit (Bearbeiten) aus.
-
Um den neuen Datenkatalog zu löschen, wählen Sie den Katalog und dann Actions (Aktionen), Delete (Löschen) aus.
Schritt 3: Der Empfänger sendet eine Abfrage
Der Empfänger sendet eine Abfrage, die den Katalog mit der Syntax catalog.database.table referenziert, wie im folgenden Beispiel:
SELECT * FROM ownerCatalog.tpch1000.customer
Anstatt die vollqualifizierte Syntax zu verwenden, kann der Empfänger den Katalog auch kontextbezogen angeben, indem er ihn über den QueryExecutionContext übergeben.
(Optional) Zusätzliche Amazon-S3-Berechtigungen konfigurieren
-
Wenn das Empfängerkonto eine Athena-Abfrage verwendet, um neue Daten in eine Tabelle im Besitzerkonto zu schreiben, hat der Besitzer nicht automatisch Zugriff auf diese Daten in Amazon S3, obwohl die Tabelle im Konto des Eigentümers vorhanden ist. Dies liegt daran, dass der Empfänger der Objekteigentümer der Informationen in Amazon S3 ist, sofern nicht anders konfiguriert. Um dem Besitzer Zugriff auf die Daten zu gewähren, legen Sie die Berechtigungen für die Objekte entsprechend als zusätzlichen Schritt fest.
-
Bestimmte kontoübergreifende DDL-Vorgänge wie MSCK REPAIR TABLE erfordern Amazon-S3-Berechtigungen. Wenn beispielsweise das Empfängerkonto eine kontoübergreifende
MSCK REPAIR-Operation für eine Tabelle im Konto des Eigentümers durchführt, deren Daten sich in einem S3-Bucket des Kontos des Eigentümers befinden, muss dieser Bucket der vom Kreditnehmer übernommenen Rolle Berechtigungen gewähren, damit die Abfrage erfolgreich ist .
Informationen zum Erteilen von Bucket-Berechtigungen finden Sie unter Wie lege ich ACL-Bucket-Berechtigungen fest? im Benutzerhandbuch für Amazon Simple Storage Service.
(Optional) Einen Katalog dynamisch verwenden
In einigen Fällen möchten Sie möglicherweise schnell einen kontoübergreifenden AWS Glue-Katalog testen, ohne ihn registrieren zu müssen. Sie können kontoübergreifende Abfragen dynamisch ausführen, ohne das Ressourcenobjekt DataCatalog zu erstellen, wenn die erforderlichen IAM- und Amazon-S3-Berechtigungen wie zuvor in diesem Dokument beschrieben korrekt konfiguriert sind.
Verwenden Sie die Syntax im folgenden Beispiel, um explizit auf einen Katalog ohne Registrierung zu verweisen:
SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer
Verwenden Sie das Format „glue:“, wobei <arn> der AWS Glue Data Catalog-ARN ist, den Sie verwenden möchten. Im Beispiel verwendet Athena diese Syntax, um dynamisch auf den AWS Glue-Datenkatalog des Kontos 999999999999 zu verweisen, als ob Sie separat ein <arn>DataCatalog-Objekt dafür erstellt hätten.
Hinweise zur Verwendung dynamischer Kataloge
Beachten Sie beim Verwenden von dynamischen Katalogen die folgenden Punkte.
-
Die Verwendung eines dynamischen Katalogs erfordert die IAM-Berechtigungen, die Sie normalerweise für Athena-Datenkatalog-API-Vorgänge verwenden. Der Hauptunterschied besteht darin, dass der Name der Datenkatalog-Ressource der
glue:*-Namenskonvention folgt. -
Der Katalog-ARN muss zu derselben Region gehören, in der die Abfrage ausgeführt wird.
-
Wenn Sie einen dynamischen Katalog in einer DML-Abfrage oder -Ansicht verwenden, umgeben Sie ihn mit Escapezeichen in doppelten Anführungszeichen (
\"). Wenn Sie einen dynamischen Katalog in einer DDL-Abfrage verwenden, umgeben Sie ihn mit Backtick-Zeichen (`).
(Optional) Verwenden Sie die API zum Registrieren eines Athena-Datenkatalogs, der zum Eigentümerkonto gehört
Anstatt die Athena-Konsole wie in Schritt 2 beschrieben zu verwenden, ist es möglich, API-Vorgänge zu verwenden, um den Datenkatalog zu registrieren, der zum Eigentümerkonto gehört.
Der Ersteller der Athena-DataCatalog-Ressource muss über die erforderlichen Berechtigungen zum Ausführen des Athena-CreateDataCatalog-API-Vorgangs verfügen. Abhängig von Ihren Anforderungen kann der Zugriff auf zusätzliche API-Vorgänge erforderlich sein. Weitere Informationen finden Sie unter Datenkatalog-Beispielrichtlinien.
Der folgende CreateDataCatalog-Anforderungstext registriert einen AWS Glue-Katalog für den kontoübergreifenden Zugriff:
# 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" }
Der folgende Beispielcode verwendet einen Java-Client, um das DataCatalog-Objekt zu erstellen.
# 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);
Nach diesen Schritten sollte der Empfänger ownerCatalog sehen, wenn er den API-Vorgang ListDataCatalogs aufruft.
Weitere Ressourcen
-
Konfigurieren Sie den kontoübergreifenden Zugriff auf eine gemeinsame AWS Glue Data Catalog mit Amazon Athena in der Anleitung für Muster in der AWS Prescriptive Guidance.
-
Kontenübergreifende AWS Glue Data Catalog-Abfragen mit Amazon Athena
im AWS-Big-Data-Blog -
Gewähren von kontenübergreifendem Zugriff im AWS Glue-Entwicklerhandbuch