Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie richte ich bei Amazon Redshift Spectrum einen kontoübergreifenden Zugriff auf AWS Glue und Amazon S3 ein?
Ich möchte Amazon Redshift Spectrum verwenden, um in einem anderen AWS-Konto auf AWS Glue und Amazon Simple Storage Service (Amazon S3) zuzugreifen.
Lösung
Erstelle eine IAM-Rolle, die Amazon Redshift vertraut
Um mit Amazon Redshift Spectrum auf kontoübergreifende AWS-Ressourcen zuzugreifen, musst du eine AWS Identity and Access Management (IAM)-Rolle erstellen, die Amazon Redshift vertraut. Ordne dann die Rolle dem Amazon Redshift-Cluster zu.
Führe die folgenden Schritte aus:
- Öffne die IAM-Konsole.
- Wähle im Navigationsbereich Rollen.
- Wähle Rolle erstellen.
- Wähle für Typ der vertrauenswürdigen Entität auswählen die Option AWS-Service aus.
- Wähle ** Redshift**.
- Wähle unter Auswählen des Anwendungsfalls die Option Redshift – Personalisierbar.
- Wähle Weiter: Berechtigungen, Weiter: Tags und dann Weiter: Überprüfung.
Hinweis: Du musst keine Richtlinien oder Stichwörter hinzufügen. - Gib einen Rollennamen ein und wähle dann Rolle erstellen. In den folgenden Beispielen lautet die Rolle redshift_role1.
- Verknüpfe „redshift_role1“ mit dem Amazon Redshift-Cluster. Diese Zuordnung ermöglicht es dem Cluster, die neu erstellte Rolle für den Zugriff auf Amazon S3, Amazon Athena und AWS Glue zu übernehmen.
Eine neue IAM-Rolle mit Zugriff auf AWS Glue und Amazon S3 erstellen
Erstelle in einem anderen Konto eine neue IAM-Rolle mit Zugriff auf AWS Glue und Amazon S3. Amazon Redshift übernimmt die Rolle, um über die Vertrauensbeziehung auf AWS Glue- und S3-Ressourcen zuzugreifen.
Führe die folgenden Schritte aus:
-
Öffne die IAM-Konsole.
-
Wähle Richtlinien und dann Richtlinie erstellen.
-
Wähle die Registerkarte JSON und gib dann eine IAM-Richtlinie ein, die dem folgenden Beispiel ähnelt:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:BatchCreatePartition", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteDatabase", "glue:GetTables", "glue:GetPartitions", "glue:BatchDeletePartition", "glue:UpdateTable", "glue:BatchGetPartition", "glue:DeleteTable", "glue:GetDatabases", "glue:GetTable", "glue:GetDatabase", "glue:GetPartition", "glue:CreateDatabase", "glue:BatchDeleteTable", "glue:CreatePartition", "glue:DeletePartition", "glue:UpdatePartition" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucketMultipartUploads", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::your_bucket", "arn:aws:s3:::your_bucket/*" ] }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "<KMS_KEY_ARN>" ] } ] }
Hinweis: Ersetze your_bucket durch den Namen des S3-Buckets, auf den du mit Amazon Redshift Spectrum zugreifen möchtest. Ersetze KMS_KEY_ARN durch den ARN des KMS-Schlüssels, der den S3-Bucket verschlüsselt. Wenn die Dateien in dem S3-Bucket verschlüsselt sind, gewähre Amazon Redshift die entsprechenden Berechtigungen.
-
Wähle Richtlinie überprüfen aus.
-
Gib unter Name einen Namen für die Richtlinie ein, und wähle dann Richtlinie erstellen.
-
Wähle im Navigationsbereich Rollen und dann Rolle erstellen.
-
Wähle für Typ der vertrauenswürdigen Entität auswählen die Option Anderes AWS-Konto.
-
Gib als Konto-ID die ID des Kontos ein, das Amazon Redshift verwendet. Weitere Informationen findest du unter Ein Alias für Ihre AWS-Konto-ID verwenden.
-
Wähle Weiter: Berechtigungen.
-
Wähle in der Liste mit den Richtlinien den Namen der Richtlinie aus, die du erstellt hast.
-
Wähle Weiter: Tags und wähle dann Weiter: Überprüfung.
Hinweis: Du musst keine Tags hinzufügen. -
Gib einen Rollennamen ein und wähle dann Rolle erstellen. In den folgenden Beispielen wird die Rolle glue_s3_role2 verwendet.
-
Wähle im Navigationsbereich Rollen.
-
Wähle den Namen der Rolle aus, die du erstellt hast und wähle dann die Registerkarte Vertrauensbeziehungen.
-
Wähle Vertrauensbeziehung bearbeiten.
-
Lösche die vorhandene Richtlinie und ersetze sie dann durch eine Richtlinie, die dem folgenden Beispiel ähnelt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::redshift_account1:role/redshift_role1" }, "Action": "sts:AssumeRole" } ] }
Hinweis: Ersetze redshift_account1 durch die ID des Kontos, das Amazon Redshift verwendet. Ersetze redshift_role1 durch den Namen der ersten Rolle, die du erstellt hast.
- Wähle Vertrauensrichtlinie aktualisieren.
Berechtigungen für die Amazon Redshift IAM-Rolle aktualisieren
Aktualisiere die Berechtigungen für die erste IAM-Rolle, die du erstellt hast. Führe die folgenden Schritte aus:
-
Öffne die IAM-Konsole.
-
Wähle im Navigationsbereich Rollen und wähle dann den Namen der ersten Rolle (redshift_role1), die du zuvor erstellt hast.
-
Wähle unter „Berechtigungen“ die Option Inline-Richtlinie hinzufügen.
-
Wähle die Registerkarte JSON. Lösche die vorhandene Richtlinie und gib dann eine IAM-Richtlinie ein, die dem folgenden Beispiel ähnelt:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::glue_s3_account2:role/glue_s3_role2" } ] }
Hinweis: Ersetze glue_s3_account2 durch die ID des Kontos, das AWS Glue und Amazon S3 verwendet. Ersetze glue_s3_role2 durch den Namen der zweiten Rolle, die du erstellt hast.
-
Wähle Richtlinie überprüfen aus.
-
Gib unter Name einen Namen für die Richtlinie ein und wähle dann Richtlinie erstellen aus.
-
Erstelle ein externes Schema, das die Rollen verwendet, die du in beiden Konten erstellt hast. Siehe folgendes Beispiel:
create external schema spectrum_schema from data catalog database 'your_db' iam_role 'arn:aws:iam::redshift_account1:role/redshift_role1,arn:aws:iam::glue_s3_account2:role/glue_s3_role2'
Hinweis: Ersetze die folgenden Werte:
your_db: Der Name Ihrer Datenbank in AWS Glue.
redshift_account1: Die ID des Amazon Redshift-Kontos.
redshift_role1: Der Name der Rolle, die du im Amazon Redshift-Konto erstellt hast.
glue_s3_account2: Die ID des AWS Glue- und Amazon S3-Kontos.
glue_s3_role2: Der Name der Rolle, die du im AWS Glue- und Amazon S3-Konto erstellt hast.Führe in der DDL-Anweisung „Externes Schema erstellen“ die ARNs der IAM-Rollen in der folgenden Reihenfolge auf: redshift_cluster_role, destination_account_role. Füge keine Leerzeichen zwischen den Rollen ein.
Du kannst jetzt Amazon Redshift Spectrum von dem Amazon Redshift-Cluster in redshift_account1 verwendest, um AWS Glue-Tabellen in glue_s3_account2 abzufragen. Alle Ressourcen müssen sich in derselben AWS-Region befinden. Du musst die externen Tabellen nicht neu erstellen, da Amazon Redshift Spectrum auf die vorhandenen AWS Glue-Tabellen zugreifen kann.
Die folgende Abfrage gibt die Anzahl der Zeilen in einer AWS Glue-Tabelle zurück, die im externen Schema erstellt wurde:
select count(*) from spectrum_schema.glue_table;
Hinweis: Ersetze spectrum_schema und glue_table durch den Namen des Schemas und der AWS Glue-Tabelle.
Ähnliche Informationen
Autorisierung von Amazon Redshift für den Zugriff auf AWS-Services in deinem Namen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Monaten