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.
Gewährung von Lambda-Funktionszugriff auf externe Hive-Metastores
Um eine Lambda-Funktion in Ihrem Konto aufzurufen, müssen Sie eine Rolle mit den folgenden Berechtigungen erstellen:
-
AWSLambdaVPCAccessExecutionRole
– Die Berechtigung AWS Lambda -Ausführungsrolle für die Verwaltung von Elastic-Network-Schnittstellen, die Ihre Funktion mit einer VPC verbinden. Stellen Sie sicher, dass es eine ausreichende Anzahl von Netzwerkschnittstellen und IP-Adressen gibt. -
AmazonAthenaFullAccess
— Die AmazonAthenaFullAccessverwaltete Richtlinie gewährt vollen Zugriff auf Athena. -
Eine Amazon-S3-Richtlinie, die der Lambda-Funktion das Schreiben zu S3 und Athena das Lesen aus S3 ermöglicht.
Die folgende Richtlinie definiert beispielsweise die Berechtigung für den Überlaufspeicherort s3:\\mybucket\spill
.
Wenn Sie IAM-Richtlinien verwenden, stellen Sie sicher, dass Sie die bewährten Methoden von IAM befolgen. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit in IAM im IAM-Benutzerhandbuch.
Lambda-Funktionen erstellen
Für die Erstellung einer Lambda-Funktion in Ihrem Konto sind Funktionsentwicklungsberechtigungen oder die Rolle AWSLambdaFullAccess
erforderlich. Weitere Informationen finden Sie unter Identitätsbasierte IAM-Richtlinien für AWS Lambda.
Da Athena die AWS Serverless Application Repository zur Erstellung von Lambda-Funktionen verwendet, sollte der Superuser oder Administrator, der Lambda-Funktionen erstellt, auch über IAM-Richtlinien verfügen, um Athena-Verbundabfragen zuzulassen.
Konfigurieren Sie Berechtigungen für die Katalogregistrierung und Metadaten-API-Operationen
Für den API-Zugriff auf die Katalogregistrierung und Metadaten-Operationen können Sie die AmazonAthenaFullAccess verwaltete Richtlinie verwenden. Wenn Sie die AmazonAthenaFullAccess
Richtlinie nicht verwenden, fügen Sie Ihren Athena-Richtlinien die folgenden API-Operationen hinzu:
Regionsübergreifendes Aufrufen einer Lambda-Funktion
Athena ruft standardmäßig Lambda-Funktionen auf, die in derselben Region definiert sind. Um eine Lambda-Funktion in einer AWS-Region anderen Region als der Region aufzurufen, in der Sie Athena-Abfragen ausführen, verwenden Sie den vollständigen ARN der Lambda-Funktion.
Das folgende Beispiel zeigt, wie ein Katalog in der Region Europa (Frankfurt) eine Lambda-Funktion in der Region USA Ost (Nord-Virginia) angeben kann, um Daten aus dem Hive-Metastore in der Region Europa (Frankfurt) abzurufen.
arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new
Wenn Sie den vollständigen ARN auf diese Weise angeben, kann Athena die Lambda-Funktion external-hms-service-new
für us-east-1
aufrufen, um die Hive-Metastore-Daten aus eu-central-1
abzurufen.
Anmerkung
Der Katalog sollte in derselben Datei registriert sein AWS-Region , die Sie zum Ausführen von Athena-Abfragen verwenden.
Kontenübergreifend eine Lambda-Funktion aufrufen
Manchmal benötigen Sie möglicherweise Zugriff auf einen Hive-Metastore über ein anderes Konto. Um beispielsweise einen Hive-Metastore auszuführen, können Sie ein anderes Konto verwenden als das, das Sie für Athena-Abfragen verwenden. Verschiedene Gruppen oder Teams führen den Hive-Metastore möglicherweise mit unterschiedlichen Konten in ihrer VPC aus. Vielleicht möchten Sie auch auf Metadaten in verschiedenen Hive-Metastores in verschiedenen Gruppen oder Teams zugreifen.
Athena verwendet die AWS Lambda -Unterstützung für den kontenübergreifenden Zugriff
Anmerkung
Beachten Sie, dass der kontenübergreifende Zugriff für Athena normalerweise den kontenübergreifenden Zugriff für Metadaten und Daten in Amazon S3 impliziert.
Stellen Sie sich das folgende Szenario vor:
-
Konto
111122223333
richtet die Lambda-Funktionexternal-hms-service-new
für us-east-1 in Athena ein, um auf einen Hive-Metastore zuzugreifen, der auf einem EMR-Cluster ausgeführt wird. -
Konto
111122223333
möchte dem Konto 444455556666 Zugriff auf die Hive-Metastore-Daten erteilen.
Um 444455556666
Kontozugriff auf die Lambda-Funktion zu gewährenexternal-hms-service-new
, 111122223333
verwendet account den folgenden AWS CLI add-permission
Befehl. Der Befehl wurde zur besseren Lesbarkeit formatiert.
$ aws --profile perf-test lambda add-permission --function-name external-hms-service-new --region us-east-1 --statement-id Id-ehms-invocation2 --action "lambda:InvokeFunction" --principal arn:aws:iam::444455556666:user/perf1-test { "Statement": "{\"Sid\":\"Id-ehms-invocation2\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"arn:aws:iam::444455556666:user/perf1-test\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new\"}" }
Um die Lambda-Berechtigung zu überprüfen, verwenden Sie den Befehl get-policy
wie im folgenden Beispiel gezeigt. Der Befehl wurde zur besseren Lesbarkeit formatiert.
$ aws --profile perf-test lambda get-policy --function-name arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new --region us-east-1 { "RevisionId": "711e93ea-9851-44c8-a09f-5f2a2829d40f", "Policy": "{\"Version\":\"2012-10-17\", \"Id\":\"default\", \"Statement\":[{\"Sid\":\"Id-ehms-invocation2\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"arn:aws:iam::444455556666:user/perf1-test\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new\"}]}" }
Nach der Hinzufügung der Berechtigung können Sie einen vollständigen ARN der Lambda-Funktion für us-east-1
wie den folgenden verwenden, wenn Sie den Katalog ehms
definieren:
arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new
Weitere Informationen zu regionsübergreifenden Aufrufen finden Sie unter Regionsübergreifendes Aufrufen einer Lambda-Funktion weiter oben in diesem Thema.
Gewähren Sie kontenübergreifenden Zugriff auf Daten
Bevor Sie Athena-Abfragen ausführen können, müssen Sie einen kontenübergreifenden Zugriff auf die Daten in Amazon S3 gewähren. Sie können dafür eine der folgenden Möglichkeiten auswählen:
-
Aktualisieren Sie die Richtlinie für Zugriffskontrolllisten des Amazon-S3-Buckets mit einer kanonischen Benutzer-ID.
-
Fügen Sie der Amazon-S3-Bucket-Richtlinie den kontenübergreifenden Zugriff hinzu.
Sie könnten beispielsweise der Amazon-S3-Bucket-Richtlinie im Konto die folgende Richtlinie 111122223333
die folgende Richtlinie hinzufügen, damit das Konto 444455556666
Daten aus dem angegebenen Amazon-S3-Speicherort lesen kann.
Anmerkung
Möglicherweise müssen Sie den kontenübergreifenden Zugriff auf Amazon S3 nicht nur in Bezug auf Ihre Daten, sondern auch in Bezug auf Ihren Amazon-S3-Überlaufspeicherort gewähren. Ihre Lambda-Funktion speichert zusätzliche Daten am Überlaufspeicherort, wenn die Größe des Antwortobjekts einen bestimmten Schwellenwert überschreitet. Ein Beispiel für eine Richtlinie finden Sie am Anfang dieses Themas.
Im aktuellen Beispiel kann nach Gewährung des kontenübergreifenden Zugriffs für 444455556666,
das Konto 444455556666
den Katalog ehms
im eigenen account
verwenden, um im Konto 111122223333
definierte Tabellen abzufragen.
Im folgenden Beispiel ist das SQL Workbench-Profil perf-test-1
für das Konto 444455556666
angegeben. Die Abfrage verwendet den Katalog ehms
, um auf den Hive-Metastore und die Amazon-S3-Daten im Konto 111122223333
zuzugreifen.
