

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.

# Copie de données MySQL à l'aide de la ligne de commande
<a name="dp-copymysql-cli"></a>

Vous pouvez créer un pipeline pour copier les données d'une table MySQL vers un fichier d'un compartiment Amazon S3.

**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 un compartiment Amazon S3 et une instance Amazon RDS. Pour de plus amples informations, veuillez consulter [Avant de commencer](dp-copydata-mysql-prereq.md).

**Topics**
+ [Définition d'un pipeline au format JSON](#dp-copymysql-define-pipeline-cli)
+ [Chargement et activation de la définition de pipeline](#dp-copymysql-json-upload-cli)

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

Cet exemple de scénario montre comment utiliser les définitions de pipeline JSON et la AWS Data Pipeline CLI pour copier des données (lignes) d'une table d'une base de données MySQL vers un fichier CSV (valeurs séparées par des virgules) dans un compartiment Amazon S3 à un intervalle de temps spécifié.

Voici le fichier JSON intégral de définition de pipeline, suivi d'une explication de chacune de ses sections. 

**Note**  
 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": "ScheduleId113",
      "startDateTime": "2013-08-26T00:00:00",
      "name": "My Copy Schedule",
      "type": "Schedule",
      "period": "1 Days"
    },
    {
      "id": "CopyActivityId112",
      "input": {
        "ref": "MySqlDataNodeId115"
      },
      "schedule": {
        "ref": "ScheduleId113"
      },
      "name": "My Copy",
      "runsOn": {
        "ref": "Ec2ResourceId116"
      },
      "onSuccess": {
        "ref": "ActionId1"
      },
      "onFail": {
        "ref": "SnsAlarmId117"
      },
      "output": {
        "ref": "S3DataNodeId114"
      },
      "type": "CopyActivity"
    },
    {
      "id": "S3DataNodeId114",
      "schedule": {
        "ref": "ScheduleId113"
      },
      "filePath": "s3://amzn-s3-demo-bucket/rds-output/output.csv",
      "name": "My S3 Data",
      "type": "S3DataNode"
    },
    {
      "id": "MySqlDataNodeId115",
      "username": "my-username",
      "schedule": {
        "ref": "ScheduleId113"
      },
      "name": "My RDS Data",
      "*password": "my-password",
      "table": "table-name",
      "connectionString": "jdbc:mysql://your-sql-instance-name.id.region-name.rds.amazonaws.com:3306/database-name",
      "selectQuery": "select * from #{table}",
      "type": "SqlDataNode"
    },
    {
      "id": "Ec2ResourceId116",
      "schedule": {
        "ref": "ScheduleId113"
      },
      "name": "My EC2 Resource",
      "role": "DataPipelineDefaultRole",
      "type": "Ec2Resource",
      "resourceRole": "DataPipelineDefaultResourceRole"
    },
    {
      "message": "This is a success message.",
      "id": "ActionId1",
      "subject": "RDS to S3 copy succeeded!",
      "name": "My Success Alarm",
      "role": "DataPipelineDefaultRole",
      "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic",
      "type": "SnsAlarm"
    },
    {
      "id": "Default",
      "scheduleType": "timeseries",
      "failureAndRerunMode": "CASCADE",
      "name": "Default",
      "role": "DataPipelineDefaultRole",
      "resourceRole": "DataPipelineDefaultResourceRole"
    },
    {
      "message": "There was a problem executing #{node.name} at for period #{node.@scheduledStartTime} to #{node.@scheduledEndTime}",
      "id": "SnsAlarmId117",
      "subject": "RDS to S3 copy failed",
      "name": "My Failure Alarm",
      "role": "DataPipelineDefaultRole",
      "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic",
      "type": "SnsAlarm"
    }
  ]
}
```

### Nœud de données MySQL
<a name="dp-copymysql-rds-node-cli"></a>

Le composant du MySqlDataNode pipeline d'entrée définit un emplacement pour les données d'entrée ; dans ce cas, une instance Amazon RDS. Le MySqlDataNode composant d'entrée est défini par les champs suivants : 

```
{
  "id": "MySqlDataNodeId115",
  "username": "my-username",
  "schedule": {
    "ref": "ScheduleId113"
  },
  "name": "My RDS Data",
  "*password": "my-password",
  "table": "table-name",
  "connectionString": "jdbc:mysql://your-sql-instance-name.id.region-name.rds.amazonaws.com:3306/database-name",
  "selectQuery": "select * from #{table}",
  "type": "SqlDataNode"
},
```

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

Nom d’utilisateur  
Nom d'utilisateur du compte de base de données disposant des autorisations suffisantes pour extraire des données de la table de base de données. Remplacez *my-username* par le nom de votre utilisateur.

Planning  
Référence au composant de planification que nous avons créé dans les lignes précédentes du fichier JSON.

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

\$1Password  
Le mot de passe du compte de base de données avec le préfixe astérisque pour indiquer que la valeur du mot de passe AWS Data Pipeline doit être chiffrée. *my-password*Remplacez-le par le mot de passe correct pour votre utilisateur. Le champ de mot de passe est précédé du caractère spécial astérisque. Pour de plus amples informations, veuillez consulter [Caractères spéciaux](dp-pipeline-characters.md).

Table  
Nom de la table de base de données qui contient les données à copier. *table-name*Remplacez-le par le nom de votre table de base de données.

connectionChaîne  
Chaîne de connexion JDBC pour l' CopyActivity objet à connecter à la base de données.

selectQuery  
Requête SQL SELECT valide qui spécifie les données à copier à partir de la table de base de données. Notez que `#{table}` est une expression qui réutilise le nom de table fourni par la variable « table » dans les lignes précédentes du fichier JSON.

