Wie richte ich bei Amazon Redshift Spectrum einen kontoübergreifenden Zugriff auf AWS Glue und Amazon S3 ein?

Lesedauer: 5 Minute
0

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:

  1. Öffne die IAM-Konsole.
  2. Wähle im Navigationsbereich Rollen.
  3. Wähle Rolle erstellen.
  4. Wähle für Typ der vertrauenswürdigen Entität auswählen die Option AWS-Service aus.
  5. Wähle ** Redshift**.
  6. Wähle unter Auswählen des Anwendungsfalls die Option Redshift – Personalisierbar.
  7. Wähle Weiter: Berechtigungen, Weiter: Tags und dann Weiter: Überprüfung.
    Hinweis: Du musst keine Richtlinien oder Stichwörter hinzufügen.
  8. Gib einen Rollennamen ein und wähle dann Rolle erstellen. In den folgenden Beispielen lautet die Rolle redshift_role1.
  9. 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:

  1. Öffne die IAM-Konsole.

  2. Wähle Richtlinien und dann Richtlinie erstellen.

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

  4. Wähle Richtlinie überprüfen aus.

  5. Gib unter Name einen Namen für die Richtlinie ein, und wähle dann Richtlinie erstellen.

  6. Wähle im Navigationsbereich Rollen und dann Rolle erstellen.

  7. Wähle für Typ der vertrauenswürdigen Entität auswählen die Option Anderes AWS-Konto.

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

  9. Wähle Weiter: Berechtigungen.

  10. Wähle in der Liste mit den Richtlinien den Namen der Richtlinie aus, die du erstellt hast.

  11. Wähle Weiter: Tags und wähle dann Weiter: Überprüfung.
    Hinweis: Du musst keine Tags hinzufügen.

  12. Gib einen Rollennamen ein und wähle dann Rolle erstellen. In den folgenden Beispielen wird die Rolle glue_s3_role2 verwendet.

  13. Wähle im Navigationsbereich Rollen.

  14. Wähle den Namen der Rolle aus, die du erstellt hast und wähle dann die Registerkarte Vertrauensbeziehungen.

  15. Wähle Vertrauensbeziehung bearbeiten.

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

  1. 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:

  1. Öffne die IAM-Konsole.

  2. Wähle im Navigationsbereich Rollen und wähle dann den Namen der ersten Rolle (redshift_role1), die du zuvor erstellt hast.

  3. Wähle unter „Berechtigungen“ die Option Inline-Richtlinie hinzufügen.

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

  5. Wähle Richtlinie überprüfen aus.

  6. Gib unter Name einen Namen für die Richtlinie ein und wähle dann Richtlinie erstellen aus.

  7. Stelle eine Verbindung zum Amazon Redshift-Cluster her.

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

IAM-Richtlinien für Amazon Redshift Spectrum

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 24 Tagen