

 Amazon Redshift unterstützt die Verwendung von Python-UDFs nach dem 30. Juni 2026 nicht mehr. Wir werden damit beginnen, es schrittweise durchzusetzen. Weitere Informationen zum Ende der Lebensdauer von Python und zu den Migrationsoptionen finden Sie im [ Blogbeitrag](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/), der am 30. Juni 2025 veröffentlicht wurde. 

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.

# Verketten von IAM-Rollen in Amazon Redshift
<a name="authorizing-redshift-service-chaining-roles"></a>

Wenn Sie Ihrem Cluster eine Rolle zuweisen, kann Ihr Cluster diese Rolle übernehmen, um auf Amazon S3, Amazon Athena und in AWS Lambda Ihrem AWS Glue Namen zuzugreifen. Wenn eine an den Cluster angefügte Rolle keinen Zugriff auf die erforderlichen Ressourcen hat, können Sie mit ihr eine andere Rolle verketten, die möglicherweise zu einem anderen Konto gehört. Ihr Cluster nimmt dann vorübergehend die verkettete Rolle an, um auf die Daten zuzugreifen. Sie können über verkettete Rollen auch kontoübergreifenden Zugriff gewähren. Jede Rolle in der Kette nimmt die nächste Rolle in der Kette an, bis hin zum Cluster, der die Rolle am Ende der Kette annimmt. Die maximale Anzahl von IAM-Rollen, die Sie zuordnen können, unterliegt einem Kontingent. Weitere Informationen finden Sie unter dem Kontingent „Cluster-IAM-Rollen für Amazon Redshift für den Zugriff auf andere AWS Dienste“ unter. [Kontingente für Amazon-Redshift-Objekte](amazon-redshift-limits.md#amazon-redshift-limits-quota) 

**Anmerkung**  
Sie müssen die IAM-Rollen angeben, damit die Verkettung ordnungsgemäß funktioniert.

Nehmen wir beispielsweise an, Unternehmen A möchte auf Daten in einem Amazon S3-Bucket zugreifen, das zu Unternehmen B gehört. Unternehmen A erstellt eine AWS Servicerolle für Amazon Redshift mit dem Namen `RoleA` und ordnet sie ihrem Cluster zu. Unternehmen B erstellt eine Rolle mit dem Namen `RoleB`, die berechtigt ist, auf die Daten des Buckets von Unternehmen B zuzugreifen. Um auf die Daten im Bucket von Unternehmen B zuzugreifen, führt Unternehmen A den Befehl COPY mit einem `iam_role`-Parameter aus, der `RoleA` und `RoleB` verkettet. Für die Dauer des COPY-Vorgangs übernimmt `RoleA` vorübergehend `RoleB`, um auf den Amazon S3 Bucket zuzugreifen. 

Zum Verketten von Rollen richten Sie eine Vertrauensstellung zwischen den Rollen ein. Eine Rolle, die eine andere Rolle annimmt (z. B. `RoleA`), muss über eine Berechtigungsrichtlinie verfügen, die es ihr erlaubt, die nächste verkettete Rolle (z. B. `RoleB`) anzunehmen. Die Rolle, die Berechtigungen übergibt (`RoleB`), muss wiederum über eine Vertrauensstellung verfügen, die es ihr erlaubt, ihre Berechtigungen an die vorherige verkettete Rolle (`RoleA`) zu übergeben. Weitere Informationen finden Sie unter [Verwenden von IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) im IAM-Benutzerhandbuch. 

Die erste Rolle in der Kette muss eine dem Cluster angefügte Rolle sein. Die erste und jede folgende Rolle, die die nächste Rolle in der Kette annimmt, muss über eine Richtlinie verfügen, die eine bestimmte Anweisung enthält. Diese Anweisung enthält die Auswirkung `Allow` auf die Aktion `sts:AssumeRole ` und den Amazon-Ressourcennamen (ARN) der nächsten Rolle in einem `Resource`-Element. In unserem Beispiel verfügt `RoleA` über die folgende Berechtigungsrichtlinie, die es ihr erlaubt, `RoleB` zu übernehmen, die dem AWS -Konto `210987654321` gehört. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1487639602000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::{{111122223333}}:role/RoleB"        
       }
    ]
}
```

------

Eine Rolle, die an eine andere Rolle übergeht, muss eine Vertrauensbeziehung zu der Rolle aufbauen, die die Rolle übernimmt, oder zu dem AWS Konto, dem die Rolle gehört. In unserem Beispiel verfügt `RoleB` über die folgende Vertrauensrichtlinie zum Einrichten einer Vertrauensstellung mit `RoleA`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::{{111122223333}}:role/RoleA"
      }
    }
  ]
}
```

------

Die folgende Vertrauensrichtlinie stellt eine Vertrauensbeziehung mit dem AWS Kontoinhaber her`123456789012`. `RoleA`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      }
    }      
  ]
}
```

------

**Anmerkung**  
Um die Autorisierung zur Rollenverkettung auf bestimmte Benutzer zu beschränken, definieren Sie eine Bedingung. Weitere Informationen finden Sie unter [Einschränken des Zugriffs auf IAM-Rollen](authorizing-redshift-service-database-users.md).

Wenn Sie den Befehl UNLOAD, COPY, CREATE EXTERNAL FUNCTION oder CREATE EXTERNAL SCHEMA ausführen, können Sie Rollen durch Einschließen einer durch Kommas getrennten Liste von Rollen-ARNs im `iam_role`-Parameter verketten. Nachfolgend finden Sie die Syntax für die Verkettung von Rollen im `iam_role`-Parameter. 

```
unload ('select * from venue limit 10') 
to 's3://acmedata/redshift/venue_pipe_'
IAM_ROLE 'arn:aws:iam::<{{aws-account-id-1}}>:role/<{{role-name-1}}>[,arn:aws:iam::<{{aws-account-id-2}}>:role/<{{role-name-2}}>][,...]';
```

**Anmerkung**  
Die gesamte Rollenkette ist in einfachen Anführungszeichen eingeschlossen und darf keine Leerzeichen enthalten.

In den folgenden Beispielen ist `RoleA` dem Cluster angefügt, der dem AWS -Konto `123456789012` gehört. `RoleB`, die dem Konto `210987654321` gehört, ist berechtigt, auf den Bucket mit dem Namen `s3://companyb/redshift/` zuzugreifen. Im folgenden Beispiel werden Daten in `RoleB` den s3://companyb/redshift/-Bucket gekettet `RoleA` und ENTLADEN. 

```
unload ('select * from venue limit 10') 
to 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Das folgende Beispiel verwendet den COPY-Befehl zum Laden der Daten, die im vorherigen Beispiel entladen wurden.

```
copy venue 
from 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Im folgende Beispiel verwendet der CREATE EXTERNAL SCHEMA-Befehl verkettete Rollen, um die Rolle anzunehmen `RoleB`.

```
create external schema spectrumexample from data catalog 
database 'exampledb' region 'us-west-2' 
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Im folgenden Beispiel verwendet der Befehl CREATE EXTERNAL FUNCTION verkettete Rollen, um die Rolle anzunehmen `RoleB`.

```
create external function lambda_example(varchar)
returns varchar
volatile
lambda 'exampleLambdaFunction'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```