

AWS Data Pipeline non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Data Pipeline possono continuare a utilizzare il servizio normalmente. [Ulteriori informazioni](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Copia dei dati su MySQL tramite la riga di comando
<a name="dp-copymysql-cli"></a>

Puoi creare una pipeline per copiare i dati da una tabella MySQL a un file in un bucket Amazon S3.

**Prerequisiti**

Prima di iniziare , devi completare le fasi seguenti:

1. Installa e configura un'interfaccia a riga di comando (CLI). Per ulteriori informazioni, consulta [Accedere AWS Data Pipeline](what-is-datapipeline.md#accessing-datapipeline).

1. Assicurati che i ruoli IAM siano denominati **DataPipelineDefaultRole**ed **DataPipelineDefaultResourceRole**esistano. La AWS Data Pipeline console crea questi ruoli automaticamente. Se non hai utilizzato la AWS Data Pipeline console almeno una volta, devi creare questi ruoli manualmente. Per ulteriori informazioni, consulta [Ruoli IAM per AWS Data Pipeline](dp-iam-roles.md).

1. Configura un bucket Amazon S3 e un'istanza Amazon RDS. Per ulteriori informazioni, consulta [Prima di iniziare](dp-copydata-mysql-prereq.md).

**Topics**
+ [Definire una pipeline in formato JSON](#dp-copymysql-define-pipeline-cli)
+ [Caricamento e attivazione della definizione della pipeline](#dp-copymysql-json-upload-cli)

## Definire una pipeline in formato JSON
<a name="dp-copymysql-define-pipeline-cli"></a>

Questo scenario di esempio mostra come utilizzare le definizioni della pipeline JSON e la AWS Data Pipeline CLI per copiare dati (righe) da una tabella in un database MySQL a un file CSV (valori separati da virgole) in un bucket Amazon S3 a un intervallo di tempo specificato.

Questo è il file JSON completo di definizione della pipeline seguito da una spiegazione per ciascuna delle sue sezioni. 

**Nota**  
 È consigliabile utilizzare un editor di testo che può aiutare a verificare la sintassi di file in formato JSON e nominare il file utilizzando l'estensione del file .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 di dati MySQL
<a name="dp-copymysql-rds-node-cli"></a>

Il componente della MySqlDataNode pipeline di input definisce una posizione per i dati di input; in questo caso, un'istanza Amazon RDS. Il MySqlDataNode componente di input è definito dai seguenti campi: 

```
{
  "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  
Il nome definito dall'utente, un'etichetta solo di riferimento.

Username  
Il nome utente dell'account di database che dispone di autorizzazioni sufficienti per recuperare i dati dalla tabella di database. Sostituisci *my-username* con il nome del tuo utente.

Schedule  
Un riferimento al componente di pianificazione che abbiamo creato nelle righe precedenti del file JSON.

Name  
Il nome definito dall'utente, un'etichetta solo di riferimento.

\$1Password  
La password per l'account del database con il prefisso asterisco per indicare che AWS Data Pipeline deve crittografare il valore della password. *my-password*Sostituiscila con la password corretta per il tuo utente. Il campo password è preceduto dal carattere speciale dell'asterisco. Per ulteriori informazioni, consulta [Caratteri speciali](dp-pipeline-characters.md).

Tabella  
Il nome della tabella del database che contiene i dati da copiare. Sostituiscila *table-name* con il nome della tabella del database.

connectionString  
La stringa di connessione JDBC per l' CopyActivity oggetto da connettere al database.

selectQuery  
Una query SQL SELECT valida che specifichi quali dati copiare dalla tabella di database. Si noti che `#{table}` è un'espressione che riutilizza il nome della tabella fornito dalla variabile "tabella" nelle righe precedenti del file JSON.

Tipo  
Il SqlDataNode tipo, che è un'istanza Amazon RDS che utilizza MySQL in questo esempio.  
Il MySqlDataNode tipo è obsoleto. Sebbene sia ancora possibile utilizzarlo MySqlDataNode, si consiglia di utilizzare. SqlDataNode 

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

Successivamente, il componente della pipeline S3Output definisce una posizione per il file di output; in questo caso un file CSV in una posizione del bucket Amazon S3. Il DataNode componente di output S3 è definito dai seguenti campi: 

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

Id  
L'ID definito dall'utente, un'etichetta solo di riferimento.

Schedule  
Un riferimento al componente di pianificazione che abbiamo creato nelle righe precedenti del file JSON.

filePath  
Il percorso ai dati associati al nodo di dati, cioè il file di output CSV in questo esempio. 

Name  
Il nome definito dall'utente, un'etichetta solo di riferimento.

Tipo  
Il tipo di oggetto della pipeline, che è S3 in base DataNode alla posizione in cui risiedono i dati, in un bucket Amazon S3.

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

Questa è una definizione della risorsa di calcolo che esegue l'operazione di copia. In questo esempio, AWS Data Pipeline dovrebbe creare automaticamente un' EC2 istanza per eseguire l'attività di copia e terminare la risorsa al termine dell'attività. I campi qui definiti controllano la creazione e la funzione dell' EC2 istanza che esegue il lavoro. La EC2 risorsa è definita dai seguenti campi: 

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

Id  
L'ID definito dall'utente, un'etichetta solo di riferimento.

Schedule  
La pianificazione su cui creare questa risorsa di calcolo.

Name  
Il nome definito dall'utente, un'etichetta solo di riferimento.

Ruolo  
Il ruolo IAM dell'account che accede alle risorse, ad esempio l'accesso a un bucket Amazon S3 per recuperare i dati.

Tipo  
Il tipo di risorsa computazionale per eseguire il lavoro; in questo caso, un'istanza. EC2 Sono disponibili altri tipi di risorse, ad esempio un EmrCluster tipo.

resourceRole  
Il ruolo IAM dell'account che crea risorse, ad esempio la creazione e la configurazione di un' EC2istanza per tuo conto. Ruolo e ResourceRole 3 possono essere lo stesso ruolo, ma forniscono separatamente una maggiore granularità nella configurazione di sicurezza.

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

L'ultima sezione del file JSON è la definizione dell'attività che rappresenta il lavoro da eseguire. In questo caso utilizziamo un CopyActivity componente per copiare i dati da un file in un bucket Amazon S3 a un altro file. Il CopyActivity componente è definito dai seguenti campi: 

```
{
  "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  
L'ID definito dall'utente, un'etichetta solo di riferimento

Input  
Posizione dei dati MySQL da copiare

Schedule  
La pianificazione su cui eseguire questa attività

Name  
Il nome definito dall'utente, un'etichetta solo di riferimento

runsOn  
La risorsa di calcolo che esegue il lavoro definito dall'attività. In questo esempio, forniamo un riferimento all' EC2 istanza definita in precedenza. L'utilizzo del `runsOn` campo AWS Data Pipeline consente di creare l' EC2istanza automaticamente. Il campo `runsOn` indica che la risorsa è disponibile nell'infrastruttura AWS, mentre il valore workerGroup indica che si desidera utilizzare le proprie risorse locali per eseguire il lavoro.

onSuccess  
[SnsAlarm](dp-object-snsalarm.md) da inviare se l'attività viene completata correttamente

onFail  
[SnsAlarm](dp-object-snsalarm.md) da inviare se l'attività non viene completata correttamente

Output  
La posizione Amazon S3 del file di output CSV

Tipo  
Il tipo di attività da eseguire.

## Caricamento e attivazione della definizione della pipeline
<a name="dp-copymysql-json-upload-cli"></a>

È necessario caricare la definizione della pipeline e attivare la pipeline. Nei seguenti comandi di esempio, sostituiteli *pipeline\$1name* con un'etichetta per la pipeline e *pipeline\$1file* con il percorso completo per il file di definizione della pipeline. `.json`

**AWS CLI**

[Per creare la definizione della pipeline e attivare la pipeline, utilizzate il seguente comando create-pipeline.](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/create-pipeline.html) Annota l'ID della pipeline, poiché utilizzerai questo valore con la maggior parte dei comandi CLI.

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

Per caricare la definizione della pipeline, utilizzate il seguente comando. [put-pipeline-definition](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/put-pipeline-definition.html)

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

Se la pipeline viene convalidata correttamente, il `validationErrors` campo è vuoto. È necessario esaminare eventuali avvertenze.

Per attivare la pipeline, usa il seguente comando [activate-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/activate-pipeline.html).

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

[È possibile verificare che la pipeline venga visualizzata nell'elenco delle pipeline utilizzando il seguente comando list-pipelines.](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/list-pipelines.html)

```
aws datapipeline list-pipelines
```