AWSZero-ETL-Integration für selbstverwaltete Datenbankquellen - AWSDatabase Migration Service

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.

AWSZero-ETL-Integration für selbstverwaltete Datenbankquellen

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

Die Zero-ETL-Integration bietet die folgenden Vorteile:

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

  • Eliminierung komplexer ETL-Pipelines — Es müssen keine kundenspezifischen Datenintegrationslösungen erstellt und verwaltet werden.

  • Geringerer Betriebsaufwand — Automatisierte Einrichtung und Verwaltung durch AWSAPIs.

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

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

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

Sie können bestehende 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 Service erstellt. AWS DMS Diese Ressourcen, einschließlich der Zero-ETL-Engine, werden verwendet, um Volllast- und kontinuierliche Datenänderungsprozesse zu initiieren und Daten mit der Amazon Redshift 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 Für Dateningenieure bieten Zero-ETL-Integrationen Zugriff auf zeitkritische Daten, die andernfalls durch sporadische Fehler in komplexen Daten-Pipelines verzögert werden 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 Abonnements für Amazon Redshift Redshift-Ereignisbenachrichtigungen erstellen, um automatisch benachrichtigt zu werden, wenn Probleme bei einer Zero-ETL-Integration auftreten. Eine Liste der integrationsbezogenen Ereignisbenachrichtigungen finden Sie unter Benachrichtigungen über Zero-ETL-Integrationsereignisse mit Amazon. EventBridge Am einfachsten können Sie ein Abonnement mit der Amazon Simple Notification Service-Konsole erstellen. Informationen zum Erstellen und Abonnieren eines Amazon-SNS-Themas finden Sie unter Erste Schritte mit Amazon SNS im Amazon-Simple-Notification-Service-Entwicklerhandbuch.

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

  • Bestehende AWS DMS Quellendpunkte für Ihre selbstverwalteten Datenbanken

  • Ein von Amazon Redshift bereitgestellter Cluster oder serverloser Namespace als Ziel

  • Netzwerkkonfiguration einschließlich VPC-Subnetzen und Sicherheitsgruppen

Erstellen eines KMS-Schlüssels

Erstellen Sie zunächst einen vom Kunden verwalteten AWS KMS Schlüssel zur Verschlüsselung 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 die KeyId und Arn aus der Antwort, da Sie sie 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 AWS Glue Services den Schlüssel für Verschlüsselungs- und Entschlüsselungsvorgänge verwenden können. Die Schlüsselrichtlinie muss den Serviceprinzipalen die erforderlichen Berechtigungen gewähren und den Verschlüsselungskontext enthalten, der bei der Erstellung der Integration 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::account-id: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 bei der Erstellung der Integration angegeben haben. Sie können die Schlüsselrichtlinie über die AWS KMS Konsole oder den 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 CLI konfigurieren AWS

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

  1. Erstellen Sie einen IAM-Benutzer:

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

    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ürAWS Glue,AWS DMS, Amazon RedshiftAWS KMS, und enthalten.

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:*", "redshift-serverless:*", "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 fügen Sie sie dem IAM-Benutzer hinzu:

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

Konfiguration des AWS CLI-Profils

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

In der Ausgabe sollten die Konto-ID, die Benutzer-ID und der ARN des Benutzers angezeigt werden, um zu bestätigen, dass das Profil korrekt konfiguriert ist.

Eine Redshift-Ressourcenrichtlinie erstellen

Erstellen Sie eine Amazon Redshift Redshift-Ressourcenrichtlinie, um den AWS DMS Quellendpunkt zu autorisieren, eingehende Integrationen mit Ihrem Amazon Redshift Redshift-Namespace zu erstellen. Diese Richtlinie ist an den Amazon Redshift 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 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"], "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 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— Ihre AWS Konto-ID

  • endpoint-id— Die ID Ihres AWS DMS Quellendpunkts

  • namespace-id— Die ID Ihres Amazon Redshift 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 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 Redshift-Namespace

  • --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 für den Verschlüsselungskontext, die der KMS-Schlüsselrichtlinie entsprechen müssen (z. B.) {"context-key": "context-value"}

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

Nach erfolgreicher Erstellung gibt der Befehl die Integrationsdetails einschließlich des Integrations-ARN, des Status und der Konfigurationsparameter zurück. 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 bei der Einrichtung 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 für zusätzliche Sicherheit den Verschlüsselungskontext an.

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

  • Zugriff überwachen — Wird verwendetAWS CloudTrail, um API-Aufrufe im Zusammenhang mit der Erstellung und Verwaltung von Integrationen zu überwachen.

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

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

  • Tag-Ressourcen — Wenden Sie Tags auf Integrationen und verwandte Ressourcen an, um die Organisation und Kostenverfolgung zu verbessern.