Voraussetzungen für die Einrichtung einer Null-ETL-Integration - AWS Glue

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.

Voraussetzungen für die Einrichtung einer Null-ETL-Integration

Für die Einrichtung einer Integration zwischen Quelle und Ziel sind einige Voraussetzungen erforderlich, z. B. die Konfiguration von IAM-Rollen, die für den Zugriff auf Daten von der Quelle und das Schreiben in das Ziel AWS Glue verwendet werden, sowie die Verwendung von KMS-Schlüsseln zur Verschlüsselung der Daten im Zwischen- oder Zielspeicherort.

Einrichten von Quellressourcen

Führen Sie die folgenden Einrichtungsaufgaben entsprechend der Quelle aus.

Einrichten der Quellrolle

In diesem Abschnitt erfahren Sie, wie Sie eine Quellrolle übergeben, damit die Null-ETL-Integration auf Ihre Verbindung zugreifen kann. Dies gilt auch nur für SaaS-Quellen.

Anmerkung

Wenn Sie den Zugriff auf nur wenige Verbindungen beschränken möchten, können Sie zunächst die Verbindung erstellen, um den Verbindungs-ARN zu erhalten. Siehe Konfigurieren einer Quelle für eine Null-ETL-Integration.

Erstellen Sie eine Rolle, die über Berechtigungen für die Integration verfügt, um auf die Verbindung zuzugreifen:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GlueConnections", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "arn:aws:glue:*:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:connection/*" ] }, { "Sid": "GlueActionBasedPermissions", "Effect": "Allow", "Action": [ "glue:ListEntities", "glue:RefreshOAuth2Tokens" ], "Resource": [ "*" ] } ] }

Vertrauensrichtlinie:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Einrichten von Zielressourcen

Führen Sie die folgenden Einrichtungsaufgaben je nach Bedarf für das AWS Glue Data Catalog- oder Amazon Redshift Data Warehouse-Integrationsziel aus.

Für Integrationen mit einem AWS Glue Datenbankziel:

Für Integrationen mit einem Amazon Redshift Datawarehouse-Ziel:

Eine Datenbank einrichten AWS Glue

Für Integrationen, die eine AWS Glue Datenbank verwenden:

So richten Sie eine Zieldatenbank im AWS Glue Datenkatalog mit einem Amazon S3 S3-Standort ein:

  1. Wählen Sie auf der Startseite der AWS Glue Konsole unter Datenkatalog die Option Datenbank aus.

  2. Wählen Sie oben rechts Datenbank hinzufügen aus. Wenn Sie bereits eine Datenbank erstellt haben, stellen Sie sicher, dass der Speicherort mit dem Amazon-S3-URI für die Datenbank festgelegt ist.

  3. Geben Sie einen Namen und einen Speicherort ein (Amazon-S3-URI). Der Speicherort ist für die Null-ETL-Integration erforderlich. Anschließend klicken Sie auf Datenbank erstellen.

    Anmerkung

    Der Amazon S3 S3-Bucket muss sich in derselben Region wie die AWS Glue Datenbank befinden.

Informationen zum Erstellen einer neuen Datenbank in AWS Glue finden Sie unter Erste Schritte mit dem AWS Glue Datenkatalog.

Sie können die Datenbank in AWS Glue auch mit der create-database-CLI erstellen. Beachten Sie, dass der LocationUri in --database-input erforderlich ist.

Optimieren von Iceberg-Tabellen

Sobald eine Tabelle AWS Glue in der Zieldatenbank erstellt wurde, können Sie die Komprimierung aktivieren, um Abfragen in Amazon Athena zu beschleunigen. Informationen zum Einrichten der Ressourcen (IAM-Rolle) zur Komprimierung finden Sie unter Voraussetzungen für die Tabellenoptimierung.

Weitere Informationen zum Einrichten der Komprimierung für die durch die Integration erstellte AWS Glue Tabelle finden Sie unter Optimieren von Iceberg-Tabellen.

Bereitstellen einer RBAC-Richtlinie (Resource Based Access – ressourcenbasierter Zugriff) für den Katalog

Für Integrationen, die eine AWS Glue Datenbank verwenden, fügen Sie der Katalog-RBAC-Richtlinie die folgenden Berechtigungen hinzu, um Integrationen zwischen Quelle und Ziel zu ermöglichen.

Anmerkung

Bei kontoübergreifenden Integrationen müssen sowohl die Rollenrichtlinie von Alice (Benutzer, der die Integration erstellt) als auch die Katalogressourcenrichtlinie glue:CreateInboundIntegration für die Ressource zulassen. Für dasselbe Konto ist entweder eine Ressourcenrichtlinie oder eine Rollenrichtlinie ausreichend, die glue:CreateInboundIntegration für die Ressource zulässt. In beiden Szenarien muss glue.amazonaws.com jedoch glue:AuthorizeInboundIntegration erlaubt sein.

Sie können unter Datenkatalog auf die Katalogeinstellungen zugreifen. Geben Sie dann die folgenden Berechtigungen ein und geben Sie die fehlenden Informationen ein.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:CreateInboundIntegration" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/DatabaseName" ], "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>" } } }, { "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/DatabaseName" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>" } } } ] }

Erstellen einer IAM-Zielrolle

Erstellen Sie eine IAM-Zielrolle mit den folgenden Berechtigungen und Vertrauensstellungen:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/*", "Effect": "Allow" }, { "Action": [ "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/DatabaseName" ], "Effect": "Allow" }, { "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:DeleteTable", "glue:UpdateTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:GetResourcePolicy" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/DatabaseName", "arn:aws:glue:us-east-1:111122223333:table/DatabaseName/*" ], "Effect": "Allow" }, { "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": "AWS/Glue/ZeroETL" } }, "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*", "Effect": "Allow" } ] }

Fügen Sie die folgende Vertrauensrichtlinie hinzu, damit der AWS Glue Dienst die Rolle übernehmen kann:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Erstellen eines Amazon-Redshift-Data-Warehouse

Wenn Ihr Null-ETL-Integrationsziel ein Amazon-Redshift-Data-Warehouse ist, erstellen Sie gegebenenfalls das Data Warehouse. Informationen zum Erstellen einer Amazon-Redshift-Serverless-Arbeitsgruppe unter Erstellen einer Arbeitsgruppe mit einem Namespace. Informationen zum Erstellen eines Amazon-Redshift-Clusters finden Sie unter Erstellen eines Clusters.

Für die Amazon Redshift Zielarbeitsgruppe oder den Zielcluster muss der enable_case_sensitive_identifier Parameter aktiviert sein, damit die Integration erfolgreich ist. Weitere Informationen zum Aktivieren der Unterscheidung zwischen Groß- und Kleinschreibung finden Sie unter Aktivieren der Unterscheidung zwischen Groß- und Kleinschreibung für Ihr Data Warehouse im Amazon-Redshift-Managementleitfaden.

Nachdem die Einrichtung der Amazon Redshift Arbeitsgruppe oder des Clusters abgeschlossen ist, müssen Sie Ihr Data Warehouse konfigurieren. Weitere Informationen finden Sie im Amazon Redshift Management-Handbuch unter Erste Schritte mit Zero-ETL-Integrationen.

Einrichten einer VPC für Ihre Null-ETL-Integration

So richten Sie eine VPC für Ihre Null-ETL-Integration ein:

  1. Gehen Sie zu VPC > Your VPCs und wählen Sie Create VPC aus.

    1. Wählen Sie VPC und mehr.

    2. Legen Sie den VPC-Namen fest.

    3. Stellen Sie den IPv4 CIDR ein: 10.0.0.0/16.

    4. Setzen Sie die Nummer von AZ auf 1.

    5. Legen Sie die Anzahl der öffentlichen und privaten Subnetze auf 1 fest.

    6. Legen Sie für NAT-Gateways „Keine“ fest.

    7. Legen Sie für VPC-Endpunkte „S3-Gateway“ fest.

    8. Sie müssen DNS-Hostnamen und DNS-Auflösung aktivieren.

  2. Wählen Sie unter Endpunkte die Option Endpunkt erstellen aus.

  3. Erstellen Sie Endpunkte für diese Dienste im privaten Subnetz der VPC (verwenden Sie die Standardsicherheitsgruppe):

    1. lambda.us-east-1.amazonaws.com

    2. glue.us-east-1.amazonaws.com

    3. sts.us-east-1.amazonaws.com

Stellen Sie die Verbindung her: AWS Glue

  1. Gehen Sie zu AWS Glue> Datenverbindungen und wählen Sie Verbindung erstellen.

  2. Wählen Sie Netzwerk aus.

  3. Wählen Sie die VPC, das Subnetz (privat) und die Standardsicherheitsgruppe aus, die Sie erstellt haben.

Einrichten der Zielrolle für die VPC

Die Zielrolle muss über folgende Berechtigungen verfügen (zusätzlich zu den anderen für ETl Zero-Integrations erforderlichen Berechtigungen):

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CustomerVpc", "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeRouteTables", "ec2:DescribeVpcEndpoints", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "glue:GetConnection" ], "Resource": [ "*" ] } ] }

Einrichten der Eigenschaften der Zielteilressource

Wenn Sie die CLI verwenden, setzen Sie die Eigenschaften der Ziel-Leg-Ressource auf die AWS Glue Zieldatenbank, die Sie erstellt haben. Übergeben Sie den ARN der Zielrolle sowie den AWS Glue Verbindungsnamen.

aws glue create-integration-resource-property \ --resource-arn arn:aws:glue:us-east-1:<account-id>:database/exampletarget \ --target-processing-properties '{"RoleArn" : "arn:aws:iam::<account-id>:role/example-role", "ConnectionName":"example-vpc-3"}' \ --endpoint-url https://example.amazonaws.com --region us-east-1

Mögliche Client-Fehler

Im Folgenden sind mögliche Client-Fehler für eine mit einer VPC konfigurierte Integration aufgeführt.

Fehlermeldung Maßnahme erforderlich
Die angegebene Rolle ist nicht berechtigt, Glue: GetConnection on connection auszuführen. Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Die angegebene Rolle ist nicht autorisiert, ec2: DescribeSubnets auszuführen. Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Die angegebene Rolle ist nicht autorisiert, ec2: auszuführen. DescribeSecurityGroups Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Die angegebene Rolle ist nicht autorisiert, ec2: auszuführen. DescribeVpcEndpoints Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Die angegebene Rolle ist nicht autorisiert, ec2: auszuführen. DescribeRouteTables Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Die angegebene Rolle ist nicht autorisiert, ec2: auszuführen. CreateTags Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Die angegebene Rolle ist nicht autorisiert, ec2: auszuführen. CreateNetworkInterface Fügen Sie diese Berechtigung der Rollenrichtlinie hinzu und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der Rollenrichtlinie
Das angegebene Verbindungssubnetz enthält keinen gültigen S3-Endpunkt oder kein gültiges NAT-Gateway. Aktualisieren Sie das Subnetz und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der VPC-Subnetz-Endpunkte
Das Verbindungssubnetz wurde nicht gefunden. Aktualisieren Sie das Verbindungssubnetz und warten Sie dann, bis die Integration wiederhergestellt ist. Verbindung aktualisieren AWS Glue
Die Verbindungssicherheitsgruppe wurde nicht gefunden. Aktualisieren Sie die Sicherheitsgruppe des Subnetzes und warten Sie dann, bis die Integration wiederhergestellt ist. AWS Glue Verbindung aktualisieren
Über die bereitgestellte VPC-Verbindung kann keine Verbindung zu S3 hergestellt werden. Aktualisieren Sie die Subnetzkonfiguration und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der VPC-Subnetz-Endpunkte
Über die bereitgestellte VPC-Verbindung kann keine Verbindung zu Lambda hergestellt werden. Aktualisieren Sie die Subnetzkonfiguration und warten Sie dann, bis die Integration wiederhergestellt ist. Aktualisieren der VPC-Subnetz-Endpunkte

Einrichten einer kontenübergreifenden Null-ETL-Integration

So richten Sie eine kontenübergreifende Null-ETL-Integration ein:

  1. Konfigurieren Sie eine Zielressourcenrichtlinie wie unter Bereitstellen einer RBAC-Richtlinie (Resource Based Access – ressourcenbasierter Zugriff) für den Katalog beschrieben. Stellen Sie sicher, dass die Rolle des Quellkontos für die Zielressource ausdrücklich zugelassen ist.

  2. Die Rolle des Quellkontos (die Rolle, mit der die Integration erstellt wurde) muss Folgendes aufweisen:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Stmt123456789012", "Action": [ "glue:CreateInboundIntegration" ], "Effect": "Allow", "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/DatabaseName" ] } ] }
  3. Erstellen Sie die Integration wie unter Erstellen einer Integration beschrieben.