Kontenübergreifenden Zugriff auf AWS Glue Datenkataloge konfigurieren - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Kontenübergreifenden Zugriff auf AWS Glue Datenkataloge konfigurieren

Sie können die kontoübergreifende AWS Glue Katalogfunktion von Athena verwenden, um einen Katalog von einem AWS Glue anderen Konto als Ihrem eigenen aus zu registrieren. Nachdem Sie die erforderlichen IAM Berechtigungen für den Katalog konfiguriert AWS Glue und ihn als DataCatalogAthena-Ressource registriert haben, können Sie Athena verwenden, um kontenü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 finden Sie unter Gewähren von kontenübergreifendem Zugriff im AWS Glue Entwicklerhandbuch.AWS Glue

Bevor Sie beginnen

Da diese Funktion vorhandene DataCatalog Ressourcen APIs und Funktionen von Athena verwendet, um den kontoübergreifenden Zugriff zu ermöglichen, empfehlen wir Ihnen, die folgenden Ressourcen zu lesen, bevor Sie beginnen:

Überlegungen und Einschränkungen

Derzeit gelten für den kontoübergreifenden Zugriff auf den AWS Glue Athena-Katalog die folgenden Einschränkungen:

  • Die Funktion ist nur verfügbar, AWS-Regionen wenn 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 ein anderes Konto AWS Glue Data Catalog 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, die mit AWS verwalteten Schlüsseln verschlüsselt wurden, können nicht kontenübergreifend abgefragt werden. Verwenden Sie für Kataloge, die Sie kontenübergreifend abfragen möchten, stattdessen vom Kunden verwaltete Schlüssel (). KMS_CMK Informationen zu den Unterschieden zwischen vom Kunden verwalteten Schlüsseln und AWS verwalteten Schlüsseln finden Sie im AWS Key Management Service Entwicklerhandbuch unter AWS Kundenschlüssel und Schlüssel.

Erste Schritte

Im folgenden Szenario möchte das Konto „Kreditnehmer“ (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 wird in den Schritten 1a und 1b gezeigt, wie dem Kreditnehmerkonto sowohl vom Kreditnehmer als auch vom Eigentümer aus Zugriff auf die Ressourcen des Eigentümerkontos gewährt wird. AWS Glue Das Beispiel gewährt Zugriff auf die Datenbank tpch1000 und die Tabelle customer. Ändern Sie diese Beispielnamen entsprechend Ihren Anforderungen.

Schritt 1a: Erstellen Sie eine Kreditnehmerrolle mit einer Richtlinie für den Zugriff auf die Ressourcen des Eigentümers AWS Glue

Um eine Rolle für ein Kreditnehmerkonto mit einer Richtlinie für den Zugriff auf die AWS Glue Ressourcen des Eigentümerkontos zu erstellen, können Sie die Konsole AWS Identity and Access Management (IAM) oder die verwenden. IAMAPI Die folgenden Verfahren verwenden die IAM Konsole.

Um eine Kreditnehmerrolle und eine Richtlinie für den Zugriff auf die Ressourcen des Eigentümerkontos AWS Glue zu erstellen
  1. Melden Sie sich über das Kreditnehmerkonto unter https://console.aws.amazon.com/iam/bei der IAM Konsole an.

  2. Erweitern Sie im Navigationsbereich die Option Zugriffsverwaltung, und wählen Sie dann Richtlinien aus.

  3. Wählen Sie Create Policy (Richtlinie erstellen) aus.

  4. Wählen Sie für den Policy-Editor die Option JSON.

  5. Geben Sie im Richtlinieneditor die folgende Richtlinie ein und ändern Sie sie dann entsprechend Ihren Anforderungen:

    { "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. Wählen Sie Weiter.

  7. Geben Sie auf der Seite Überprüfen und erstellen unter Richtlinienname einen Namen für die Richtlinie ein (z. B.CrossGluePolicyForBorrowerRole).

  8. Wählen Sie Create Policy (Richtlinie erstellen) aus.

  9. Wählen Sie im Navigationsbereich Rollen aus.

  10. Wählen Sie Rolle erstellen aus.

  11. Wählen Sie auf der Seite Vertrauenswürdige Entität auswählen AWS-Kontodie Option und anschließend Weiter aus.

  12. Geben Sie auf der Seite „Berechtigungen hinzufügen“ den Namen der Richtlinie, die Sie erstellt haben, in das Suchfeld ein (z. B.CrossGluePolicyForBorrowerRole).

  13. Aktivieren Sie das Kontrollkästchen neben dem Richtliniennamen und wählen Sie dann Weiter aus.

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

  15. Wählen Sie Rolle erstellen.

Schritt 1b: Erstellen Sie eine Eigentümerrichtlinie, um dem Kreditnehmer AWS Glue Zugriff zu gewähren

Um vom Besitzerkonto (999999999999) aus AWS Glue Zugriff auf die Rolle des Kreditnehmers zu gewähren, können Sie die Konsole oder den Vorgang verwenden. AWS Glue AWS Glue PutResourcePolicyAPI Das folgende Verfahren verwendet die Konsole. AWS Glue

Um dem Eigentümer AWS Glue Zugriff auf das Kreditnehmerkonto zu gewähren
  1. Melden Sie sich über das Besitzerkonto https://console.aws.amazon.com/glue/bei der AWS Glue Konsole an.

  2. Erweitern Sie im Navigationsbereich den Eintrag Data Catalog und wählen Sie dann Katalogeinstellungen aus.

  3. Geben Sie im Feld Berechtigungen eine Richtlinie wie die folgende ein. Geben Sie für rolename die Rolle ein, die der Kreditnehmer 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.

    { "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" ] } ] }

