

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
<a name="hive-metastore-iam-access-lambda"></a>

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](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) 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 [AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy)verwaltete 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`.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/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](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) im *IAM-Benutzerhandbuch*.

## Lambda-Funktionen erstellen
<a name="hive-metastore-iam-access-lambda-creating-lambda-functions"></a>

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](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html).

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](federated-query-iam-access.md).

## Berechtigungen für Katalogregistrierung und Metadaten-API-Operationen konfigurieren
<a name="hive-metastore-iam-access-lambda-catalog-registration-and-metadata-api-operations"></a>

[Für den API-Zugriff auf die Katalogregistrierung und Metadatenvorgänge können Sie die verwaltete Richtlinie verwenden. AmazonAthenaFullAccess ](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) Wenn Sie die `AmazonAthenaFullAccess`-Richtlinie nicht verwenden, müssen Sie Ihren Athena-Richtlinien die folgenden API-Operationen hinzufügen:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:GetDataCatalog",
                "athena:CreateDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:GetDatabase",
                "athena:ListDatabases",
                "athena:GetTableMetadata",
                "athena:ListTableMetadata"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

## Lambda-Funktion regionenübergreifend aufrufen
<a name="hive-metastore-iam-access-lambda-cross-region-invocation"></a>

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.

## Lambda-Funktion über Konten hinweg aufrufen
<a name="hive-metastore-iam-access-lambda-cross-account-invocation"></a>

Manchmal benötigen Sie möglicherweise Zugriff auf einen Hive-Metastore über ein anderes Konto. Um beispielsweise einen Hive-Metastore auszuführen, könnten 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](https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/), um einen kontenübergreifenden Zugriff für Hive-Metastores zu ermöglichen.

**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-Funktion `external-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ähren`external-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 [Lambda-Funktion regionenübergreifend aufrufen](#hive-metastore-iam-access-lambda-cross-region-invocation) weiter oben in diesem Thema.

### Kontenübergreifenden Zugriff auf Daten gewähren
<a name="hive-metastore-iam-access-lambda-granting-cross-account-access-to-data"></a>

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](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html).
+ 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.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Sid": "Stmt1234567890123", "Effect":
    "Allow", "Principal": { "AWS":
        "arn:aws:iam::444455556666:user/perf1-test"
    }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::athena-test/lambda/dataset/*" } ]
    }
```

------

**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.

![\[Kontenübergreifender Zugriff auf Hive-Metastore und Amazon-S3-Daten in SQL Workbench.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/hive-metastore-iam-access-lambda-1.png)
