Aktivieren von kontoübergreifenden Verbundabfragen - Amazon Athena

Aktivieren von kontoübergreifenden Verbundabfragen

Verbundabfrage ermöglicht es Ihnen, andere Datenquellen als Amazon S3 mithilfe von Datenquellen-Connectors abzufragen, die auf AWS Lambda bereitgestellt sind. Das kontoübergreifende Verbundabfragefeature ermöglicht es, dass sich die Lambda-Funktion und die abzufragenden Datenquellen in verschiedenen Konten befinden.

Anmerkung

Verwenden Sie diese Methode nur, wenn Sie Ihre Verbunddatenquelle nicht bei AWS Glue Data Catalog registriert haben. Wenn Sie Ihre Datenquelle bei AWS Glue Data Catalog registriert haben, verwenden Sie die AWS Glue Data Catalog kontoübergreifende Funktionen und das Berechtigungsmodell. Weitere Informationen finden Sie unter KGewährung von kontoübergreifendem Zugriff im AWS Glue-Benutzerhandbuch.

Als Datenadministrator können Sie kontoübergreifende Verbundabfragen aktivieren, indem Sie Ihren Daten-Connector mit dem Konto eines Datenanalysten freigeben oder als Datenanalyst einen freigegebenen Lambda-ARN von einem Datenadministrator verwenden, um es Ihrem Konto hinzuzufügen. Wenn Konfigurationsänderungen an einem Connector im Ursprungskonto vorgenommen werden, wird die aktualisierte Konfiguration automatisch auf die freigegebenen Instances des Connectors in den Konten anderer Benutzer angewendet.

Überlegungen und Einschränkungen

  • Das kontoübergreifende Verbundabfragefeature ist für Nicht-Hive-Metastore-Daten-Connectors verfügbar, die eine Lambda-basierte Datenquelle verwenden.

  • Das Feature ist nicht verfügbar für den AWS Glue Data Catalog-Datenquellentyp. Weitere Informationen zum kontoübergreifenden Zugriff auf AWS Glue Data Catalog, siehe Kontoübergreifender Zugriff auf AWS Glue-Datenkataloge konfigurieren.

  • Wenn die Antwort der Lambda-Funktion Ihres Konnektors die Beschränkung der Lambda-Antwortgröße von 6 MB überschreitet, verschlüsselt Athena die Antwort automatisch, stapelt sie und spillt sie an einen von Ihnen konfigurierten Amazon-S3-Bucket weiter. Die Entität, die die Athena-Abfrage ausführt, muss Zugriff auf den Spill-Standort haben, damit Athena die übergebenen Daten lesen kann. Wir empfehlen, dass Sie eine Amazon-S3-Lebenszyklusrichtlinie einrichten, um Objekte vom Spill-Speicherort zu löschen, da die Daten nach Abschluss der Abfrage nicht benötigt werden.

  • Die Verwendung von Verbundabfragen über mehrere AWS-Regionen wird nicht unterstützt.

Erforderliche Berechtigungen

Um die erforderlichen Berechtigungen einzurichten, müssen Maßnahmen sowohl in Konto A (444455556666) als auch in Konto B (111122223333) ergriffen werden.

Aktionen für Konto A

