

AWS Data Pipeline ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Data Pipeline können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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.

# Daten mithilfe von Amazon Redshift nach Amazon Redshift kopieren AWS Data Pipeline
<a name="dp-copydata-redshift"></a>

Dieses Tutorial führt Sie durch den Prozess der Erstellung einer Pipeline, die regelmäßig Daten von Amazon S3 nach Amazon Redshift verschiebt, indem Sie entweder die Vorlage **Copy to Redshift** in der AWS Data Pipeline Konsole oder eine Pipeline-Definitionsdatei mit der AWS Data Pipeline CLI verwenden.

Amazon S3 ist ein Webservice, mit dem Sie Daten in der Cloud speichern können. Weitere Informationen finden Sie im [Benutzerhandbuch für Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/). 

Amazon Redshift ist ein Data-Warehouse-Service in der Cloud. Weitere Informationen finden Sie im [Amazon Redshift Management Guide](https://docs.aws.amazon.com/redshift/latest/mgmt/).

Für dieses Tutorial gibt es mehrere Voraussetzungen. Nachdem Sie die folgenden Schritte ausgeführt haben, können Sie das Tutorial über die Konsole oder die Befehlszeile fortsetzen.

**Topics**
+ [Bevor Sie beginnen: Konfigurieren Sie COPY-Optionen und laden Sie Daten](dp-learn-copy-redshift.md)
+ [Pipeline einrichten, Sicherheitsgruppe erstellen und Amazon Redshift Redshift-Cluster erstellen](dp-copydata-redshift-prereq.md)
+ [Daten über die Befehlszeile nach Amazon Redshift kopieren](dp-copydata-redshift-cli.md)

# Bevor Sie beginnen: Konfigurieren Sie COPY-Optionen und laden Sie Daten
<a name="dp-learn-copy-redshift"></a>

Bevor Sie Daten nach Amazon Redshift innerhalb kopieren, stellen Sie sicher AWS Data Pipeline, dass Sie: 
+ Daten aus Amazon S3 laden.
+ Richten Sie die `COPY` Aktivität in Amazon Redshift ein. 

Wenn Sie diese Optionen aktiviert und erfolgreich Daten geladen haben, übertragen Sie diese Optionen in AWS Data Pipeline, um den Kopiervorgang darin auszuführen.

 `COPY`Optionen finden Sie unter [COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html) im Amazon Redshift *Database Developer Guide*. 

Schritte zum Laden von Daten aus Amazon S3 finden Sie unter [Daten aus Amazon S3 laden](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html) im Amazon Redshift *Database Developer Guide*. 

Der folgende SQL-Befehl in Amazon Redshift erstellt beispielsweise eine neue Tabelle mit dem Namen `LISTING` und kopiert Beispieldaten aus einem öffentlich verfügbaren Bucket in Amazon S3. 

Ersetzen Sie den `<iam-role-arn>` und die Region durch Ihre eigenen Werte. 

Einzelheiten zu diesem Beispiel finden Sie unter [Beispieldaten aus Amazon S3 laden im Amazon](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-create-sample-db.html) Redshift *Getting Started Guide*.

```
create table listing(
	listid integer not null distkey,
	sellerid integer not null,
	eventid integer not null,
	dateid smallint not null  sortkey,
	numtickets smallint not null,
	priceperticket decimal(8,2),
	totalprice decimal(8,2),
	listtime timestamp);

copy listing from 's3://awssampledbuswest2/tickit/listings_pipe.txt' 
credentials 'aws_iam_role=<iam-role-arn>' 
delimiter '|' region 'us-west-2';
```

# Pipeline einrichten, Sicherheitsgruppe erstellen und Amazon Redshift Redshift-Cluster erstellen
<a name="dp-copydata-redshift-prereq"></a>

**So richten Sie Ihr System für das Tutorial ein**

1. Führen Sie die Aufgaben unter au [Einrichtung für AWS Data Pipeline](dp-get-setup.md).

1. Erstellen einer Sicherheitsgruppe.

   1. Öffnen Sie die Amazon EC2-Konsole.

   1. Klicken Sie im Navigationsbereich auf **Security Groups**.

   1. Klicken Sie auf **Create Security Group**.

   1. Geben Sie einen Namen und eine Beschreibung für die Sicherheitsgruppe an.

   1. [EC2-Classic] Wählen Sie für `No VPC`VPC** ** aus.

   1. [EC2-VPC] Wählen Sie für **VPC** die ID Ihres VPC aus.

   1. Klicken Sie auf **Create**.

1. [EC2-Classic] Erstellen Sie eine Amazon Redshift Redshift-Cluster-Sicherheitsgruppe und geben Sie die Amazon EC2-Sicherheitsgruppe an.

   1. Öffnen Sie die Amazon-Redshift-Konsole.

   1. Klicken Sie im Navigationsbereich auf **Security Groups**.

   1. Klicken Sie auf **Create Cluster Security Group**.

   1. Geben Sie im Dialogfeld **Create Cluster Security Group** einen Namen und eine Beschreibung für die Cluster-Sicherheitsgruppe an.

   1. Klicken Sie auf den Namen der neuen Cluster-Sicherheitsgruppe.

   1. Klicken Sie auf **Add Connection Type**.

   1. Wählen Sie im Dialogfeld **Add Connection Type** die Option **EC2 Security Group** unter **Connection Type** aus, wählen Sie die Sicherheitsgruppe aus, die Sie von **EC2 Security Group Name** erstellt haben, und klicken Sie dann auf **Authorize**.

1. [EC2-VPC] Erstellen Sie eine Amazon Redshift Redshift-Cluster-Sicherheitsgruppe und geben Sie die VPC-Sicherheitsgruppe an.

   1. Öffnen Sie die Amazon EC2-Konsole.

   1. Klicken Sie im Navigationsbereich auf **Security Groups**.

   1. Klicken Sie auf **Create Security Group**.

   1. Geben Sie im Dialogfeld **Create Security Group** einen Namen und eine Beschreibung für die Sicherheitsgruppe an und wählen Sie für **VPC** die ID Ihres VPC aus.

   1. Klicken Sie auf **Add Rule**. Geben Sie den Typ, das Protokoll und den Portbereich an und geben Sie die ID der Sicherheitsgruppe in **Source** ein. Wählen Sie die Sicherheitsgruppe aus, die Sie im zweiten Schritt erstellt haben.

   1. Klicken Sie auf **Create**.

1. Nachfolgend finden Sie eine kurze Zusammenfassung der Schritte.

   Wenn Sie bereits über einen Amazon Redshift Redshift-Cluster verfügen, notieren Sie sich die Cluster-ID. 

   Um einen neuen Cluster zu erstellen und Beispieldaten zu laden, folgen Sie den Schritten unter [Erste Schritte mit Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html). Weitere Informationen zum Erstellen von Clustern finden Sie unter [Creating a Cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster) im *Amazon Redshift Management Guide*. 

   1. Öffnen Sie die Amazon-Redshift-Konsole.

   1. Klicken Sie auf **Launch Cluster**.

   1. Geben Sie die erforderlichen Details für Ihren Cluster an und klicken Sie dann auf **Continue**.

   1. Geben Sie die Knotenkonfiguration an und klicken Sie dann auf **Continue**.

   1. Wählen Sie auf der Seite für zusätzliche Konfigurationsdaten die von Ihnen erstellte Cluster-Sicherheitsgruppe aus und klicken Sie dann auf **Continue**.

   1. Überprüfen Sie die Spezifikationen für Ihren Cluster und klicken Sie dann auf **Launch Cluster**.

# Daten über die Befehlszeile nach Amazon Redshift kopieren
<a name="dp-copydata-redshift-cli"></a>

Dieses Tutorial zeigt, wie Sie Daten von Amazon S3 nach Amazon Redshift kopieren. Sie erstellen eine neue Tabelle in Amazon Redshift und verwenden sie dann, AWS Data Pipeline um Daten aus einem öffentlichen Amazon S3 S3-Bucket, der Beispieleingabedaten im CSV-Format enthält, in diese Tabelle zu übertragen. Die Protokolle werden in einem Amazon S3 S3-Bucket gespeichert, den Sie besitzen.

Amazon S3 ist ein Webservice, mit dem Sie Daten in der Cloud speichern können. Weitere Informationen finden Sie im [Benutzerhandbuch für Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/). Amazon Redshift ist ein Data-Warehouse-Service in der Cloud. Weitere Informationen finden Sie im [Amazon Redshift Management Guide](https://docs.aws.amazon.com/redshift/latest/mgmt/).

**Voraussetzungen**

Bevor Sie beginnen, müssen Sie die folgenden Schritte ausführen:

1. Installieren und konfigurieren Sie eine Befehlszeilenschnittstelle (CLI). Weitere Informationen finden Sie unter [Zugreifen AWS Data Pipeline](what-is-datapipeline.md#accessing-datapipeline).

1. Stellen Sie sicher, dass die IAM-Rollen benannt **DataPipelineDefaultResourceRole**sind **DataPipelineDefaultRole**und existieren. Die AWS Data Pipeline Konsole erstellt diese Rollen automatisch für Sie. Wenn Sie die AWS Data Pipeline Konsole nicht mindestens einmal verwendet haben, müssen Sie diese Rollen manuell erstellen. Weitere Informationen finden Sie unter [IAM-Rollen für AWS Data Pipeline](dp-iam-roles.md).

1. Richten Sie den `COPY` Befehl in Amazon Redshift ein, da dieselben Optionen funktionieren müssen, wenn Sie das Kopieren innerhalb von AWS Data Pipeline Amazon Redshift durchführen. Weitere Informationen finden Sie unter [Bevor Sie beginnen: Konfigurieren Sie COPY-Optionen und laden Sie Daten](dp-learn-copy-redshift.md).

1. Richten Sie eine Amazon Redshift Redshift-Datenbank ein. Weitere Informationen finden Sie unter [Pipeline einrichten, Sicherheitsgruppe erstellen und Amazon Redshift Redshift-Cluster erstellen](dp-copydata-redshift-prereq.md).

**Topics**
+ [Definieren Sie eine Pipeline im JSON-Format](dp-copydata-redshift-define-pipeline-cli.md)
+ [Hochladen und Aktivieren der Pipeline-Definition](dp-copydata-redshift-upload-cli.md)

# Definieren Sie eine Pipeline im JSON-Format
<a name="dp-copydata-redshift-define-pipeline-cli"></a>

Dieses Beispielszenario zeigt, wie Daten aus einem Amazon S3 S3-Bucket nach Amazon Redshift kopiert werden.

Dies ist die vollständige Pipeline-Definition-JSON-Datei, gefolgt von einer Erläuterung für jeden ihrer Abschnitte. Wir empfehlen, dass Sie einen Texteditor verwenden, mit dem Sie die Syntax von JSON-formatierten Dateien überprüfen können, und die Datei mit der Dateierweiterung `.json` benennen.

```
{
  "objects": [
    {
      "id": "CSVId1",
      "name": "DefaultCSV1",
      "type": "CSV"
    },
    {
      "id": "RedshiftDatabaseId1",
      "databaseName": "dbname",
      "username": "user",
      "name": "DefaultRedshiftDatabase1",
      "*password": "password",
      "type": "RedshiftDatabase",
      "clusterId": "redshiftclusterId"
    },
    {
      "id": "Default",
      "scheduleType": "timeseries",
      "failureAndRerunMode": "CASCADE",
      "name": "Default",
      "role": "DataPipelineDefaultRole",
      "resourceRole": "DataPipelineDefaultResourceRole"
    },
    {
      "id": "RedshiftDataNodeId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "tableName": "orders",
      "name": "DefaultRedshiftDataNode1",
      "createTableSql": "create table StructuredLogs (requestBeginTime CHAR(30) PRIMARY KEY DISTKEY SORTKEY, requestEndTime CHAR(30), hostname CHAR(100), requestDate varchar(20));",
      "type": "RedshiftDataNode",
      "database": {
        "ref": "RedshiftDatabaseId1"
      }
    },
    {
      "id": "Ec2ResourceId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "securityGroups": "MySecurityGroup",
      "name": "DefaultEc2Resource1",
      "role": "DataPipelineDefaultRole",
      "logUri": "s3://myLogs",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "type": "Ec2Resource"
    },
    {
      "id": "ScheduleId1",
      "startDateTime": "yyyy-mm-ddT00:00:00",
      "name": "DefaultSchedule1",
      "type": "Schedule",
      "period": "period",
      "endDateTime": "yyyy-mm-ddT00:00:00"
    },
    {
      "id": "S3DataNodeId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "filePath": "s3://datapipeline-us-east-1/samples/hive-ads-samples.csv",
      "name": "DefaultS3DataNode1",
      "dataFormat": {
        "ref": "CSVId1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "RedshiftCopyActivityId1",
      "input": {
        "ref": "S3DataNodeId1"
      },
      "schedule": {
        "ref": "ScheduleId1"
      },
      "insertMode": "KEEP_EXISTING",
      "name": "DefaultRedshiftCopyActivity1",
      "runsOn": {
        "ref": "Ec2ResourceId1"
      },
      "type": "RedshiftCopyActivity",
      "output": {
        "ref": "RedshiftDataNodeId1"
      }
    }
  ]
}
```

Weitere Informationen zu diesen Objekten finden Sie in der folgenden Dokumentation.

**Topics**
+ [Datenknoten](dp-copydata-redshift-node-cli.md)
+ [Ressource](dp-copydata-redshift-resource-cli.md)
+ [Aktivität](dp-copydata-redshift-activity-cli.md)

# Datenknoten
<a name="dp-copydata-redshift-node-cli"></a>

Bei diesem Beispiel werden ein Eingabedatenknoten, ein Ausgabedatenknoten und eine Datenbank verwendet.

**Eingabedatenknoten**  
Die `S3DataNode` Eingabe-Pipeline-Komponente definiert den Speicherort der Eingabedaten in Amazon S3 und das Datenformat der Eingabedaten. Weitere Informationen finden Sie unter [S3 DataNode](dp-object-s3datanode.md).

Diese Eingabekomponente wird durch folgende Felder definiert:

```
{
  "id": "S3DataNodeId1",
  "schedule": {
    "ref": "ScheduleId1"
  },
  "filePath": "s3://datapipeline-us-east-1/samples/hive-ads-samples.csv",
  "name": "DefaultS3DataNode1",
  "dataFormat": {
    "ref": "CSVId1"
  },
  "type": "S3DataNode"
},
```

`id`  
Die benutzerdefinierte ID, die nur als Referenz dient.

`schedule`  
Einen Verweis auf die Zeitplankomponente.

`filePath`  
Den Pfad zu den Daten, die mit dem Datenknoten verknüpft sind, der in diesem Beispiel eine CSV-Eingabedatei ist.

`name`  
Den benutzerdefinierten Namen, der nur als Referenz dient.

`dataFormat`  
Einen Verweis auf das Format der Daten für die Aktivitätsverarbeitung.

**Ausgabedatenknoten**  
Die `RedshiftDataNode` Ausgabe-Pipeline-Komponente definiert einen Speicherort für die Ausgabedaten, in diesem Fall eine Tabelle in einer Amazon Redshift Redshift-Datenbank. Weitere Informationen finden Sie unter [RedshiftDataNode](dp-object-redshiftdatanode.md). Diese Ausgabekomponente wird durch folgende Felder definiert: 

```
{
  "id": "RedshiftDataNodeId1",
  "schedule": {
    "ref": "ScheduleId1"
  },
  "tableName": "orders",
  "name": "DefaultRedshiftDataNode1",
  "createTableSql": "create table StructuredLogs (requestBeginTime CHAR(30) PRIMARY KEY DISTKEY SORTKEY, requestEndTime CHAR(30), hostname CHAR(100), requestDate varchar(20));",
  "type": "RedshiftDataNode",
  "database": {
    "ref": "RedshiftDatabaseId1"
  }
},
```

`id`  
Die benutzerdefinierte ID, die nur als Referenz dient.

`schedule`  
Einen Verweis auf die Zeitplankomponente.

`tableName`  
Der Name der Amazon Redshift-Tabelle.

`name`  
Den benutzerdefinierten Namen, der nur als Referenz dient.

`createTableSql`  
Einen SQL-Ausdruck, der die Tabelle in der Datenbank erstellt.

`database`  
Ein Verweis auf die Amazon Redshift Redshift-Datenbank.

**Datenbank**  
Die `RedshiftDatabase`-Komponente wird durch folgende Felder definiert: Weitere Informationen finden Sie unter [RedshiftDatabase](dp-object-redshiftdatabase.md).

```
{
  "id": "RedshiftDatabaseId1",
  "databaseName": "dbname",
  "username": "user",
  "name": "DefaultRedshiftDatabase1",
  "*password": "password",
  "type": "RedshiftDatabase",
  "clusterId": "redshiftclusterId"
},
```

`id`  
Die benutzerdefinierte ID, die nur als Referenz dient.

`databaseName`  
Den Namen der logischen Datenbank.

`username`  
Den Benutzernamen für die Verbindung zur Datenbank.

`name`  
Den benutzerdefinierten Namen, der nur als Referenz dient.

`password`  
Das Passwort für die Verbindung zur Datenbank.

`clusterId`  
Die ID des Redshift-Clusters. 

# Ressource
<a name="dp-copydata-redshift-resource-cli"></a>

Dies ist eine Definition der Rechenressource, die die Kopieroperation ausführt. In diesem Beispiel AWS Data Pipeline sollte automatisch eine EC2-Instance erstellt werden, um die Kopieraufgabe auszuführen, und die Instance nach Abschluss der Aufgabe beenden. Die hier definierten Felder steuern die Erstellung und Funktion der Instance, die die Arbeit erledigt. Weitere Informationen finden Sie unter [Ec2Resource](dp-object-ec2resource.md).

Die `Ec2Resource` wird durch folgende Felder definiert:

```
{
  "id": "Ec2ResourceId1",
  "schedule": {
    "ref": "ScheduleId1"
  },
  "securityGroups": "MySecurityGroup",
  "name": "DefaultEc2Resource1",
  "role": "DataPipelineDefaultRole",
  "logUri": "s3://myLogs",
  "resourceRole": "DataPipelineDefaultResourceRole",
  "type": "Ec2Resource"
},
```

`id`  
Die benutzerdefinierte ID, die nur als Referenz dient.

`schedule`  
Der Zeitplan für die Erstellung dieser Rechenressource.

`securityGroups`  
Die Sicherheitsgruppe, die für die Instances im Ressourcenpool verwendet werden soll.

`name`  
Den benutzerdefinierten Namen, der nur als Referenz dient.

`role`  
Die IAM-Rolle des Kontos, das auf Ressourcen zugreift, z. B. auf einen Amazon S3 S3-Bucket zum Abrufen von Daten.

`logUri`  
Der Amazon S3 S3-Zielpfad zum Sichern von Task Runner-Protokollen von`Ec2Resource`.

`resourceRole`  
Die IAM-Rolle des Kontos, das Ressourcen erstellt, z. B. für Sie eine EC2 Instance erstellt und konfiguriert. Rolle und ResourceRole können dieselbe Rolle sein, bieten jedoch getrennt eine größere Granularität in Ihrer Sicherheitskonfiguration.

# Aktivität
<a name="dp-copydata-redshift-activity-cli"></a>

Der letzte Abschnitt in der JSON-Datei ist die Definition der Aktivität, die die auszuführende Arbeit darstellt. In diesem Fall verwenden wir eine `RedshiftCopyActivity` Komponente, um Daten von Amazon S3 nach Amazon Redshift zu kopieren. Weitere Informationen finden Sie unter [RedshiftCopyActivity](dp-object-redshiftcopyactivity.md).

Die `RedshiftCopyActivity`-Komponente ist durch folgende Felder definiert:

```
{
  "id": "RedshiftCopyActivityId1",
  "input": {
    "ref": "S3DataNodeId1"
  },
  "schedule": {
    "ref": "ScheduleId1"
  },
  "insertMode": "KEEP_EXISTING",
  "name": "DefaultRedshiftCopyActivity1",
  "runsOn": {
    "ref": "Ec2ResourceId1"
  },
  "type": "RedshiftCopyActivity",
  "output": {
    "ref": "RedshiftDataNodeId1"
  }
},
```

`id`  
Die benutzerdefinierte ID, die nur als Referenz dient.

`input`  
Ein Verweis auf die Amazon S3 S3-Quelldatei.

`schedule`  
Der Zeitplan für die Ausführung dieser Aktivität.

`insertMode`  
Der Einfügetyp (`KEEP_EXISTING`, `OVERWRITE_EXISTING` oder `TRUNCATE`).

`name`  
Den benutzerdefinierten Namen, der nur als Referenz dient.

`runsOn`  
Die Datenverarbeitungsressource, die die Arbeit ausführt, die diese Aktivität definiert.

`output`  
Ein Verweis auf die Amazon Redshift Redshift-Zieltabelle.

# Hochladen und Aktivieren der Pipeline-Definition
<a name="dp-copydata-redshift-upload-cli"></a>

Sie müssen Ihre Pipeline-Definition hochladen und Ihre Pipeline aktivieren. Ersetzen Sie die Befehle in den folgenden Beispielbefehlen *pipeline\$1name* durch ein Label für Ihre Pipeline und *pipeline\$1file* durch den vollqualifizierten Pfad für die `.json` Pipeline-Definitionsdatei.

**AWS CLI**

Verwenden Sie den folgenden Befehl [create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/create-pipeline.html), um Ihre Pipeline-Definition zu erstellen und Ihre Pipeline zu aktivieren. Notieren Sie sich die ID Ihrer Pipeline, da Sie diesen Wert mit den meisten CLI-Befehlen verwenden werden.

```
aws datapipeline create-pipeline --name pipeline_name --unique-id token
{
    "pipelineId": "df-00627471SOVYZEXAMPLE"
}
```

Verwenden Sie den folgenden [put-pipeline-definition](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/put-pipeline-definition.html)Befehl, um Ihre Pipeline-Definition hochzuladen.

```
aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json
```

Wenn Ihre Pipeline erfolgreich validiert wurde, ist das `validationErrors` Feld leer. Sie sollten alle Warnungen überprüfen.

Verwenden Sie den folgenden Befehl [activate-pipeline, um Ihre Pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/activate-pipeline.html) zu aktivieren.

```
aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE
```

Mit dem folgenden Befehl [list-pipelines](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/list-pipelines.html) können Sie überprüfen, ob Ihre Pipeline in der Pipeline-Liste aufgeführt ist.

```
aws datapipeline list-pipelines
```