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
-
Informationen zu den Konfigurationsanforderungen finden Sie unter Verwenden einer Microsoft SQL Server-Datenbank als Quelle für AWS DMS.
-
Informationen zu den CDC-Anforderungen (Change Data Capture) finden Sie unter Erfassung von Datenänderungen für die fortlaufende Replikation von 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
-
Informationen zu den Konfigurationsanforderungen und Einschränkungen finden Sie unter Eine MySQL-compatible Datenbank als Quelle für verwenden für AWS DMS.
PostgreSQL
-
Informationen zu Konfigurationsanforderungen und Einschränkungen finden Sie unter Eine PostgreSQL-Datenbank als AWS DMS Quelle verwenden.
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 \ --regionregion
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-idkey-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.
-
Erstellen Sie einen IAM-Benutzer:
aws iam create-user --user-namecli-user -
Erstellen Sie Zugriffsschlüssel für den Benutzer:
aws iam create-access-key --user-namecli-userSpeichern Sie die
AccessKeyIdundSecretAccessKeyaus 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-namecli-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_idACCESS_KEY_ID--profilecli-useraws configure set aws_secret_access_keySECRET_ACCESS_KEY--profilecli-useraws configure set regionregion--profilecli-useraws configure set output json --profilecli-user
Testen Sie die Profilkonfiguration:
aws sts get-caller-identity --profilecli-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\ --regionregion
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-namemysql-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"}' \ --profilecli-user\ --regionregion
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.