Damit das Datenadministratorkonto A eine Lambda-Funktion mit dem Datenanalystenkonto B teilen kann, erfordert Konto B die Lambda-Aufruffunktion und den Spill-Bucket-Zugriff. Dementsprechend sollte Konto A der Lambda-Funktion und dem Prinzipal Zugriff auf seinen Spill-Bucket in Amazon S3 eine ressourcenbasierte Richtlinie hinzufügen.

  1. Die folgende Richtlinie erteilt Lambda-Funktionsberechtigungen für Konto B für eine Lambda-Funktion in Konto A aufzurufen.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountInvocationStatement", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/username" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name" } ] }
  2. Die folgende Richtlinie ermöglicht den Spill-Bucket-Zugriff auf den Prinzipal in Konto B.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::111122223333:user/username"] }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::spill-bucket", "arn:aws:s3:::spill-bucket/*" ] } ] }
  3. Wenn die Lambda-Funktion den Spill-Bucket mit einem AWS KMS-Schlüssel anstelle der vom Verbund-SDK angebotenen Standardverschlüsselung verschlüsselt, muss die AWS KMS-Schlüsselrichtlinie in Konto A dem Benutzer in Konto B Zugriff gewähren, wie im folgenden Beispiel.

    { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": [ "kms:Decrypt" ], "Resource": "*" // Resource policy that gets placed on the KMS key. }

Aktionen für Konto B

Damit Konto A seinen Connector mit Konto B teilen kann, muss Konto B eine Rolle namens AthenaCrossAccountCreate-account-A-id erstellen, die Konto A durch Aufrufen der AWS-Sicherheitstokenservice-AssumeRole-API-Aktion annimmt.

  1. Verwenden Sie die IAM-Konsole oder AWS CLI, um die AthenaCrossAccountCreate-account-A-id-Rolle als benutzerdefinierte Vertrauensrichtlinien-Rolle zu erstellen. Eine benutzerdefinierte Vertrauensrichtlinie delegiert den Zugriff und ermöglicht es anderen, Aktionen in Ihrem AWS-Konto durchzuführen. Eine Anleitung dazu finden Sie unter Erstellen einer Rolle mithilfe benutzerdefinierter Vertrauensrichtlinien im IAM-Benutzerhandbuch.

    Die Vertrauensbeziehung sollte ein Hauptobjekt haben, bei dem der Schlüssel AWS und der Wert die ARN von Konto A ist, wie im folgenden Beispiel.

    ... "Principal": { "AWS": ["arn:aws:iam::account-A-id:user/username"] }, ...
  2. Erstellen Sie auch in Konto B eine Richtlinie wie die folgende, die die CreateDataCatalog-Aktion ermöglicht.

    { "Effect": "Allow", "Action": "athena:CreateDataCatalog", "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*" }
  3. Fügen Sie die Richtlinie, die die CreateDataCatalog-Aktion zulässt, der AthenaCrossAccountCreate-account-A-id-Rolle hinzu, die Sie mit Konto B erstellt haben.

Freigeben einer Datenquelle in Konto A mit Konto B

Nachdem Berechtigungen vorhanden sind, können Sie die Seite Datenquellen und Kataloge Seite in der Athena-Konsole verwenden, um einen Daten-Connector in Ihrem Konto (Konto A) mit einem anderen Konto (Konto B) zu teilen. Konto A behält die volle Kontrolle und den Besitz des Connectors. Wenn Konto A Konfigurationsänderungen am Connector vornimmt, gilt die aktualisierte Konfiguration für den freigegebenen Connector in Konto B.

Anmerkung

Sie können nur eine Datenquelle vom Typ Lambda freigeben und keine Datenquellen, die AWS Glue-Verbindungen verwenden. Weitere Informationen finden Sie unter Verfügbare Datenquellenkonnektoren.

So teilen Sie eine Lambda-Datenquelle in Konto A mit Konto B
  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. Wählen Sie Datenquellen und Kataloge aus.

  4. Wählen Sie auf der Seite Datenquellen und Kataloge den Link des Connectors aus, den Sie freigeben möchten.

  5. Auf der Detailseite für eine Lambda-Datenquelle, aus dem Aktionen-Menü in der oberen rechten Ecke, wählen Sie Freigeben.

  6. Geben Sie im Dialogfeld Lambda-Name mit einem anderen Konto teilen? die erforderlichen Informationen ein.

    • Geben Sie für Data source name (Datenquellenname) den Namen der kopierten Datenquelle ein, wie er im anderen Konto angezeigt werden soll.

    • Geben Sie bei Konto-ID die ID des Kontos ein, mit dem Sie Ihre Datenquelle teilen möchten (in diesem Fall Konto B).

  7. Wählen Sie Freigeben. Der von Ihnen angegebene Connector für freigegebene Daten wird in Konto B erstellt. Konfigurationsänderungen am Connector in Konto A gelten für den Connector in Konto B.

Hinzufügen einer freigegebenen Datenquelle aus Konto A zu Konto B

Als Datenanalyst erhalten Sie möglicherweise den ARN eines Connectors, den Sie von einem Datenadministrator zu Ihrem Konto hinzufügen können. Sie können die Seite Datenquellen und Kataloge der Athena-Konsole verwenden, um den von Ihrem Administrator bereitgestellten Lambda-ARN zu Ihrem Konto hinzuzufügen.

So fügen Sie den Lambda-ARN eines freigegebenen Daten-Connectors zu Ihrem Konto hinzu
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

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

  3. Wählen Sie Datenquellen und Kataloge aus.

  4. Wählen Sie auf der Seite Datenquellen und Kataloge die Option Datenquellen erstellen aus.

  5. Auf der Seite Eine Datenquelle auswählen, wählen Sie Benutzerdefinierter oder freigegebener Connector.

  6. Wählen Sie Weiter aus.

  7. Auf der Seite Datenquellendetails eingeben, im Abschnitt Verbindungsdetails geben Sie für Lambda-Funktion auswählen oder eingeben, den Lambda-ARN von Konto A ein.

  8. Wählen Sie Weiter aus.

  9. Wählen Sie auf der Seite Überprüfen und erstellen die Option Datenquelle erstellen aus.

Fehlerbehebung

Wenn Sie eine Fehlermeldung erhalten, dass Konto A nicht über die Berechtigung verfügt, eine Rolle in Konto B zu übernehmen, stellen Sie sicher, dass der Name der in Konto B erstellten Rolle korrekt geschrieben ist und dass die richtige Richtlinie angehängt ist.