

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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
<a name="zero-etl-setting-up.create-integration-ddb"></a>

Bevor Sie eine Null-ETL-Integration erstellen, sollten Sie sich mit den unter [Überlegungen bei der Verwendung von Null-ETL-Integrationen mit Amazon Redshift](zero-etl.reqs-lims.md) 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](#zero-etl-signin-iam-policy).

1. [Konfigurieren Sie in der DynamoDB-Konsole Ihre DynamoDB-Tabelle so](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/RedshiftforDynamoDB-zero-etl.html#RedshiftforDynamoDB-zero-etl-prereqs)*, 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.*

1. Über die Amazon-Redshift-Konsole: [Erstellen und Konfigurieren eines Ziel-Data-Warehouse in Amazon Redshift](zero-etl-setting-up.rs-data-warehouse.md). 
   + Von der AWS CLI oder der Amazon Redshift Redshift-Konsole aus:[Aktivieren der Unterscheidung zwischen Groß- und Kleinschreibung für Ihr Data Warehouse](zero-etl-setting-up.case-sensitivity.md).
   + Über die Amazon-Redshift-Konsole: [Konfigurieren der Autorisierung für Ihr Amazon Redshift Data Warehouse](zero-etl-using.redshift-iam.md).

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

1. 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](zero-etl-using.creating-db.md).

1. 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](zero-etl-using.querying-and-creating-materialized-views.md).

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.

1. 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](amazon-redshift-tagging.md).
   + 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](#zero-etl.create-encrypt).

     Wenn Sie die Integration verschlüsseln, können Sie auch **zusätzliche Verschlüsselungskontexte** hinzufügen. Weitere Informationen finden Sie unter [Verschlüsselungskontext](#zero-etl.add-encryption-context).

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

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

1. 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.

1. 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.

1. 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 erstellen AWS 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
<a name="zero-etl-signin-iam-policy"></a>

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
<a name="zero-etl.create-encrypt"></a>

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.

### Beispiele für wichtige Schlüsselrichtlinienerklärungen
<a name="zero-etl.kms-sample-policy"></a>

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 [https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service) 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](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html) im *AWS Key Management Service -Entwicklerhandbuch*.

## Verschlüsselungskontext
<a name="zero-etl.add-encryption-context"></a>

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](https://docs.aws.amazon.com//kms/latest/developerguide/encrypt_context.html) 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](https://docs.aws.amazon.com/kms/latest/developerguide/create-grant-overview.html#grant-constraints) im *AWS Key Management Service -Entwicklerhandbuch*.