View a markdown version of this page

AWS Zero-ETL-Integration für selbstverwaltete Datenbankquellen - AWS Datenbankmigrationsdienst

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.

AWS Zero-ETL-Integration für selbstverwaltete Datenbankquellen

AWS Die Zero-ETL-Integration ist eine vollständig verwaltete Lösung, die Transaktions- und Betriebsdaten aus mehreren Betriebs- und Transaktionsdatenbankquellen in Amazon Redshift-, Amazon S3- und Amazon S3-Tabellen verfügbar macht. Mit Zero-ETL können Sie Daten aus Ihren selbstverwalteten Quelldatenbanken wie MySQL, PostgreSQL, SQL Server und Oracle über bestehende () Quellendpunkte auf Amazon Redshift replizieren. AWS Database Migration Service AWS DMS Durch die automatische Synchronisation wird der herkömmliche ETL-Prozess (Extrahieren, Transformieren und Laden) vermieden. Es ermöglicht auch Analysen und KI-Workloads in Echtzeit. Weitere Informationen finden Sie unter Zero-ETL-Integrationen im Amazon Redshift Management Guide.

Zero-ETL Die Integration bietet die folgenden Vorteile:

  • Real-time Datenreplikation — Kontinuierliche Datensynchronisierung von Oracle-Datenbanken zu Amazon Redshift mit minimaler Latenz.

  • Eliminierung komplexer ETL-Pipelines — Es ist nicht erforderlich, benutzerdefinierte Datenintegrationslösungen zu entwickeln und zu verwalten.

  • Reduzierter Betriebsaufwand — Automatisierte Einrichtung und Verwaltung über AWS APIs.

  • Vereinfachte Datenintegrationsarchitektur — Nahtlose Integration zwischen selbstverwalteten Datenbanken und AWS Analysediensten.

  • Verbesserte Sicherheit — Built-in Verschlüsselung und IAM-Zugriffskontrollen.

So funktioniert die Zero-ETL-Integration für selbstverwaltete Datenbankquellen

Sie können vorhandene AWS DMS Endpunkte verwenden, die zuvor für selbstverwaltete Datenbanken erstellt wurden, oder neue erstellen.

  • Verwenden Sie die AWS Glue Konsole oder CLI, um die Zero-ETL-Integration mit Amazon Redshift als Ziel im Katalog zu erstellen. AWS Glue Sie können Schema und Tabellenfilter angeben, wenn Sie Zero-ETL-Integrationen erstellen.

  • Zusätzliche schreibgeschützte Ressourcen im Zusammenhang mit den Integrationen werden automatisch innerhalb des Dienstes erstellt. AWS DMS Diese Ressourcen, einschließlich der Zero-ETL-Engine, werden verwendet, um Volllast- und kontinuierliche Datenänderungsprozesse einzuleiten, um Daten mit der Amazon Redshift-Zieldatenbank zu synchronisieren.

  • Sie kontrollieren die Verschlüsselung Ihrer Daten, wenn Sie die Integrationsquelle, die Null-ETL-Integration und das Data Warehouse in Amazon Redshift erstellen.

  • Die Integration überwacht den Zustand der Datenpipeline und behebt nach Möglichkeit Probleme.

  • Sie können Integrationen aus Quellen desselben Typs zu einem einzigen Amazon Redshift Data Warehouse erstellen, um ganzheitliche Einblicke über mehrere Anwendungen hinweg zu erhalten.

Sobald die Daten repliziert sind, können Sie die Analysefunktionen von Amazon Redshift nutzen. Zum Beispiel: integriertes Machine Learning (ML), materialisierte Ansichten, Datenfreigaben und der direkte Zugriff auf mehrere Datenspeicher und Data Lakes Dateningenieuren bieten Zero-ETL-Integrationen Zugriff auf zeitkritische Daten, die sich andernfalls durch zeitweilige Fehler in komplexen Datenpipelines verzögern könnten. Sie können Analytikabfragen und ML-Modelle für Transaktionsdaten ausführen, um beinahe in Echtzeit Einblicke in zeitkritische Ereignisse und Geschäftsentscheidungen zu gewinnen.

Sie können ein Amazon Redshift-Abonnement für Event-Benachrichtigungen erstellen, um automatisch benachrichtigt zu werden, wenn Probleme bei einer Zero-ETL-Integration auftreten. Die Liste der integrationsbezogenen Ereignisbenachrichtigungen finden Sie unter Zero-ETL Benachrichtigungen zu Integrationsereignissen bei Amazon. EventBridge Der einfachste Weg, ein Abonnement zu erstellen, ist die Amazon Simple Notification Service-Konsole. Informationen zum Erstellen und Abonnieren eines Amazon-SNS-Themas finden Sie unter Erste Schritte mit Amazon SNS im Amazon-Simple-Notification-Service-Entwicklerhandbuch.

