Erstellen einer Null-ETL-Integration für DynamoDB - Amazon Redshift

Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blog-Posting.

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.

Erstellen einer Null-ETL-Integration für DynamoDB

Bevor Sie eine Null-ETL-Integration erstellen, sollten Sie sich mit den unter Überlegungen bei der Verwendung von Null-ETL-Integrationen mit Amazon Redshift beschriebenen Überlegungen und Anforderungen vertraut machen. Folgen Sie diesem allgemeinen Ablauf, um eine Null-ETL-Integration von DynamoDB zu Amazon Redshift zu erstellen

So replizieren Sie mit einer Null-ETL-Integration DynamoDB-Daten zu Amazon Redshift
  1. Überprüfen Sie, ob Ihre Anmeldeinformationen Berechtigungen für Null-ETL-Integrationen mit Amazon Redshift und DynamoDB enthalten. Eine IAM-Beispielrichtlinie finden Sie unter IAM-Richtlinie für die Arbeit mit Null-ETL-Integrationen für DynamoDB.

  2. Konfigurieren Sie in der DynamoDB-Konsole Ihre DynamoDB-Tabelle so, dass sie über Berechtigungen für point-in-time Wiederherstellung (PITR), Ressourcenrichtlinien, identitätsbasierte Richtlinien und Verschlüsselungsschlüssel verfügt, wie im Amazon DynamoDB DynamoDB-Entwicklerhandbuch beschrieben.

  3. Über die Amazon-Redshift-Konsole: Erstellen und Konfigurieren eines Ziel-Data-Warehouse in Amazon Redshift.

  4. Erstellen Sie in der Konsole von Amazon Redshift die Null-ETL-Integration wie weiter unten in diesem Thema beschrieben.

  5. Erstellen Sie in der Amazon-Redshift-Konsole die Zieldatenbank in Ihrem Data Warehouse in Amazon Redshift. Weitere Informationen finden Sie unter Erstellen von Zieldatenbanken in Amazon Redshift.

  6. Fragen Sie über die Amazon-Redshift-Konsole Ihre replizierten Daten im Data Warehouse in Amazon Redshift ab. Weitere Informationen finden Sie unter Abfragen von replizierten Daten in Amazon Redshift.

In diesem Schritt erstellen Sie eine Null-ETL-Integration für Amazon DynamoDB mit Amazon Redshift.

