

AWS Data Pipeline ya no está disponible para nuevos clientes. Los clientes actuales de AWS Data Pipeline pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Copia de datos de MySQL mediante la línea de comandos
<a name="dp-copymysql-cli"></a>

Cree una canalización para copiar datos de una tabla de MySQL en un archivo en un bucket de Amazon S3.

**Requisitos previos**

Debe seguir estos pasos antes de comenzar:

1. Instale y configure la interfaz de la línea de comandos (CLI). Para obtener más información, consulte [Accediendo AWS Data Pipeline](what-is-datapipeline.md#accessing-datapipeline).

1. Asegúrese de que los roles de IAM nombrados **DataPipelineDefaultRole**y **DataPipelineDefaultResourceRole**existan. La AWS Data Pipeline consola crea estos roles automáticamente. Si no ha utilizado la AWS Data Pipeline consola al menos una vez, debe crear estos roles manualmente. Para obtener más información, consulte [Funciones de IAM para AWS Data Pipeline](dp-iam-roles.md).

1. Configure un bucket de Amazon S3 y una instancia de Amazon RDS. Para obtener más información, consulte [Antes de empezar](dp-copydata-mysql-prereq.md).

**Topics**
+ [Definir una canalización en formato JSON](#dp-copymysql-define-pipeline-cli)
+ [Cargar y activar la definición de canalización](#dp-copymysql-json-upload-cli)

## Definir una canalización en formato JSON
<a name="dp-copymysql-define-pipeline-cli"></a>

Este escenario de ejemplo muestra cómo utilizar definiciones de la canalización de JSON y la CLI de AWS Data Pipeline para copiar datos (filas) de una tabla en una base de datos MySQL en un archivo CSV (valores separados por comas) en un bucket de Amazon S3 en un intervalo de tiempo especificado.

Este es el archivo JSON de definición de la canalización completo seguido de una explicación de cada una de sus secciones. 

**nota**  
 Le recomendamos que use un editor de texto que pueda ayudarle a comprobar la sintaxis de los archivos con formato JSON y que asigne un nombre al archivo con la extensión .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"
    }
  ]
}
```

### Nodo de datos MySQL
<a name="dp-copymysql-rds-node-cli"></a>

El componente de MySqlDataNode canalización de entrada define una ubicación para los datos de entrada; en este caso, una instancia de Amazon RDS. El MySqlDataNode componente de entrada se define mediante los siguientes campos: 

```
{
  "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  
El nombre definido por el usuario, que es una etiqueta solo con fines de referencia.

Nombre de usuario  
El nombre de usuario de la cuenta de la base de datos que tiene permisos suficientes para recuperar los datos de la tabla de base de datos. *my-username*Sustitúyalo por el nombre de su usuario.

Schedule  
Una referencia al componente de programación que creamos en las líneas anteriores del archivo JSON.

Name  
El nombre definido por el usuario, que es una etiqueta solo con fines de referencia.

\$1Password  
La contraseña de la cuenta de la base de datos con el prefijo de asterisco para indicar que AWS Data Pipeline debe cifrar el valor de la contraseña. *my-password*Sustitúyala por la contraseña correcta para tu usuario. El campo de la contraseña está precedido por el carácter especial del asterisco. Para obtener más información, consulte [Caracteres especiales](dp-pipeline-characters.md).

Tabla  
El nombre de la tabla de base datos que contiene los datos que se van a copiar. *table-name*Sustitúyala por el nombre de la tabla de la base de datos.

connectionString  
La cadena de conexión JDBC del CopyActivity objeto que se va a conectar a la base de datos.

selectQuery  
Una consulta SQL SELECT válida que especifica qué datos se van a copiar de la tabla de base de datos. Tenga en cuenta que `#{table}` es una expresión que reutiliza el nombre de la tabla proporcionado por la variable "table" en las líneas anteriores del archivo JSON.

Tipo  
El SqlDataNode tipo, que es una instancia de Amazon RDS que utiliza MySQL en este ejemplo.  
El MySqlDataNode tipo está obsoleto. Mientras pueda seguir utilizándolo MySqlDataNode, le recomendamos que lo utilice SqlDataNode. 

### Nodo de datos Amazon S3
<a name="dp-copymysql-json-s3-node-cli"></a>

A continuación, el componente de canalización S3Output define una ubicación para el archivo de salida; en este caso, un archivo CSV en una ubicación de bucket de Amazon S3. El DataNode componente S3 de salida se define mediante los siguientes campos: 

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

Id  
El ID definido por el usuario, que es una etiqueta solo con fines de referencia.

Schedule  
Una referencia al componente de programación que creamos en las líneas anteriores del archivo JSON.

filePath  
La ruta a los datos asociados al nodo de datos, que es un archivo de salida CSV en este ejemplo. 

Name  
El nombre definido por el usuario, que es una etiqueta solo con fines de referencia.

Tipo  
El tipo de objeto de canalización, que es S3 DataNode para coincidir con la ubicación en la que residen los datos, en un bucket de Amazon S3.

### Recurso
<a name="dp-copymysql-json-resource-cli"></a>

Esta es una definición del recurso informático que realiza la operación de copia. En este ejemplo, AWS Data Pipeline debería crear automáticamente una EC2 instancia para realizar la tarea de copia y finalizar el recurso una vez finalizada la tarea. Los campos definidos aquí controlan la creación y el funcionamiento de la EC2 instancia que realiza el trabajo. El EC2 recurso se define mediante los siguientes campos: 

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

Id  
El ID definido por el usuario, que es una etiqueta solo con fines de referencia.

Schedule  
El programa en el que desea crear este recurso informático.

Name  
El nombre definido por el usuario, que es una etiqueta solo con fines de referencia.

Rol  
El rol de IAM de la cuenta que tiene acceso a recursos, como el acceso a un bucket de Amazon S3 para recuperar datos.

Tipo  
El tipo de recurso computacional para realizar el trabajo; en este caso, una EC2 instancia. Hay otros tipos de recursos disponibles, como un EmrCluster tipo.

resourceRole  
La función de IAM de la cuenta que crea los recursos, como la creación y configuración de una EC2 instancia en tu nombre. El rol y ResourceRole pueden ser el mismo rol, pero por separado proporcionan una mayor granularidad en la configuración de seguridad.

### Actividad
<a name="dp-copymysql-json-activity-cli"></a>

La última sección del archivo JSON es la definición de la actividad que representa el trabajo que se realizará. En este caso, utilizamos un CopyActivity componente para copiar datos de un archivo de un bucket de Amazon S3 a otro archivo. El CopyActivity componente se define mediante los siguientes campos: 

```
{
  "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  
El ID definido por el usuario, que es una etiqueta solo con fines de referencia.

Input  
La ubicación de los datos de MySQL que se van a copiar.

Schedule  
La programación en la que ejecutar esta actividad.

Name  
El nombre definido por el usuario, que es una etiqueta solo con fines de referencia.

runsOn  
El recurso informático que realiza el trabajo que define esta actividad. En este ejemplo, proporcionamos una referencia a la EC2 instancia definida anteriormente. El uso del `runsOn` campo hace AWS Data Pipeline que se cree la EC2 instancia automáticamente. El campo `runsOn` indica que el recurso existe en la infraestructura de AWS, mientras que el valor de workerGroup indica que desea usar sus propios recursos locales para realizar el trabajo.

onSuccess  
La [SnsAlarm](dp-object-snsalarm.md) que se va a enviar si la actividad se realiza de forma correcta.

onFail  
La [SnsAlarm](dp-object-snsalarm.md) que se va a enviar si la actividad no se realiza de forma correcta.

Output  
La ubicación en Amazon S3 del archivo de salida CSV.

Tipo  
El tipo de actividad que se va a realizar.

## Cargar y activar la definición de canalización
<a name="dp-copymysql-json-upload-cli"></a>

Debe cargar la definición de su canalización y activarla. En los siguientes comandos de ejemplo, *pipeline\$1name* sustitúyala por una etiqueta para la canalización y *pipeline\$1file* por la ruta completa para el `.json` archivo de definición de la canalización.

**AWS CLI**

Para crear su definición de canalización y activarla, use el siguiente comando [create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/create-pipeline.html). Anote el ID de su canalización, ya que utilizará este valor con la mayoría de los comandos de la CLI.

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

Para cargar la definición de tu canalización, usa el siguiente [put-pipeline-definition](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/put-pipeline-definition.html)comando.

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

Si la canalización se valida correctamente, el campo `validationErrors` estará vacío. Debe revisar todas las advertencias.

Para activar la canalización, utilice el siguiente comando [activate-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/activate-pipeline.html):

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

Puede comprobar que su canalización aparece en la lista de canalizaciones mediante el siguiente comando [list-pipelines](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/list-pipelines.html).

```
aws datapipeline list-pipelines
```