Konfiguration der Quelldatenbank vor dem Erstellen der Integration

Bevor Sie Zero-ETL-Integrationen konfigurieren, müssen Sie Ihre Quelldatenbank entsprechend den Anforderungen für Ihre Datenbank-Engine ordnungsgemäß konfigurieren. Jede Engine hat spezifische Konfigurationsanforderungen und Einschränkungen.

SQL Server

Anmerkung

RDS SQL Server und Azure SQL Server können nicht als Quellen für selbstverwaltete Zero-ETL-Integrationen verwendet werden.

Oracle

  • Informationen zu den Konfigurationsanforderungen und Einschränkungen finden Sie unter Eine Oracle-Datenbank als Quelle für verwenden für. AWS DMS

MySQL

PostgreSQL

Einrichtung von IAM-Berechtigungen und Verschlüsselung für die Zero-ETL-Integration

Um Zero-ETL-Integrationen zu erstellen und zu verwalten, müssen Sie die entsprechenden IAM-Berechtigungen, () Verschlüsselungsschlüssel und Ressourcenrichtlinien konfigurieren. AWS Key Management Service AWS KMS Dieser Abschnitt enthält Anleitungen zur Einrichtung der erforderlichen Sicherheitskomponenten.

Voraussetzungen

Bevor Sie eine Zero-ETL-Integration erstellen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein IAM-Benutzer oder eine IAM-Rolle mit den entsprechenden Berechtigungen zum Erstellen und Verwalten von Integrationen

  • Konfigurieren Sie AWS DMS Quellendpunkte für Ihre selbstverwalteten Datenbanken. Weitere Informationen finden Sie unter Konfiguration der Quelldatenbank vor dem Erstellen der Integration.

  • Ein von Amazon Redshift bereitgestellter Cluster als Ziel

    Anmerkung

    Amazon Redshift Serverless kann nicht als Ziel für Zero-ETL-Integrationen aus selbstverwalteten Quellen verwendet werden.

  • Netzwerkkonfiguration einschließlich VPC-Subnetzen und Sicherheitsgruppen

Erstellen eines KMS-Schlüssels

Erstellen Sie zunächst einen vom Kunden verwalteten AWS KMS Schlüssel zum Verschlüsseln von Daten in Ihrer Zero-ETL-Integration. Im folgenden Beispiel wird ein symmetrischer Verschlüsselungsschlüssel erstellt:

aws kms create-key \ --description "On-prem Zero-ETL Integration Encryption Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --region region

Notieren Sie sich das KeyId und Arn aus der Antwort, da Sie es benötigen, wenn Sie die Schlüsselrichtlinie konfigurieren und die Integration erstellen.

Beispielausgabe:

{ "KeyMetadata": { "AWSAccountId": "account-id", "KeyId": "4e2c14f8-7abe-4aec-851a-379f6ed973a8", "Arn": "arn:aws:kms:region:account-id:key/4e2c14f8-7abe-4aec-851a-379f6ed973a8", "CreationDate": 1763155061.148, "Enabled": true, "Description": "Zero-ETL Integration Encryption Key", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } }

Konfiguration der KMS-Schlüsselrichtlinie

Nachdem Sie den KMS-Schlüssel erstellt haben, konfigurieren Sie die Schlüsselrichtlinie so, dass Amazon Redshift und die AWS Glue Dienste den Schlüssel für Verschlüsselungs- und Entschlüsselungsvorgänge verwenden können. Die Schlüsselrichtlinie muss den Dienstprinzipalen die erforderlichen Berechtigungen gewähren und den Verschlüsselungskontext enthalten, der bei der Integrationserstellung verwendet wird.

Das folgende Beispiel zeigt eine wichtige Richtlinie für Zero-ETL-Integrationen:

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift and glue service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:context-key": "context-value" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant", "GenerateDataKeyWithoutPlaintext", "ReEncryptTo" ] } } } ] }

Die kms:EncryptionContext Bedingung muss dem zusätzlichen Verschlüsselungskontext entsprechen, den Sie beim Erstellen der Integration angegeben haben. Sie können die Schlüsselrichtlinie mithilfe der AWS KMS Konsole oder mit dem folgenden CLI-Befehl aktualisieren:

aws kms put-key-policy \ --key-id key-id \ --policy-name default \ --policy file://kms-key-policy.json

Einen IAM-Benutzer erstellen und konfigurieren AWS CLI

Erstellen Sie einen IAM-Benutzer, der für die Verwaltung von Zero-ETL-Integrationen verwendet wird, und konfigurieren Sie die CLI mit den AWS entsprechenden Anmeldeinformationen.

  1. Erstellen Sie einen IAM-Benutzer:

    aws iam create-user --user-name cli-user
  2. Erstellen Sie Zugriffsschlüssel für den Benutzer:

    aws iam create-access-key --user-name cli-user

    Speichern Sie die AccessKeyId und SecretAccessKey aus der Ausgabe, da Sie sie für die Konfiguration der AWS CLI benötigen.