Wenn Sie fertig sind, empfehlen wir Ihnen, die zu verwenden, AWS Glue APIum einige kontoübergreifende Testanrufe zu tätigen, um zu überprüfen, ob die Berechtigungen erwartungsgemäß konfiguriert sind.

Schritt 2: Der Kreditnehmer registriert AWS Glue Data Catalog das, was zum Besitzerkonto 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. Hinweise zur Verwendung von API Operationen anstelle der Konsole zur Registrierung des Katalogs finden Sie unter(Optional) Verwenden Sie dieAPI, um einen Athena-Datenkatalog zu registrieren, der zum Besitzerkonto gehört.

So registrieren Sie ein Konto, das zu einem anderen Konto AWS Glue Data Catalog gehört
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.

    Wählen Sie das Erweiterungsmenü aus.
  3. Erweitern Sie Administration und wählen Sie dann Datenquellen aus.

  4. Wählen Sie oben rechts Create data source (Datenquelle erstellen) aus.

  5. Wählen Sie auf der Seite Datenquelle auswählen für Datenquellen die Option S3 - AWS Glue Data Catalog und wählen Sie dann Weiter aus.

  6. Wählen Sie auf der Seite Enter data source details (Details zur Datenquelle eingeben) im Abschnitt AWS Glue Data Catalog für Choose an AWS Glue Data Catalog (auswählen) die Option AWS Glue Data Catalog in another account (in einem anderen Konto) aus.

  7. Geben Sie für Data source details (Datenquellen-Details) die folgenden Informationen ein:

    • Name der Datenquelle — 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.

  8. (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 erhalten Sie unter Schlagwort: Athena resources.

  9. Wählen Sie Weiter.

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

  11. Wählen Sie Datenquellen und Kataloge aus. Der von Ihnen registrierte Datenkatalog wird in der Spalte Data source name (Datenquellen-Name) aufgeführt.

  12. Um Informationen zum Datenkatalog anzuzeigen oder zu bearbeiten, wählen Sie den Katalog und dann Actions (Aktionen), Edit (Bearbeiten) aus.

  13. 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 Kreditnehmer sendet mithilfe von eine Abfrage, die auf den Katalog verweist. catalog database. tableSyntax, wie im folgenden Beispiel:

SELECT * FROM ownerCatalog.tpch1000.customer

Anstatt die vollqualifizierte Syntax zu verwenden, kann der Kreditnehmer den Katalog auch kontextbezogen angeben, indem er ihn über die weitergibt. QueryExecutionContext

(Optional) Zusätzliche Amazon S3 S3-Berechtigungen konfigurieren

  • Wenn das Kreditnehmerkonto eine Athena-Abfrage verwendet, um neue Daten in eine Tabelle im Besitzerkonto zu schreiben, hat der Eigentümer nicht automatisch Zugriff auf diese Daten in Amazon S3, obwohl die Tabelle im Konto des Eigentümers vorhanden ist. Dies liegt daran, dass der Kreditnehmer der Objekteigentümer der Informationen in Amazon S3 ist, sofern nicht anders konfiguriert. Um dem Eigentümer Zugriff auf die Daten zu gewähren, müssen Sie in einem zusätzlichen Schritt die Berechtigungen für die Objekte entsprechend festlegen.

  • Bestimmte kontoübergreifende DDL Operationen MSCK REPAIR TABLE erfordern beispielsweise Amazon S3 S3-Berechtigungen. Wenn das Kreditnehmerkonto beispielsweise eine kontoübergreifende MSCK REPAIR Operation mit einer Tabelle im Eigentümerkonto durchführt, deren Daten sich in einem S3-Bucket für das Besitzerkonto befinden, muss dieser Bucket der vom Kreditnehmer übernommenen Rolle Berechtigungen gewähren, damit die Abfrage erfolgreich ist.

Informationen zur Gewährung von Bucket-Berechtigungen finden Sie unter Wie lege ich Bucket-Berechtigungen fest ACL? im Amazon Simple Storage Service-Benutzerhandbuch.

(Optional) Verwenden Sie einen Katalog dynamisch

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 durchführen, ohne das DataCatalog Ressourcenobjekt zu erstellen, wenn die erforderlichen IAM und Amazon S3 S3-Berechtigungen korrekt konfiguriert sind, wie weiter oben in diesem Dokument beschrieben.

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:<arn>„, in dem sich das Format <arn> befindet AWS Glue Data Catalog ARN, das Sie verwenden möchten. In diesem Beispiel verwendet Athena diese Syntax, um dynamisch auf den AWS Glue Datenkatalog des Kontos 999999999999 zu verweisen, als ob Sie ein separates Objekt dafür erstellt hätten. DataCatalog

Hinweise zur Verwendung dynamischer Kataloge

Beachten Sie beim Verwenden von dynamischen Katalogen die folgenden Punkte.

  • Für die Verwendung eines dynamischen Katalogs sind die IAM Berechtigungen erforderlich, die Sie normalerweise für API Athena-Datenkatalogvorgä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, setzen Sie ihn in doppelte Anführungszeichen (\"). Wenn Sie einen dynamischen Katalog in einer DDL Abfrage verwenden, umgeben Sie ihn mit Backtick-Zeichen (`).

(Optional) Verwenden Sie dieAPI, um einen Athena-Datenkatalog zu registrieren, der zum Besitzerkonto gehört

Anstatt die Athena-Konsole wie in Schritt 2 beschrieben zu verwenden, können Sie API Operationen verwenden, um den Datenkatalog zu registrieren, der zum Besitzerkonto gehört.

Der Ersteller der DataCatalogAthena-Ressource muss über die erforderlichen Berechtigungen verfügen, um den Athena-Vorgang CreateDataCatalogAPIauszuführen. Je nach Ihren Anforderungen kann der Zugriff auf zusätzliche API Operationen 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 Kreditnehmer sehen, ownerCatalog wann er den ListDataCatalogsAPIVorgang aufruft.

Weitere Ressourcen