

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 i dati su Amazon Redshift utilizzando AWS Data Pipeline
<a name="dp-copydata-redshift"></a>

Questo tutorial illustra il processo di creazione di una pipeline che sposta periodicamente i dati da Amazon S3 ad Amazon Redshift utilizzando il modello **Copy to Redshift** nella console o un file di definizione della pipeline con AWS Data Pipeline la CLI. AWS Data Pipeline 

Amazon S3 è un servizio Web che consente di archiviare dati nel cloud. Per ulteriori informazioni, consultare la [Guida per l'utente di Amazon Simple archiviazione Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/). 

Amazon Redshift è un servizio di data warehouse nel cloud. Per ulteriori informazioni, consulta la [Amazon Redshift Management](https://docs.aws.amazon.com/redshift/latest/mgmt/) Guide.

Questo tutorial ha diversi prerequisiti. Dopo aver completato i passaggi seguenti, è possibile proseguire utilizzando la console o l'interfaccia a riga di comando.

**Topics**
+ [Prima di iniziare: configura le opzioni COPY e di caricamento dati](dp-learn-copy-redshift.md)
+ [Configura Pipeline, crea un gruppo di sicurezza e crea un cluster Amazon Redshift](dp-copydata-redshift-prereq.md)
+ [Copia i dati su Amazon Redshift utilizzando la riga di comando](dp-copydata-redshift-cli.md)

# Prima di iniziare: configura le opzioni COPY e di caricamento dati
<a name="dp-learn-copy-redshift"></a>

Prima di copiare i dati su Amazon Redshift AWS Data Pipeline Within, assicurati di: 
+ Carica dati da Amazon S3.
+ Configura l'`COPY`attività in Amazon Redshift. 

Quando queste opzioni sono attive e completano correttamente un caricamento dati, trasferiscile ad AWS Data Pipeline per eseguire la copia al suo interno.

 Per `COPY` le opzioni, consulta [COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html) nella Amazon Redshift *Database Developer Guide*. 

*Per la procedura di caricamento dei dati da Amazon S3, consulta [Loading data from Amazon S3 nella Amazon](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html) Redshift Database Developer Guide.* 

Ad esempio, il seguente comando SQL in Amazon Redshift crea una nuova tabella denominata `LISTING` e copia dati di esempio da un bucket disponibile pubblicamente in Amazon S3. 

Sostituire `<iam-role-arn>` e la regione con la propria. 

Per dettagli su questo esempio, consulta [Load Sample Data from Amazon S3 nella Amazon](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-create-sample-db.html) *Redshift* Getting Started Guide.

```
create table listing(
	listid integer not null distkey,
	sellerid integer not null,
	eventid integer not null,
	dateid smallint not null  sortkey,
	numtickets smallint not null,
	priceperticket decimal(8,2),
	totalprice decimal(8,2),
	listtime timestamp);

copy listing from 's3://awssampledbuswest2/tickit/listings_pipe.txt' 
credentials 'aws_iam_role=<iam-role-arn>' 
delimiter '|' region 'us-west-2';
```

# Configura Pipeline, crea un gruppo di sicurezza e crea un cluster Amazon Redshift
<a name="dp-copydata-redshift-prereq"></a>

**Per configurare il tutorial**

1. Completare le operazioni descritte in [Configurazione per AWS Data Pipeline](dp-get-setup.md).

1. Creare un gruppo di sicurezza.

   1. Aprire la console Amazon EC2.

   1. Nel riquadro di navigazione fare clic su **Security Groups (Gruppi di sicurezza)**.

   1. Fare clic su **Create Security Group (Crea un gruppo di sicurezza)**.

   1. Specificare un nome e una descrizione per il gruppo di sicurezza.

   1. [EC2-Classic] Seleziona `No VPC` per **VPC**.

   1. [EC2-VPC] Seleziona l'ID del VPC per **VPC**.

   1. Fai clic su **Create (Crea)**.

1. [EC2-Classic] Crea un gruppo di sicurezza del cluster Amazon Redshift e specifica il gruppo di sicurezza Amazon EC2.

   1. Apri la console Amazon Redshift.

   1. Nel riquadro di navigazione fare clic su **Security Groups (Gruppi di sicurezza)**.

   1. Fai clic su **Create Cluster Security Group (Crea gruppo di sicurezza cluster)**.

   1. Nella finestra di dialogo **Create Cluster Security Group (Crea gruppo di sicurezza cluster)** specificare un nome e una descrizione per il gruppo di sicurezza de cluster.

   1. Fai clic sul nome del nuovo gruppo di sicurezza del cluster.

   1. Fai clic su **Add Connection Type (Aggiungi tipo di connessione)**.

   1. Nella finestra di dialogo **Add Connection Type (Aggiungi tipo di connessione)**, selezionare **EC2 Security Group (Gruppo di sicurezza EC2)** da **Connection Type (Tipo di connessione)**, selezionare il gruppo di sicurezza creato da **EC2 Security Group Name (Nome gruppo di sicurezza EC2)**, quindi fare clic su **Authorize (Autorizza)**.

1. [EC2-VPC] Crea un gruppo di sicurezza del cluster Amazon Redshift e specifica il gruppo di sicurezza VPC.

   1. Aprire la console Amazon EC2.

   1. Nel riquadro di navigazione fare clic su **Security Groups (Gruppi di sicurezza)**.

   1. Fare clic su **Create Security Group (Crea un gruppo di sicurezza)**.

   1. Nella finestra di dialogo **Create Security Group (Crea gruppo di sicurezza)**, specificare un nome e una descrizione per il gruppo di sicurezza e selezionare l'ID del tuo VPC per **VPC**.

   1. Fai clic su **Add Rule (Aggiungi regola)**. Specificare il tipo, il protocollo e l'intervallo di porte e iniziare a digitare l'ID del gruppo di sicurezza in **Source (Origine)**. Selezionare il gruppo di sicurezza creato nel secondo passaggio.

   1. Fai clic su **Create (Crea)**.

1. Di seguito è riportato un riepilogo delle fasi.

   Se disponi di un cluster Amazon Redshift esistente, prendi nota dell'ID del cluster. 

   Per creare un nuovo cluster e caricare dati di esempio, segui i passaggi descritti in [Getting Started with Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html). Per ulteriori informazioni sulla creazione di cluster, consulta [Creating a Cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster) nella *Amazon Redshift* Management Guide. 

   1. Apri la console Amazon Redshift.

   1. Fai clic su **Launch Cluster (Avvia cluster)**.

   1. Fornire le informazioni richieste per il cluster, quindi fare clic su **Continue (Continua)**.

   1. Fornire la configurazione del nodo, quindi fare clic su **Continue (Continua)**.

   1. Nella pagina per ulteriori informazioni sulla configurazione, selezionare il gruppo di sicurezza del cluster creato, quindi fare clic su **Continue (Continua)**.

   1. Esaminare le specifiche per il cluster, quindi fare clic su **Launch Cluster (Avvia cluster)**.

# Copia i dati su Amazon Redshift utilizzando la riga di comando
<a name="dp-copydata-redshift-cli"></a>

Questo tutorial dimostra come copiare dati da Amazon S3 ad Amazon Redshift. Creerai una nuova tabella in Amazon Redshift e la utilizzerai AWS Data Pipeline per trasferire i dati su questa tabella da un bucket Amazon S3 pubblico, che contiene dati di input di esempio in formato CSV. I log vengono salvati in un bucket Amazon S3 di tua proprietà.

Amazon S3 è un servizio Web che consente di archiviare dati nel cloud. Per ulteriori informazioni, consultare la [Guida per l'utente di Amazon Simple archiviazione Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/). Amazon Redshift è un servizio di data warehouse nel cloud. Per ulteriori informazioni, consulta la [Amazon Redshift Management](https://docs.aws.amazon.com/redshift/latest/mgmt/) Guide.

**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. Imposta il `COPY` comando in Amazon Redshift, poiché avrai bisogno che queste stesse opzioni funzionino quando esegui la copia all'interno. AWS Data Pipeline Per informazioni, consulta [Prima di iniziare: configura le opzioni COPY e di caricamento dati](dp-learn-copy-redshift.md).

1. Configura un database Amazon Redshift. Per ulteriori informazioni, consulta [Configura Pipeline, crea un gruppo di sicurezza e crea un cluster Amazon Redshift](dp-copydata-redshift-prereq.md).

**Topics**
+ [Definire una pipeline in formato JSON](dp-copydata-redshift-define-pipeline-cli.md)
+ [Caricamento e attivazione della definizione della pipeline](dp-copydata-redshift-upload-cli.md)

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

Questo scenario di esempio mostra come copiare i dati da un bucket Amazon S3 ad Amazon Redshift.

Questo è il file JSON completo di definizione della pipeline seguito da una spiegazione per ciascuna delle sue sezioni. È 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": "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"
      }
    }
  ]
}
```

Per ulteriori informazioni su questi oggetti, consulta la seguente documentazione.

**Topics**
+ [Nodi di dati](dp-copydata-redshift-node-cli.md)
+ [Risorsa](dp-copydata-redshift-resource-cli.md)
+ [Attività](dp-copydata-redshift-activity-cli.md)

# Nodi di dati
<a name="dp-copydata-redshift-node-cli"></a>

Questo esempio utilizza un nodo di dati di input, un nodo di dati di output e un database.

**Nodo di dati di input**  
Il componente della `S3DataNode` pipeline di input definisce la posizione dei dati di input in Amazon S3 e il formato dei dati di input. Per ulteriori informazioni, consulta [S3 DataNode](dp-object-s3datanode.md).

Questo componente di input è definito dai campi seguenti:

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

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

`schedule`  
Un riferimento al componente di pianificazione.

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

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

`dataFormat`  
Un riferimento al formato dei dati dell'attività da elaborare.

**Nodo dei dati di output**  
Il componente della `RedshiftDataNode` pipeline di output definisce una posizione per i dati di output; in questo caso, una tabella in un database Amazon Redshift. Per ulteriori informazioni, consulta [RedshiftDataNode](dp-object-redshiftdatanode.md). Questo componente di output è definito dai campi seguenti: 

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

`schedule`  
Un riferimento al componente di pianificazione.

`tableName`  
Nome della tabella Amazon Redshift.

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

`createTableSql`  
Un'espressione SQL per creare la tabella nel database.

`database`  
Un riferimento al database Amazon Redshift.

**Database**  
Questo componente `RedshiftDatabase` è definito dai campi seguenti. Per ulteriori informazioni, consulta [RedshiftDatabase](dp-object-redshiftdatabase.md).

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

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

`databaseName`  
Il nome del database logico.

`username`  
Il nome utente da fornire durante la connessione al database.

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

`password`  
La password per la connessione al database.

`clusterId`  
L'ID del cluster Redshift. 

# Risorsa
<a name="dp-copydata-redshift-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'istanza EC2 per eseguire l'attività di copia e terminare l'istanza al termine dell'attività. I campi definiti qui controllano la creazione e la funzione dell'istanza che esegue il lavoro. Per ulteriori informazioni, consulta [Ec2Resource](dp-object-ec2resource.md).

Questo componente `Ec2Resource` è definito dai campi seguenti:

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

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

`schedule`  
La pianificazione su cui creare questa risorsa di calcolo.

`securityGroups`  
Il gruppo di sicurezza da utilizzare per le istanze nel pool di risorse.

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

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

`logUri`  
Il percorso di destinazione di Amazon S3 per il backup dei log di Task Runner da. `Ec2Resource`

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

# Attività
<a name="dp-copydata-redshift-activity-cli"></a>

L'ultima sezione del file JSON è la definizione dell'attività che rappresenta il lavoro da eseguire. In questo caso, utilizziamo un `RedshiftCopyActivity` componente per copiare i dati da Amazon S3 ad Amazon Redshift. Per ulteriori informazioni, consulta [RedshiftCopyActivity](dp-object-redshiftcopyactivity.md).

Questo componente `RedshiftCopyActivity` è definito dai campi seguenti:

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

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

`input`  
Un riferimento al file sorgente di Amazon S3.

`schedule`  
La pianificazione su cui eseguire questa attività.

`insertMode`  
Il tipo di inserimento (`KEEP_EXISTING`, `OVERWRITE_EXISTING` o `TRUNCATE`).

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

`runsOn`  
La risorsa di calcolo che esegue il lavoro definito dall'attività.

`output`  
Un riferimento alla tabella di destinazione di Amazon Redshift.

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

Devi caricare la definizione della pipeline e attivarla. 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
```