Erstellen und Anfügen einer IAM-Richtlinie

Erstellen Sie eine IAM-Richtlinie, die Berechtigungen für Zero-ETL-Integrationsvorgänge gewährt. Die Richtlinie sollte Berechtigungen für AWS Glue,, Amazon Redshift AWS DMS und, enthalten. AWS KMS

Speichern Sie die folgende Richtlinie in einer Datei (z. B./tmp/zetl-policy.json):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ZetlGlueIntegrationAccess", "Effect": "Allow", "Action": [ "glue:CreateIntegration", "glue:ModifyIntegration", "glue:DeleteIntegration", "glue:DescribeIntegrations", "glue:DescribeInboundIntegrations" ], "Resource": "*" }, { "Sid": "DMSIntegrationAccess", "Effect": "Allow", "Action": [ "dms:CreateOutboundIntegration", "dms:ModifyOutboundIntegration", "dms:CreateEndpoint", "dms:DescribeEndpoints", "dms:ModifyEndpoint", "dms:DeleteEndpoint", "dms:TestConnection" ], "Resource": "*" }, { "Sid": "ZetlRedshiftFullAccess", "Effect": "Allow", "Action": [ "redshift:*", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "sns:CreateTopic", "sns:Get*", "sns:List*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "cloudwatch:PutMetricAlarm", "cloudwatch:EnableAlarmActions", "cloudwatch:DisableAlarmActions", "tag:GetResources", "tag:UntagResources", "tag:GetTagValues", "tag:GetTagKeys", "tag:TagResources" ], "Resource": "*" }, { "Sid": "ZetlRedshiftDataAPI", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:CancelStatement", "redshift-data:ListStatements", "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:ListDatabases", "redshift-data:ListSchemas", "redshift-data:ListTables", "redshift-data:DescribeTable" ], "Resource": "*" }, { "Sid": "ZetlKMSAccess", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ListKeys", "kms:CreateAlias", "kms:ListAliases", "kms:CreateGrant" ], "Resource": "*" }, { "Sid": "ZetlSecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "secretsmanager:GetResourcePolicy", "secretsmanager:PutResourcePolicy", "secretsmanager:ValidateResourcePolicy" ], "Resource": "*" } ] }

Erstellen Sie die Richtlinie und hängen Sie sie an den IAM-Benutzer an:

aws iam create-policy \ --policy-name ZetlCustomPolicy \ --policy-document file:///tmp/zetl-policy.json aws iam attach-user-policy \ --policy-arn arn:aws:iam::account-id:policy/ZetlCustomPolicy \ --user-name cli-user

Konfigurieren von AWS CLI-Profil

Konfigurieren Sie ein AWS CLI-Profil mit den in den vorherigen Schritten erstellten Benutzeranmeldedaten:

aws configure set aws_access_key_id ACCESS_KEY_ID --profile cli-user aws configure set aws_secret_access_key SECRET_ACCESS_KEY --profile cli-user aws configure set region region --profile cli-user aws configure set output json --profile cli-user

Testen Sie die Profilkonfiguration:

aws sts get-caller-identity --profile cli-user

Die Ausgabe sollte die Konto-ID, Benutzer-ID und ARN des Benutzers anzeigen, um zu bestätigen, dass das Profil korrekt konfiguriert ist.

Eine Redshift-Ressourcenrichtlinie erstellen

Erstellen Sie eine Amazon Redshift-Ressourcenrichtlinie, um den AWS DMS Quellendpunkt für die Erstellung eingehender Integrationen mit Ihrem Amazon Redshift-Namespace zu autorisieren. Diese Richtlinie ist an den Amazon Redshift-Namespace angehängt und steuert, welche Quellen Daten in diesen replizieren können.

Das folgende Beispiel zeigt, wie eine Ressourcenrichtlinie für einen Amazon Redshift-Namespace erstellt wird:

aws redshift put-resource-policy \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["redshift.amazonaws.com"] }, "Action": ["redshift:AuthorizeInboundIntegration"], "Resource": "arn:aws:redshift:region:account-id:namespace:namespace-id", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id" } } }, { "Effect": "Allow", "Principal": { "AWS": "account-id" }, "Action": [ "redshift:CreateInboundIntegration", "redshift:ModifyInboundIntegration" ], "Resource": "arn:aws:redshift:region:account-id:namespace:namespace-id" } ] }' \ --resource-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --region region

Ersetzen die folgenden Platzhalter:

  • region— Die AWS Region, in der sich Ihre Ressourcen befinden

  • account-id— Deine AWS Konto-ID

  • endpoint-id— Die ID Ihres AWS DMS Quellendpunkts

  • namespace-id— Die ID Ihres Amazon Redshift-Namespaces