Type  
Le SqlDataNode type, qui est une instance Amazon RDS utilisant MySQL dans cet exemple.  
Le MySqlDataNode type est obsolète. Bien que vous puissiez toujours l'utiliser MySqlDataNode, nous vous recommandons d'utiliser SqlDataNode. 

### Nœud de données Amazon S3
<a name="dp-copymysql-json-s3-node-cli"></a>

Ensuite, le composant de pipeline S3Output définit un emplacement pour le fichier de sortie ; dans ce cas, un fichier CSV dans un emplacement de compartiment Amazon S3. Le DataNode composant S3 de sortie est défini par les champs suivants : 

```
{
  "id": "S3DataNodeId114",
  "schedule": {
    "ref": "ScheduleId113"
  },
  "filePath": "s3://amzn-s3-demo-bucket/rds-output/output.csv",
  "name": "My S3 Data",
  "type": "S3DataNode"
},
```

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

Planning  
Référence au composant de planification que nous avons créé dans les lignes précédentes du fichier JSON.

filePath  
Chemin d'accès aux données associées au nœud de données, qui est un fichier de sortie CSV dans cet exemple. 

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

Type  
Le type d'objet du pipeline, qui est S3 DataNode pour correspondre à l'emplacement où se trouvent les données, dans un compartiment Amazon S3.

### Ressource
<a name="dp-copymysql-json-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 EC2 instance pour effectuer la tâche de copie et mettre fin à la ressource une fois la tâche terminée. Les champs définis ici contrôlent la création et le fonctionnement de l' EC2 instance qui effectue le travail. La EC2 ressource est définie par les champs suivants : 

```
{
  "id": "Ec2ResourceId116",
  "schedule": {
    "ref": "ScheduleId113"
  },
  "name": "My EC2 Resource",
  "role": "DataPipelineDefaultRole",
  "type": "Ec2Resource",
  "resourceRole": "DataPipelineDefaultResourceRole"
},
```

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

Planning  
Planification sur laquelle créer la ressource de calcul.

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.

Type  
Type de ressource informatique pour effectuer le travail ; dans ce cas, une EC2 instance. D'autres types de ressources sont disponibles, tels que le EmrCluster type.

resourceRole  
Rôle IAM du compte qui crée les ressources, telles que la création et la configuration d'une EC2 instance 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-copymysql-json-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 CopyActivity composant pour copier les données d'un fichier d'un compartiment Amazon S3 vers un autre fichier. Le CopyActivity composant est défini par les champs suivants : 

```
{
  "id": "CopyActivityId112",
  "input": {
    "ref": "MySqlDataNodeId115"
  },
  "schedule": {
    "ref": "ScheduleId113"
  },
  "name": "My Copy",
  "runsOn": {
    "ref": "Ec2ResourceId116"
  },
  "onSuccess": {
    "ref": "ActionId1"
  },
  "onFail": {
    "ref": "SnsAlarmId117"
  },
  "output": {
    "ref": "S3DataNodeId114"
  },
  "type": "CopyActivity"
},
```

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

Input  
Emplacement des données MySQL à copier

Planning  
Planification d'exécution de cette activité

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. Dans cet exemple, nous fournissons une référence à l' EC2 instance définie précédemment. L'utilisation du `runsOn` champ AWS Data Pipeline entraîne la création de l' EC2instance pour vous. Le champ `runsOn` indique que la ressource existe dans l'infrastructure AWS, tandis que la valeur workerGroup signifie que vous voulez utiliser vos propres ressources locales pour effectuer le travail.

onSuccess  
Notification [SnsAlarm](dp-object-snsalarm.md) à envoyer si l'activité se termine correctement

onFail  
Notification [SnsAlarm](dp-object-snsalarm.md) à envoyer si l'activité échoue

Output  
L'emplacement du fichier de sortie CSV sur Amazon S3

Type  
Type d'activité à effectuer.

## Chargement et activation de la définition de pipeline
<a name="dp-copymysql-json-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
```