Amazon Redshift console
So erstellen Sie eine Null-ETL-Integration für Amazon DynamoDB mit Amazon Redshift über die Amazon-Redshift-Konsole
  1. Wählen Sie in der Amazon-Redshift-Konsole Null-ETL-Integrationen aus. Wählen Sie im Bereich mit der Liste der Null-ETL-Integrationen Null-ETL-Integration erstellen und dann DynamoDB-Integration erstellen aus.

  2. Geben Sie auf den Seiten zum Erstellen einer Integration wie folgt Informationen zur Integration ein:

    • Geben Sie einen Integrationsnamen ein. Dies ist ein eindeutiger Name, der als Verweis auf Ihre Integration verwendet werden kann.

    • Geben Sie eine Beschreibung ein. Sie beschreibt die Daten, die von der Quelle zum Ziel repliziert werden sollen.

    • Wählen Sie die DynamoDB-Quelltabelle — Es kann eine DynamoDB-Tabelle ausgewählt werden. Point-in-timeRecovery (PITR) muss für die Tabelle aktiviert sein. Es werden nur Tabellen mit einer Tabellengröße bis zu 100 Tebibyte (TiB) angezeigt. Die DynamoDB-Quelltabelle muss verschlüsselt sein. Die Quelle muss außerdem über eine Ressourcenrichtlinie mit autorisierten Prinzipalen und Integrationsquellen verfügen. Wenn diese Richtlinie nicht korrekt ist, wird Ihnen die Option Reparieren angezeigt.

    • Wählen Sie das Data Warehouse in Amazon Redshift aus. Dabei kann es sich um einen von Amazon Redshift bereitgestellten Cluster oder eine Redshift-Serverless-Arbeitsgruppe handeln. Wenn sich das Ziel in Amazon Redshift im selben Konto befindet, können Sie das Ziel auswählen. Wenn sich das Ziel in einem anderen Konto befindet, geben Sie den ARN für das Redshift-Data-Warehouse an. Das Ziel muss über eine Ressourcenrichtlinie mit autorisierten Prinzipalen und Integrationsquelle verfügen und der Parameter enable_case_sensitive_identifier muss auf „true“ festgelegt sein. Wenn Sie nicht über die richtigen Ressourcenrichtlinien im Ziel verfügen und sich das Ziel im selben Konto befindet, können Sie die Option Reparieren auswählen, um die Ressourcenrichtlinien während der Erstellung der Integration automatisch anzuwenden. Wenn sich das Ziel in einem anderen AWS-Konto befindet, müssen Sie die Ressourcenrichtlinie manuell auf das Data Warehouse in Amazon Redshift anwenden. Wenn im Ziel-Data-Warehouse in Amazon Redshift nicht die richtige Parametergruppenoption enable_case_sensitive_identifier als true konfiguriert ist, können Sie die Option Reparieren auswählen, um diese Parametergruppe automatisch zu aktualisieren und das Data Warehouse während der Erstellung der Integration neu zu starten.

    • Sie können bis zu 50 Tag-Schlüssel mit einem optionalen Wert eingeben, um zusätzliche Metadaten zur Integration bereitzustellen. Weitere Informationen finden Sie unter Markieren von Ressourcen in Amazon Redshift.

    • Wählen Sie Optionen für die Verschlüsselung aus, um die Integration zu verschlüsseln. Weitere Informationen finden Sie unter Verschlüsseln von DynamoDB-Integrationen mit kundenseitig verwalteten Schlüsseln.

      Wenn Sie die Integration verschlüsseln, können Sie auch zusätzliche Verschlüsselungskontexte hinzufügen. Weitere Informationen finden Sie unter Verschlüsselungskontext.

  3. Es wird eine Übersichtsseite angezeigt, auf der Sie DynamoDB-Integration erstellen auswählen können.

  4. Es wird eine Fortschrittsseite angezeigt, auf der Sie den Fortschritt der verschiedenen Aufgaben während der Erstellung der Null-ETL-Integration verfolgen können.

  5. Nachdem die Integration erstellt wurde und aktiv ist, wählen Sie auf der Detailseite der Integration Mit Datenbank verbinden aus. Während der ersten Erstellung Ihres Data Warehouse in Amazon Redshift wurde auch eine Datenbank erstellt. Sie müssen eine Verbindung zu einer beliebigen Datenbank im Ziel-Data Warehouse herstellen, um eine weitere Datenbank für die Integration zu erstellen. Stellen Sie auf der Seite Mit Datenbank verbinden fest, ob Sie eine aktuelle Verbindung verwenden können, und wählen Sie eine Methode für die Authentifizierung aus. Geben Sie abhängig von der Authentifizierungsmethode Informationen ein, um eine Verbindung zu einer vorhandenen Datenbank im Ziel herzustellen. Diese Authentifizierungsinformationen können die vorhandenen Werte für Datenbankname (in der Regel dev) und Datenbankbenutzer enthalten, die angegeben wurden, als die Datenbank zusammen mit dem Data Warehouse in Amazon Redshift erstellt wurde.

  6. Wählen Sie nach der Verbindung mit einer Datenbank Datenbank aus Integration erstellen aus, um die Datenbank zu erstellen, die die Daten aus der Quelle empfängt. Wenn Sie die Datenbank erstellen, geben Sie die Integrations-ID, den Data-Warehouse-Namen und den Datenbanknamen an.

  7. Sobald der Integrationsstatus und die Zieldatenbank den Status Active haben, werden die Daten aus Ihrer DynamoDB-Tabelle zur Zieltabelle repliziert. Wenn Sie der Quelle Daten hinzufügen, werden sie automatisch zum Ziel-Data-Warehouse in Amazon Redshift repliziert.

AWS CLI

