

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 ü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
```