

AWS Data Pipeline n'est plus disponible pour les nouveaux clients. Les clients existants de AWS Data Pipeline peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Copier des données sur Amazon Redshift à l'aide de la ligne de commande
<a name="dp-copydata-redshift-cli"></a>

Ce didacticiel explique comment copier des données d'Amazon S3 vers Amazon Redshift. Vous allez créer une nouvelle table dans Amazon Redshift, puis vous l'utiliserez AWS Data Pipeline pour transférer des données vers cette table depuis un compartiment Amazon S3 public, qui contient des exemples de données d'entrée au format CSV. Les journaux sont enregistrés dans un compartiment Amazon S3 dont vous êtes le propriétaire.

Amazon S3 est un service Web qui vous permet de stocker des données dans le cloud. Pour en savoir plus, consultez [Guide de l’utilisateur Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/). Amazon Redshift est un service d'entrepôt de données dans le cloud. Pour plus d'informations, consultez le guide de [gestion Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/).

**Conditions préalables**

Avant de commencer, exécutez les étapes suivantes :

1. Installez et configurez une interface de ligne de commande (CLI). Pour de plus amples informations, veuillez consulter [Accès AWS Data Pipeline](what-is-datapipeline.md#accessing-datapipeline).

1. Assurez-vous que les rôles IAM sont nommés **DataPipelineDefaultRole**et **DataPipelineDefaultResourceRole**existent. La AWS Data Pipeline console crée automatiquement ces rôles pour vous. Si vous n'avez pas utilisé la AWS Data Pipeline console au moins une fois, vous devez créer ces rôles manuellement. Pour de plus amples informations, veuillez consulter [Rôles IAM pour AWS Data Pipeline](dp-iam-roles.md).

1. Configurez la `COPY` commande dans Amazon Redshift, car ces mêmes options doivent fonctionner lorsque vous effectuez la copie dans Amazon Redshift. AWS Data Pipeline Pour plus d'informations, consultez [Avant de commencer : configurer les options COPY et charger des données](dp-learn-copy-redshift.md).

1. Configurez une base de données Amazon Redshift. Pour de plus amples informations, veuillez consulter [Configuration du pipeline, création d'un groupe de sécurité et création d'un cluster Amazon Redshift](dp-copydata-redshift-prereq.md).

**Topics**
+ [Définition d'un pipeline au format JSON](dp-copydata-redshift-define-pipeline-cli.md)
+ [Chargement et activation de la définition de pipeline](dp-copydata-redshift-upload-cli.md)

# Définition d'un pipeline au format JSON
<a name="dp-copydata-redshift-define-pipeline-cli"></a>

Cet exemple de scénario montre comment copier des données d'un compartiment Amazon S3 vers Amazon Redshift.

Voici le fichier JSON intégral de définition de pipeline, suivi d'une explication de chacune de ses sections. Nous vous recommandons d'utiliser un éditeur de texte qui peut vous aider à vérifier la syntaxe des fichiers au format JSON et de nommer le fichier avec l'extension `.json`.

```
{
  "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"
      }
    }
  ]
}
```

Pour plus d'informations sur ces objets, consultez la documentation suivante.

**Topics**
+ [Nœuds de données](dp-copydata-redshift-node-cli.md)
+ [Ressource](dp-copydata-redshift-resource-cli.md)
+ [Activité](dp-copydata-redshift-activity-cli.md)

# Nœuds de données
<a name="dp-copydata-redshift-node-cli"></a>

L'exemple utilise un nœud de données d'entrée, un nœud de données de sortie et une base de données.

**Nœud de données d'entrée**  
Le composant du `S3DataNode` pipeline d'entrée définit l'emplacement des données d'entrée dans Amazon S3 et le format des données d'entrée. Pour de plus amples informations, veuillez consulter [S3 DataNode](dp-object-s3datanode.md).

Le composant d'entrée est défini par les champs suivants :

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

`id`  
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`schedule`  
Référence au composant planification.

`filePath`  
Chemin d'accès aux données associées au nœud de données (fichier d'entrée CSV dans l'exemple).

`name`  
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`dataFormat`  
Référence au format des données de l'activité à traiter.

**Nœud de données de sortie**  
Le composant du `RedshiftDataNode` pipeline de sortie définit un emplacement pour les données de sortie ; dans ce cas, une table dans une base de données Amazon Redshift. Pour de plus amples informations, veuillez consulter [RedshiftDataNode](dp-object-redshiftdatanode.md). Le composant de sortie est défini par les champs suivants : 

```
{
  "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`  
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`schedule`  
Référence au composant planification.

`tableName`  
Nom de la table Amazon Redshift.

`name`  
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`createTableSql`  
Expression SQL permettant de créer la table dans la base de données.

`database`  
Une référence à la base de données Amazon Redshift.

**Base de données**  
Le composant `RedshiftDatabase` est défini par les champs ci-après. Pour de plus amples informations, veuillez consulter [RedshiftDatabase](dp-object-redshiftdatabase.md).

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

`id`  
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`databaseName`  
Nom de la base de données logique.

`username`  
Nom d'utilisateur pour la connexion à la base de données.

`name`  
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`password`  
Mot de passe pour la connexion à la base de données.

`clusterId`  
ID du cluster Redshift. 

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

Il s'agit d'une définition de la ressource de calcul qui exécute l'opération de copie. Dans cet exemple, vous AWS Data Pipeline devez créer automatiquement une instance EC2 pour effectuer la tâche de copie et mettre fin à l'instance une fois la tâche terminée. Les champs définis ici contrôlent la création et le fonctionnement de l'instance qui effectue le travail. Pour de plus amples informations, veuillez consulter [Ec2Resource](dp-object-ec2resource.md).

Le composant `Ec2Resource` est défini par les champs suivants :

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

`id`  
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`schedule`  
Planification sur laquelle créer la ressource de calcul.

`securityGroups`  
Groupe de sécurité à utiliser pour les instances du pool de ressources.

`name`  
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`role`  
Rôle IAM du compte qui accède aux ressources, par exemple l'accès à un compartiment Amazon S3 pour récupérer des données.

`logUri`  
Le chemin de destination Amazon S3 pour sauvegarder les journaux de Task Runner à partir du`Ec2Resource`.

`resourceRole`  
Rôle IAM du compte qui crée des ressources, comme la création et la configuration d'une instance EC2 en votre nom. Le rôle et le rôle ResourceRole peuvent être identiques, mais séparément, ils fournissent une plus grande granularité à votre configuration de sécurité.

# Activité
<a name="dp-copydata-redshift-activity-cli"></a>

La dernière section du fichier JSON correspond à la définition de l'activité représentant le travail à effectuer. Dans ce cas, nous utilisons un `RedshiftCopyActivity` composant pour copier les données d'Amazon S3 vers Amazon Redshift. Pour de plus amples informations, veuillez consulter [RedshiftCopyActivity](dp-object-redshiftcopyactivity.md).

Le composant `RedshiftCopyActivity` est défini par les champs suivants :

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

`id`  
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`input`  
Une référence au fichier source Amazon S3.

`schedule`  
Planification d'exécution de cette activité.

`insertMode`  
Type d'insertion (`KEEP_EXISTING`, `OVERWRITE_EXISTING` ou `TRUNCATE`).

`name`  
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).

`runsOn`  
Ressource de calcul qui effectue le travail que cette activité définit.

`output`  
Une référence à la table de destination Amazon Redshift.

# Chargement et activation de la définition de pipeline
<a name="dp-copydata-redshift-upload-cli"></a>

Vous devez télécharger votre définition de pipeline et activer votre pipeline. Dans les exemples de commandes suivants, *pipeline\$1name* remplacez-les par une étiquette pour votre pipeline et *pipeline\$1file* par le chemin complet pour le `.json` fichier de définition du pipeline.

**AWS CLI**

Pour créer votre définition de pipeline et activer votre pipeline, utilisez la commande [create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/create-pipeline.html) suivante. Notez l'ID de votre pipeline, car vous utiliserez cette valeur avec la plupart des commandes CLI.

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

Pour télécharger votre définition de pipeline, utilisez la [put-pipeline-definition](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/put-pipeline-definition.html)commande suivante.

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

Si votre pipeline est validé avec succès, le `validationErrors` champ est vide. Vous devez consulter tous les avertissements.

Pour activer votre pipeline, utilisez la commande [activate-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/activate-pipeline.html) suivante.

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

Vous pouvez vérifier que votre pipeline apparaît dans la liste des pipelines à l'aide de la commande [list-pipelines](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/list-pipelines.html) suivante.

```
aws datapipeline list-pipelines
```