Um eine Amazon DynamoDB Zero-ETL-Integration mit Amazon Redshift mithilfe von zu erstellenAWS CLI, verwenden Sie den create-integration Befehl mit den folgenden Optionen:

  • integration-name – Geben Sie einen Namen für die Integration an.

  • source-arn – Geben Sie den ARN der DynamoDB-Quelle an.

  • target-arn – Geben Sie den Namespace-ARN des von Amazon Redshift bereitgestellten Clusters oder des Redshift-Serverless-Arbeitsgruppenziels an.

Im folgenden Beispiel wird eine Integration erstellt, indem der Integrationsname, der Quell-ARN und der Ziel-ARN angegeben werden. Die Integration ist nicht verschlüsselt.

aws redshift create-integration \ --integration-name ddb-integration \ --source-arn arn:aws:dynamodb:us-east-1:123456789012:table/books \ --target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 { "Status": "creating", "IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Errors": [], "ResponseMetadata": { "RetryAttempts": 0, "HTTPStatusCode": 200, "RequestId": "132cbe27-fd10-4f0a-aacb-b68f10bb2bfb", "HTTPHeaders": { "x-amzn-requestid": "132cbe27-fd10-4f0a-aacb-b68f10bb2bfb", "date": "Sat, 24 Aug 2024 05:44:08 GMT", "content-length": "934", "content-type": "text/xml" } }, "Tags": [], "CreateTime": "2024-08-24T05:44:08.573Z", "KMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333", "AdditionalEncryptionContext": {}, "TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "IntegrationName": "ddb-integration", "SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/books" }

Im folgenden Beispiel wird eine Integration erstellt, bei der ein kundenseitig verwalteter Schlüssel zur Verschlüsselung verwendet wird. Vor Erstellung der Integration:

  • Erstellen Sie einen kundenseitig verwalteten Schlüssel (im Beispiel „CMCMK“) im selben Konto (im Beispiel „AccountA“) in der DynamoDB-Quelltabelle.

  • Stellen Sie sicher, dass die user/role (im Beispiel „RoleA“ genannte) verwendet wird, um die kms:DescribeKey Integrationsrechte kms:CreateGrant und -berechtigungen für diesen KMS-Schlüssel zu erstellen.

  • Fügen Sie der Schlüsselrichtlinie Folgendes hinzu.

{ "Sid": "Enable RoleA to create grants with key", "Effect": "Allow", "Principal": { "AWS": "RoleA-ARN" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { // Add "StringEquals" condition if you plan to provide additional encryption context // for the zero-ETL integration. Ensure that the key-value pairs added here match // the key-value pair you plan to use while creating the integration. // Remove this if you don't plan to use additional encryption context "StringEquals": { "kms:EncryptionContext:context-key1": "context-value1" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Enable RoleA to describe key", "Effect": "Allow", "Principal": { "AWS": "RoleA-ARN" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Allow use by RS SP", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "*" }
aws redshift create-integration \ --integration-name ddb-integration \ --source-arn arn:aws:dynamodb:us-east-1:123456789012:table/books \ --target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \ --kms-key-id arn:aws:kms:us-east-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333 \ --additional-encryption-context key33=value33 // This matches the condition in the key policy. { "IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "IntegrationName": "ddb-integration", "SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/books", "SourceType": "dynamodb", "TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Status": "creating", "Errors": [], "CreateTime": "2024-10-02T18:29:26.710Z", "KMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333", "AdditionalEncryptionContext": { "key33": "value33" }, "Tags": [] }

IAM-Richtlinie für die Arbeit mit Null-ETL-Integrationen für DynamoDB

Wenn Sie Null-ETL-Integrationen erstellen, müssen Ihre Anmeldeinformationen über Berechtigungen für DynamoDB- und Amazon-Redshift-Aktionen sowie die Ressourcen verfügen, die als Quellen und Ziele der Integration verwendet werden. Das folgende Beispiel zeigt die erforderlichen Mindestberechtigungen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:ListTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamodb:GetResourcePolicy", "dynamodb:PutResourcePolicy", "dynamodb:UpdateContinuousBackups" ], "Resource": [ "arn:aws:dynamodb:us-east-1:111122223333:table/my-ddb-table" ] }, { "Sid": "AllowRedshiftDescribeIntegration", "Effect": "Allow", "Action": [ "redshift:DescribeIntegrations" ], "Resource": "*" }, { "Sid": "AllowRedshiftCreateIntegration", "Effect": "Allow", "Action": "redshift:CreateIntegration", "Resource": "arn:aws:redshift:us-east-1:111122223333:integration:*" }, { "Sid": "AllowRedshiftModifyDeleteIntegration", "Effect": "Allow", "Action": [ "redshift:ModifyIntegration", "redshift:DeleteIntegration" ], "Resource": "arn:aws:redshift:us-east-1:111122223333:integration:<uuid>" }, { "Sid": "AllowRedshiftCreateInboundIntegration", "Effect": "Allow", "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift:us-east-1:111122223333:namespace:<uuid>" } ] }

Verschlüsseln von DynamoDB-Integrationen mit kundenseitig verwalteten Schlüsseln

Wenn Sie AWS-eigener Schlüssel beim Erstellen einer DynamoDB-Zero-ETL-Integration einen benutzerdefinierten KMS-Schlüssel anstelle eines angeben, muss die Schlüsselrichtlinie dem Amazon Redshift Service Principal Zugriff auf die Aktion gewähren. CreateGrant Darüber hinaus muss sie dem Konto oder der Rolle des Anforderers die Berechtigung erteilen, die Aktionen DescribeKey und CreateGrant auszuführen.

Die folgenden Beispielerklärungen für Schlüsselrichtlinien zeigen die Berechtigungen, die in der Richtlinie erforderlich sind. Einige Beispiele enthalten Kontextschlüssel, um den Umfang der Berechtigungen weiter zu reduzieren.

Die folgende Richtlinienerklärung ermöglicht dem Konto oder der Rolle des Anforderers den Abruf von Informationen zu einem KMS-Schlüssel.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }

Die folgende Richtlinienerklärung ermöglicht dem Konto oder der Rolle des Anforderers die Hinzufügung einer Berechtigung zu einem KMS-Schlüssel. Der Bedingungsschlüssel kms:ViaService schränkt die Verwendung des KMS-Schlüssels auf Anforderungen von Amazon Redshift ein.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService":"redshift.{region}.amazonaws.com" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }

Die folgende Richtlinienerklärung ermöglicht dem Prinzipal des Amazon-Redshift-Service die Hinzufügung einer Berechtigung zu einem KMS-Schlüssel.

{ "Effect":"Allow", "Principal":{ "Service":"redshift.amazonaws.com" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "aws:SourceAccount":"{account-ID}" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] }, "ArnLike":{ "aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*" } } }

Weitere Informationen finden Sie unter Erstellen einer Schlüsselrichtlinie im AWS Key Management Service-Entwicklerhandbuch.

Verschlüsselungskontext

Wenn Sie eine Null-ETL-Integration verschlüsseln, können Sie Schlüssel-Wert-Paare als zusätzlichen Verschlüsselungskontext hinzufügen. Sie sollten diese Schlüssel-Wert-Paare hinzufügen, um zusätzliche kontextbezogene Informationen zu den Daten hinzuzufügen, die repliziert werden. Weitere Informationen finden Sie unter Verschlüsselungskontext im AWS Key Management Service-Entwicklerhandbuch.

Amazon Redshift fügt zusätzlich zu den von Ihnen hinzugefügten Paaren die folgenden Verschlüsselungskontextpaare hinzu:

  • aws:redshift:integration:arn - IntegrationArn

  • aws:servicename:id - Redshift

Dadurch wird die Gesamtzahl der Paare, die Sie hinzufügen können, von 8 auf 6 reduziert, was zur Gesamtzeichenbegrenzung der Erteilungseinschränkung beiträgt. Weitere Informationen finden Sie unter Verwenden von Erteilungseinschränkungen im AWS Key Management Service-Entwicklerhandbuch.