Beispiel: Erstellen einer Zero-ETL-Integration mit Verschlüsselung

Nachdem Sie die erforderlichen Berechtigungen und Verschlüsselungsschlüssel eingerichtet haben, können Sie mithilfe der API eine Zero-ETL-Integration erstellen. AWS Glue Das folgende Beispiel zeigt die Erstellung einer Integration von einer MySQL-Quelle zu einem Amazon Redshift-Ziel mit KMS-Verschlüsselung:

aws glue create-integration \ --integration-name mysql-onprem-integration \ --source-arn arn:aws:dms:region:account-id:endpoint:source-endpoint-id \ --target-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --description "MySQL to Redshift integration" \ --integration-config '{"SourceProperties":{"SubnetIds":"subnet-id1,subnet-id2,subnet-id3","VpcSecurityGroupIds":"sg-id"}}' \ --data-filter "include: mysql.*" \ --kms-key-id arn:aws:kms:region:account-id:key/key-id \ --additional-encryption-context '{"context-key": "context-value"}' \ --profile cli-user \ --region region

Der Befehl umfasst die folgenden Schlüsselparameter:

  • --integration-name— Ein eindeutiger Name für Ihre Integration

  • --source-arn— Der ARN Ihres AWS DMS Quellendpunkts

  • --target-arn— Der ARN Ihres Amazon Redshift-Namespaces

  • --integration-config— Netzwerkkonfiguration einschließlich Subnetz-IDs und Sicherheitsgruppen

  • --data-filter— Gibt an, welche Schemas und Tabellen repliziert werden sollen

  • --kms-key-id— Der ARN des AWS KMS Schlüssels für die Verschlüsselung

  • --additional-encryption-context— Schlüssel-Wert-Paare im Verschlüsselungskontext, die der KMS-Schlüsselrichtlinie entsprechen müssen (z. B.) {"context-key": "context-value"}

  • --profile— Das zu AWS verwendende CLI-Profil (das zuvor erstellte CLI-User-Profil)

Nach erfolgreicher Erstellung gibt der Befehl die Integrationsdetails zurück, einschließlich des Integrations-ARN, des Status und der Konfigurationsparameter. Beispielausgabe:

{ "SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id", "TargetArn": "arn:aws:redshift:region:account-id:namespace:namespace-id", "IntegrationName": "mysql-onprem-integration", "IntegrationArn": "arn:aws:glue:region:account-id:integration:integration-id", "KmsKeyId": "arn:aws:kms:region:account-id:key/key-id", "AdditionalEncryptionContext": { "context-key": "context-value" }, "Status": "CREATED", "CreateTime": 1763234086.001, "DataFilter": "include: mysql.*", "IntegrationConfig": { "SourceProperties": { "SubnetIds": "subnet-id1,subnet-id2,subnet-id3", "VpcSecurityGroupIds": "sg-id" } } }

Bewährte Methoden für die Gewährleistung der Sicherheit

Beachten Sie beim Einrichten von Zero-ETL-Integrationen die folgenden bewährten Sicherheitsmethoden:

  • Verwenden Sie den Zugriff mit den geringsten Rechten — Gewähren Sie nur die Mindestberechtigungen, die für die Erstellung und Verwaltung von Integrationen erforderlich sind. Erwägen Sie, wenn möglich, Berechtigungen auf Ressourcenebene zu verwenden.

  • Verschlüsselung aktivieren — Verwenden Sie immer vom Kunden verwaltete AWS KMS Schlüssel, um Integrationsdaten zu verschlüsseln. Geben Sie den Verschlüsselungskontext für zusätzliche Sicherheit an.

  • Anmeldedaten regelmäßig rotieren — Wenn Sie IAM-Benutzerzugriffsschlüssel verwenden, rotieren Sie diese regelmäßig. Erwägen Sie stattdessen die Verwendung von IAM-Rollen mit temporären Anmeldeinformationen.

  • Zugriff überwachen — Wird verwendet AWS CloudTrail , um API-Aufrufe im Zusammenhang mit der Erstellung und Verwaltung der Integration zu überwachen.

  • Netzwerkzugriff einschränken — Konfigurieren Sie VPC-Sicherheitsgruppen, um den Netzwerkzugriff auf nur benötigte Ressourcen zu beschränken.

  • Verwenden Sie Ressourcenrichtlinien — Implementieren Sie Amazon Redshift-Ressourcenrichtlinien, um zu steuern, welche Quellen Integrationen mit Ihrem Data Warehouse erstellen können.

  • Ressourcen taggen — Versehen Sie Integrationen und verwandte Ressourcen mit Tags, um die Organisation und Kostenverfolgung zu verbessern.